HASS-Deepstack nos permite el reconocimiento de objetos en la cámara en local y sin coste en Home Assistant

HASS-Deepstack nos permite el reconocimiento de objetos en la cámara en local y sin coste en Home Assistant

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

La entrada HASS-Deepstack nos permite el reconocimiento de objetos en la cámara en local y sin coste en Home Assistant se publicó primero en Domótica en Casa.

Eduardo Ruiz

Informático de vocación, apasionado de la tecnología y blogger desde hace mucho tiempo, escribo de lo que me entretiene y disfruto con ello. Si deseas seguirme, usa el rss del blog o en mi perfil de .