Deepstack es un servicio de reconocimiento de objetos que nos permite pasar la imagen de una cámara para que nos informe de lo que aparece en ella para poder reducir, por ejemplo, falsos positivos.
Por poner un ejemplo, imaginemos que queremos controlar una cámara que está en el exterior, donde tenemos o pasan animales con frecuencia, algo que haría que si detectáramos movimiento en la misma, saltara la alarma con frecuencia.
Deepstack es un software de reconocimiento de imágenes con inteligencia artificial que corre en nuestro equipo y que es gratuito para una sola instalación y ejecución además de algunos límites como detectar hasta 5 caras, algo que para el propósito que queremos, nos serviría.
La instalación del servicio es por medio de docker (tenéis que tenerlo instalado):
sudo docker pull deepquestai/deepstack
Una vez instalado podéis lanzarlo, aunque, necesitaréis una clave API para que os permita poder usarlo que la podéis obtener de aquí, una vez que la tengáis, arrancamos el sistema:
sudo docker run -v localstorage:/datastore -p 5000:5000 deepquestai/deepstack
Y nos vamos a nuestro navegador y ponemos (sabiendo la IP de donde está instalado el servicio):
http://IPDENUESTROSERVIDOR:5000/
Y podemos darle a “Enter New Activation Key” para meter la Key que hemos obtenido.
Integración de Deepstack en Home Assistant
Lo primero que tenemos que hacer es clonar el repositorio:
git clone https://github.com/robmarkcole/HASS-Deepstack.git
Una vez hecho eso tendremos que copiar las 2 carpetas que hay dentro de custom_components (deepstack_face y deepstack_object) a la carpeta custom_components que tenemos en nuestra carpeta de configuración de Home Assistant.
Ahora, podemos lanzar deepstack pero con el reconocimiento facial activado:
sudo docker run -e VISION-FACE=True -v localstorage:/datastore -p 5000:5000 deepquestai/deepstack
Y en nuestra configuración (configuration.yaml) podemos poner lo siguiente:
image_processing:
- platform: deepstack_face
ip_address: localhost
port: 5000
scan_interval: 20000
source:
- entity_id: camera.local_file
name: face_counter
Donde camera.local_file es la fuente de la imagen que queramos, pudiendo ser una imagen como en el ejemplo o una cámara. Podemos usar el servicio deepstack_teach_face para que reconozca caras, por lo que podríamos enseñarle si es o no una persona conocida para que nos muestre el nombre y no solo la detección de una cara.
Si lo que queremos es detección de objetos, tenemos que lanzar deepstack de esta forma:
sudo docker run -e VISION-DETECTION=True -v localstorage:/datastore -p 5000:5000 deepquestai/deepstack
Y configuraríamos en nuestro Home Assistant en su configuration.yaml lo siguiente:
image_processing: - platform: deepstack_object ip_address: localhost port: 5000 scan_interval: 20000 save_file_folder: /config/www/deepstack_person_images target: person source: - entity_id: camera.local_file name: person_detector
Al igual que antes, camera.local_file es la entrada de imagen. Posee un evento que es lanzado con cada objeto detectado “image_processing_object_detected” en el que nos da información sobre lo detectado.
Podéis echarle un ojo al github del proyecto para poder ver más información porque podréis salvar las fotos así como clasificarlas por tipo de objeto detectado, algo que podría ser muy útil en caso de querer tener toda la información almacenada e ir directos.
Ejemplo de una automatización que nos mandaría la foto a Telegram (teniéndolo previamente configurado como explicamos aquí):
- action: - data_template: caption: "Captured {{ trigger.event.data.file }}" file: "{{ trigger.event.data.file }}" service: telegram_bot.send_photo alias: New person alert condition: [] id: '1120092824611' trigger: - platform: event event_type: image_processing.file_saved
Se podría arrancar deepstack para que detecte ambas cosas, tanto caras como objetos, para ello necesitaríamos lanzar esta linea de comandos:
sudo docker run -e VISION-DETECTION=True -e VISION-FACE=True -v localstorage:/datastore -p 5000:5000 deepquestai/deepstack
El proyecto es una pasada y parece ser muy preciso, pero, no oro todo lo que reluce ya que nos informa el autor del componente que para poder hacer funcionar bien el motor de reconocimiento necesitaremos un equipo con 8GB de RAM y si tenemos una gráfica buena, mejoraremos el tiempo de respuesta mucho, por lo que los que estéis buscando algo ligero, quizá no sea la mejor opción.
Más info: Github