mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-05-02 17:18:58 +00:00

* Use the correct bear. An incredibly picky edit. I'm sorry. * Move scan_interval documentation from the facebox bage up to the main image_processing page, as it it useful to all image processing entities * Add explicit example for setting scan_interval * Be explicit about which components are being referred to * Add notes on microsoft face detect and microsoft face identify pages that scan_interval should be applied
169 lines
5.1 KiB
Markdown
169 lines
5.1 KiB
Markdown
---
|
|
layout: page
|
|
title: "Facebox"
|
|
description: "Detect and recognize faces with Facebox."
|
|
date: 2018-05-03 00:00
|
|
sidebar: true
|
|
comments: false
|
|
sharing: true
|
|
footer: true
|
|
logo: machine-box.png
|
|
ha_category: Image Processing
|
|
featured: false
|
|
ha_release: 0.70
|
|
---
|
|
|
|
The `facebox` image processing platform allows you to detect and recognize faces in a camera image using [Facebox](https://machinebox.io/docs/facebox). The state of the entity is the number of faces detected, and recognized faces are listed in the `matched_faces` attribute. An `image_processing.detect_face` event is fired for each recognized face, and the event `data` provides the `confidence` of recognition, the `name` of the person, the `image_id` of the image associated with the match, the `bounding_box` that contains the face in the image, and the `entity_id` that processing was performed on.
|
|
|
|
## {% linkable_title Setup %}
|
|
|
|
Facebox runs in a Docker container and it is recommended that you run this container on a machine with a minimum of 2 GB RAM. On your machine with Docker, run the Facebox container with:
|
|
|
|
```bash
|
|
MB_KEY="INSERT-YOUR-KEY-HERE"
|
|
|
|
sudo docker run --name=facebox --restart=always -p 8080:8080 -e "MB_KEY=$MB_KEY" machinebox/facebox
|
|
```
|
|
You can run Facebox with a username and password by adding `-e "MB_BASICAUTH_USER=my_username" -e "MB_BASICAUTH_PASS=my_password"` but bear in mind that the component does not encrypt these credentials and this approach does not guarantee security on an unsecured network.
|
|
|
|
If you only require face detection (number of faces) you can disable face recognition by adding `-e "MB_FACEBOX_DISABLE_RECOGNITION=true"` to the `docker run` command.
|
|
|
|
## {% linkable_title Configuration %}
|
|
|
|
To enable this platform in your installation, add the following to your `configuration.yaml` file:
|
|
|
|
```yaml
|
|
# Example configuration.yaml entry
|
|
image_processing:
|
|
- platform: facebox
|
|
ip_address: 192.168.0.1
|
|
port: 8080
|
|
source:
|
|
- entity_id: camera.local_file
|
|
name: my_custom_name
|
|
```
|
|
|
|
{% configuration %}
|
|
ip_address:
|
|
description: The IP address of your machine hosting Facebox.
|
|
required: true
|
|
type: string
|
|
port:
|
|
description: The port which Facebox is exposed on.
|
|
required: true
|
|
type: string
|
|
username:
|
|
description: The Facebox username if you have set one.
|
|
required: false
|
|
type: string
|
|
password:
|
|
description: The Facebox password if you have set one.
|
|
required: false
|
|
type: string
|
|
source:
|
|
description: The list of image sources.
|
|
required: true
|
|
type: map
|
|
keys:
|
|
entity_id:
|
|
description: A camera entity id to get picture from.
|
|
required: true
|
|
type: string
|
|
name:
|
|
description: This parameter allows you to override the name of your `image_processing` entity.
|
|
required: false
|
|
type: string
|
|
{% endconfiguration %}
|
|
|
|
## {% linkable_title Automations %}
|
|
|
|
Use the `image_processing.detect_face` events to trigger automations, and breakout the `trigger.event.data` using a [data_template](https://www.home-assistant.io/docs/automation/templating/). The following example automation sends a notification when Ringo Star is recognized:
|
|
|
|
{% raw %}
|
|
```yaml
|
|
- id: '12345'
|
|
alias: Ringo Starr recognised
|
|
trigger:
|
|
platform: event
|
|
event_type: image_processing.detect_face
|
|
event_data:
|
|
name: 'Ringo_Starr'
|
|
action:
|
|
service: notify.platform
|
|
data_template:
|
|
message: Ringo_Starr recognised with probability {{ trigger.event.data.confidence }}
|
|
title: Door-cam notification
|
|
```
|
|
{% endraw %}
|
|
|
|
## {% linkable_title Service `facebox_teach_face` %}
|
|
|
|
The service `facebox_teach_face` can be used to teach Facebox faces.
|
|
|
|
| Service data attribute | Optional | Description |
|
|
| ---------------------- | -------- | ----------- |
|
|
| `entity_id` | no | Entity ID of Facebox entity.
|
|
| `name` | no | The name to associate with a face.
|
|
| `file_path` | no | The path to the image file.
|
|
|
|
A valid service data example:
|
|
|
|
{% raw %}
|
|
```yaml
|
|
{
|
|
"entity_id": "image_processing.facebox_local_file",
|
|
"name": "superman",
|
|
"file_path": "/images/superman_1.jpeg"
|
|
}
|
|
```
|
|
{% endraw %}
|
|
|
|
You can use an automation to receive a notification when you train a face:
|
|
|
|
{% raw %}
|
|
```yaml
|
|
- id: '1533703568569'
|
|
alias: Face taught
|
|
trigger:
|
|
- event_data:
|
|
service: facebox_teach_face
|
|
event_type: call_service
|
|
platform: event
|
|
condition: []
|
|
action:
|
|
- service: notify.pushbullet
|
|
data_template:
|
|
message: '{{ trigger.event.data.service_data.name }} taught
|
|
with file {{ trigger.event.data.service_data.file_path }}'
|
|
title: Face taught notification
|
|
```
|
|
{% endraw %}
|
|
|
|
Any errors on teaching will be reported in the logs. If you enable [system_log](https://www.home-assistant.io/components/system_log/) events:
|
|
|
|
```yaml
|
|
system_log:
|
|
fire_event: true
|
|
```
|
|
|
|
you can create an automation to receive notifications on Facebox errors:
|
|
|
|
{% raw %}
|
|
```yaml
|
|
- id: '1533703568577'
|
|
alias: Facebox error
|
|
trigger:
|
|
platform: event
|
|
event_type: system_log_event
|
|
condition:
|
|
condition: template
|
|
value_template: '{{ "facebox" in trigger.event.data.message }}'
|
|
action:
|
|
- service: notify.pushbullet
|
|
data_template:
|
|
message: '{{ trigger.event.data.message }}'
|
|
title: Facebox error
|
|
```
|
|
{% endraw %}
|
|
|