Разбираем, как работает цепочка Frigate + Double Take + CompreFace для локального распознавания лиц — без облаков, с интеграцией в Home Assistant.
Распознавание лиц на Frigate работает в домашних условиях — и это не фантастика. Связка Frigate + Double Take позволяет идентифицировать жильцов и гостей прямо на локальном сервере, без облаков и подписок. Если вы хотите собрать домашний face ID с интеграцией в Home Assistant, дальше — пошаговая логика того, как это устроено.
Frigate — это NVR-система с открытым кодом, которая обрабатывает видеопоток с камер и детектирует объекты с помощью нейросетевой модели. Сам по себе Frigate отлично распознаёт людей, автомобили и животных, но идентифицировать конкретное лицо — то есть сказать «это Антон, а не просто человек» — он не умеет. Для этого в цепочку добавляют отдельный инструмент.
Double Take — сервис face recognition для умного дома, который подписывается на события Frigate через MQTT и анализирует кадры с обнаруженными людьми. Он отправляет вырезанные фрагменты в движок распознавания лиц — чаще всего CompreFace или DeepStack — и возвращает результат: имя человека и процент уверенности. Double Take хорошо интегрируется с Home Assistant через те же MQTT-топики, что уже использует Frigate.
CompreFace и DeepStack — это отдельные микросервисы; каждый запускается в своём Docker-контейнере. CompreFace считается более точным при правильной базе фотографий, DeepStack чуть проще в начальной настройке. Оба работают локально: никакие лица не уходят во внешние сервисы.
Железо здесь — ключевой вопрос. Frigate без ускорителя справляется с несколькими камерами на обычном мини-ПК или NAS, но добавление Double Take и движка распознавания заметно увеличивает нагрузку на CPU. Для комфортной работы рекомендуется либо Google Coral TPU (USB или PCIe), либо сервер с дискретной видеокартой. Raspberry Pi 4 теоретически справится с одной-двумя камерами низкого разрешения, но на практике задержки будут ощутимые.
Минимальный стек выглядит так: Frigate в Docker, MQTT-брокер (обычно Mosquitto), Double Take, CompreFace или DeepStack. Home Assistant здесь опционален для детектирования, но если нужны автоматизации — он становится центром логики. Всё это можно поднять на одном хосте через docker-compose.
Камеры нужны с поддержкой RTSP-потока. Большинство IP-камер среднего ценового сегмента его поддерживают. Для распознавания лиц критично, чтобы камера у входа снимала лицо под небольшим углом и при достаточном освещении: если лицо занимает меньше 100 пикселей по высоте, точность резко падает.
После запуска Double Take открывает веб-интерфейс на порту 3000. Там задают подключение к MQTT-брокеру, указывают адрес Frigate и выбирают движок распознавания. Любопытно, что Double Take умеет работать с несколькими движками одновременно и сравнивать результаты — полезно, если хочется подстраховаться.
База лиц формируется в CompreFace или DeepStack отдельно. В CompreFace есть собственный веб-интерфейс, через который загружают фотографии и создают «субъектов» — по сути, именованные профили. Чем разнообразнее фотографии одного человека (разное освещение, ракурсы, очки/без очков), тем лучше точность. На практике 10–15 фотографий на человека дают уже приемлемый результат, 30–50 — хороший.
Double Take публикует результаты в MQTT-топики вида double-take/matches/<имя>. Home Assistant подхватывает их через стандартную интеграцию MQTT и создаёт сенсоры. Дальше — дело автоматизаций: включить свет в прихожей для конкретного человека, снять сигнализацию, отправить уведомление, если в кадре незнакомец.
Самый очевидный сценарий — автоматическое снятие тревоги при возвращении домой. Когда камера у входной двери распознаёт кого-то из домашних, Home Assistant деактивирует охранный режим без ввода кода. Это удобнее, чем геолокация: работает сразу, не зависит от телефона в кармане.
Другой сценарий — персонализированное приветствие. Умная колонка произносит имя человека, включается «его» сцена освещения, термостат переключается на нужную температуру. Звучит как фантастика, но технически это три строчки автоматизации в Home Assistant после того, как сенсор от Double Take уже работает.
Уведомления о незнакомцах — пожалуй, самый практичный вариант для тех, кто не живёт постоянно дома. Если у двери появился человек, которого система не опознала, приходит push-уведомление с кадром. Порог уверенности можно настроить: при confidence ниже 70% Double Take сам помечает результат как неопределённый.
Кстати, систему используют и для отслеживания активности детей: когда ребёнок вернулся из школы, родитель получает уведомление без необходимости звонить. Это проще и надёжнее, чем геолокация на детском телефоне.
Frigate интегрируется с Home Assistant через официальное дополнение из HACS — это самый распространённый путь. Double Take публикует данные в MQTT, поэтому технически работает с любой системой, умеющей читать MQTT-топики, не только с Home Assistant.
CompreFace поддерживает REST API, что открывает интеграцию с другими системами автоматизации — Node-RED, ioBroker, собственные скрипты на Python. DeepStack также имеет API и даже официальную интеграцию с Home Assistant, хотя в связке с Double Take он обычно работает как бэкенд, а не напрямую.
Ограничения есть. Frigate не работает с камерами, которые отдают только RTMP без RTSP, и плохо справляется с проприетарными протоколами вроде некоторых облачных камер. Double Take на данный момент активно не развивается основным автором — проект живёт за счёт сообщества, поэтому при обновлениях Frigate иногда возникают проблемы совместимости, которые решаются с задержкой.
Плюсы:
Минусы:
Если у вас небольшая база лиц (до 10 человек) и хорошее железо — CompreFace предпочтительнее по точности. DeepStack проще запустить и он чуть менее требователен к ресурсам, что актуально при ограниченном железе. Оба движка позволяют уточнить базу со временем, добавляя новые фото.
Вы также можете попробовать newer-fork'и Double Take вроде NightOwl — они активнее поддерживаются сообществом и добавляют поддержку более новых версий Frigate. Прежде чем разворачивать всю систему, стоит проверить актуальность совместимых версий на форумах Home Assistant — это сэкономит несколько часов отладки.
| Сценарий | Что важно знать |
|---|---|
| Базовое распознавание лиц | Frigate детектирует людей, Double Take идентифицирует их |
| Движок распознавания | CompreFace — точнее, DeepStack — проще в запуске |
| Качество базы фото | 15–30 разных фото на человека, разное освещение |
| Интеграция с Home Assistant | Через MQTT, стандартная интеграция |
| Минимальное железо | Мини-ПК с Coral TPU или дискретной видеокартой |
| Порог уверенности | Рекомендуется 70–80% для бытового использования |
| Актуальность Double Take | Проект живёт, но обновляется медленно — следите за версиями |
Да, Frigate и Double Take работают независимо от Home Assistant. Для автоматизаций достаточно любого сервиса, умеющего читать MQTT-топики — например, Node-RED. Home Assistant упрощает создание сценариев, но не обязателен.
При хорошей базе фото и нормальном освещении точность CompreFace достигает 90–95% для знакомых лиц. В сложных условиях — плохой свет, сильный угол, маска — результаты хуже. Порог уверенности настраивается вручную, что позволяет снизить число ложных срабатываний.
Нет, Double Take — независимый проект с открытым кодом, не аффилированный с командой Home Assistant. Интеграция происходит через MQTT, который Home Assistant поддерживает нативно. Для установки Double Take обычно используют Docker или Home Assistant Addon через HACS.