← Назад к руководствам
InsightFace ServerDockerРаспознавание лицCUDAЛокальное размещение

InsightFace Server с Docker: быстрый старт

Запустите InsightFace Server на CPU или CUDA с Docker, установите лицензированную модель, выполните первый точный поиск 1:N и защитите сервис.

8 мин чтения
Панель InsightFace Server со статусом сервиса, модели, базы и runtime
До регистрации убедитесь в Dashboard и System, что все компоненты готовы.

Что вы настроите

Используйте файлы Compose из репозитория для CPU или CUDA 12: загрузите образ, установите модель и запустите сервис. Проверка живого лица необязательна и по умолчанию выключена.

Перед началом

  • Linux x86_64 с Docker Engine, Docker Compose и Git. Сохраните входящий в репозиторий server/config/server.toml.
  • Для CUDA 12: поддерживаемая NVIDIA GPU, NVIDIA Driver и NVIDIA Container Toolkit. CUDA Toolkit, cuDNN, ONNX Runtime, Python и OpenCV на хосте не нужны.
  • Сеть для загрузки контейнера и установки модели. После этого обычный запуск Server может быть автономным.

Запуск на CPU или CUDA 12

Выполните один блок в корне репозитория. Команды напрямую используют поставляемый файл Compose, который определяет загружаемый образ. Если актуальный репозиторий уже есть, пропустите git clone.

После запуска откройте http://SERVER:18097/ для CPU или http://SERVER:18098/ для CUDA 12. --accept-license означает согласие с условиями модели; прочитайте их до выполнения команды.

CPU
git clone https://github.com/deepinsight/insightface.git
cd insightface
docker compose -f server/deploy/compose.cpu.yml pull server models
docker compose -f server/deploy/compose.cpu.yml run --rm models install buffalo_l --accept-license
docker compose -f server/deploy/compose.cpu.yml up -d --wait --wait-timeout 180
CUDA 12
git clone https://github.com/deepinsight/insightface.git
cd insightface
docker compose -f server/deploy/compose.cuda12.yml pull server models
docker compose -f server/deploy/compose.cuda12.yml run --rm models install buffalo_l --accept-license
docker compose -f server/deploy/compose.cuda12.yml up -d --wait --wait-timeout 180

Выполнить первый сценарий Collection → Person → Search

Экран Collections InsightFace Server для управления доступными для поиска коллекциями лиц
До регистрации Person и FaceSamples создайте Collection, привязанную к модели.

В Collections создайте стабильный ID, например employees. Выберите профиль из System, задайте capacity по памяти и начните с стандартного raw cosine threshold 0,4. Collection привязана к идентичности и digest модели, размерности, предобработке и профилю детекции.

В People выберите Collection и зарегистрируйте Person по одному или нескольким четким JPEG, PNG, WebP или BMP. standard review — разумный старт: требуется ровно одно пригодное лицо и проверяются размер, confidence, резкость, яркость и поза. Пакет допускает частичный успех, поэтому изучайте каждую причину отклонения.

В Search выберите ту же Collection и загрузите другое фото Person. Результаты сортируются по raw cosine similarity, а оценка Person — максимум среди FaceSamples. Similarity не является вероятностью. Отсутствие совпадений корректно возвращает пустой список.

  • Исходные загрузки по умолчанию не хранятся. Опционально сохраняется JPEG crop рамки 112×112, а не оригинал или выровненный вход распознавания.
  • Принятые samples фиксируются в SQLite и до успешного ответа добавляются в точный индекс памяти. После перезапуска он строится из SQLite.
  • Отсутствие лица для Detect — допустимый пустой результат; Compare возвращает 422 face_not_found, если с одной стороны нет пригодного лица.

Необязательно: включить RGB-проверку живого лица

Для новой установки добавьте --enable-liveness к команде установки модели. Установщик проверит необходимые модели и сохранит включение до первого запуска.

Для работающего сервиса выполните подходящую команду ниже, затем перезапустите его. Обычная установка и models addons install liveness не включают проверку.

После успешной установки перезапустите работающий сервис. up -d сам по себе не перечитывает настройки существующего контейнера. Проверка по умолчанию выключена; для регистрации есть отдельный параметр liveness_on_registration.

CPU
docker compose -f server/deploy/compose.cpu.yml run --rm models install buffalo_l --accept-license --enable-liveness &&
docker compose -f server/deploy/compose.cpu.yml restart server
CUDA 12
docker compose -f server/deploy/compose.cuda12.yml run --rm models install buffalo_l --accept-license --enable-liveness &&
docker compose -f server/deploy/compose.cuda12.yml restart server

Понять границы лицензии модели

Исходный код Server и Python SDK распространяются по лицензии MIT, но файлы и веса моделей ею не охватываются. Публичные пакеты InsightFace, включая buffalo_l, обычно разрешены только для некоммерческих академических исследований без отдельного коммерческого разрешения InsightFace; самостоятельное размещение не дает коммерческих прав на модель.

Установка записывает manifest.json и подписанный MODEL.LICENSE в server/.models. verify проверяет идентичность, подпись, срок и текущую авторизацию. Лицензия указывает модель и разрешенное использование; это документ соответствия, а не DRM и не контрольная сумма файлов.

Поддерживаются buffalo_l, buffalo_m, buffalo_s, buffalo_sc, antelopev2, raccoon_s и raccoon_l. Server использует детектор и распознаватель Raccoon, без verifier из PrivateFrame. Смена модели требует совместимой Collection и повторной регистрации либо миграции данных.

  • Без --accept-license утилита показывает условия и завершает работу без загрузки.
  • Храните модели, манифест и подписанную лицензию вместе в постоянном каталоге моделей.
  • До коммерческого применения или при неясном охвате публичных условий обратитесь в InsightFace.

Защитить сервис до публикации в сети

Compose по умолчанию отключает аутентификацию для изолированной оценки. До доступа других пользователей или сетей включите ее, задайте длинный случайный API-ключ в секретном окружении и перезапустите выбранный стек. Web UI может хранить ключ только в памяти текущей вкладки.

Завершайте HTTPS на доверенном reverse proxy, разрешайте только нужные origins вместо широкого CORS, задайте ограничения частоты, размера и времени, защитите Docker, /data, /models и резервные копии. Не журналируйте изображения, эмбеддинги, RTSP-данные или ключи.

  • В первой фазе один ключ без ролей; это не multi-tenant авторизация, учетных записей и RBAC нет.
  • Запуск того же тома с другим INSIGHTFACE_API_KEY намеренно заменяет активный ключ.
  • Встроенных TLS и юридического compliance-слоя нет; законность обработки и контроль отвечают операторы.
CPU: включить аутентификацию до запуска
export INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cpu.yml up -d --wait --wait-timeout 180
CUDA 12: включить аутентификацию до запуска
export INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cuda12.yml up -d --wait --wait-timeout 180

Сохранить данные, создать копию и безопасно остановить

Постоянно храните /data, модели и server/config. Копируйте SQLite и кадрированные лица вместе при остановленной записи либо используйте безопасный снимок SQLite. Защищайте их как биометрические данные; перед сетевым доступом включите API-ключ и HTTPS.

Используйте полную команду down запущенного стека. Обычный down удаляет контейнеры и сеть, но сохраняет том. Никогда не добавляйте -v: docker compose down -v безвозвратно удаляет именованный том данных.

Оба контейнера работают как root (0:0), с одним доступным для записи /models и каталогом конфигурации. Каталоги моделей и addons/ создаются по необходимости. UID/GID хоста и ручная настройка прав не нужны. Корневая файловая система контейнера остаётся доступной только для чтения.

  • Перед обновлением сделайте безопасный snapshot, сохраните /models и лицензии, проверьте новый образ на копии данных.
  • После этого проверьте migrations, /v1/health, контракт модели и известный поиск.
  • Удаление FaceSample удаляет embedding и crop; непустая Collection требует явного force-подтверждения.
Остановить CPU без удаления тома
docker compose -f server/deploy/compose.cpu.yml down
Остановить CUDA без удаления тома
docker compose -f server/deploy/compose.cuda12.yml down

Обновление развёртывания

Остановите запись и сохраните базу и кадрированные лица. Обновите файлы развёртывания и объедините свои настройки, сохранив server/config/server.toml, модели, исходные имена проекта и тома, порты и API-ключ. Используйте подходящий файл Compose, добавив прежние файлы переопределений и имя проекта при необходимости.

Загрузите оба образа и пересоздайте Server. restart не применяет новые образы или монтирования. Проверьте готовность, провайдер, имеющиеся данные и известный поисковый запрос. При неизменном распознавателе и контракте эмбеддингов образцы сохраняются; смена модели требует отдельной миграции. Обновите SDK из того же актуального репозитория.

CPU
docker compose -f server/deploy/compose.cpu.yml pull server models
docker compose -f server/deploy/compose.cpu.yml up -d --no-build --force-recreate --wait --wait-timeout 180 server
curl -fsS http://127.0.0.1:18097/v1/health
CUDA 12
docker compose -f server/deploy/compose.cuda12.yml pull server models
docker compose -f server/deploy/compose.cuda12.yml up -d --no-build --force-recreate --wait --wait-timeout 180 server
curl -fsS http://127.0.0.1:18098/v1/health

Диагностировать ошибки запуска и запросов

Начните с health, затем смотрите System, состояние контейнера и логи выбранного стека. В CUDA остановка старта намеренна при ошибке Driver, GPU, сессий, CUDAExecutionProvider, provider audit или прогрева; скрытого перехода на CPU нет.

Каждый ответ несет x-request-id, ошибки также содержат request_id. Сохраняйте ID с соответствующими логами. 401 unauthorized обычно означает отсутствующий или замененный ключ; 409 collection_model_mismatch — другой контракт; 422 face_not_found — не выбрано пригодное лицо.

CUDA должна показывать CUDAExecutionProvider. При старте проверяются GPU, Driver, CUDA/cuDNN/ONNX Runtime, реальные сессии детектора и распознавания, размещение provider и прогрев. При ошибке процесс завершается, а не незаметно переходит на CPU.

  • Проверьте в System соответствие CPUExecutionProvider или CUDAExecutionProvider выбранному Compose.
  • Проверьте пакет и лицензию в server/.models и наличие server/config/server.toml. Для загрузки и сохранения настроек нужны доступные для записи каталоги.
  • Для CUDA исправляйте Driver, видимость GPU или NVIDIA Container Toolkit, не ожидая fallback на CPU.
Health, статус и свежие логи CPU
curl -fsS http://127.0.0.1:18097/v1/health
docker compose -f server/deploy/compose.cpu.yml ps
docker compose -f server/deploy/compose.cpu.yml logs --tail=200 server
Health, статус и свежие логи CUDA 12
curl -fsS http://127.0.0.1:18098/v1/health
docker compose -f server/deploy/compose.cuda12.yml ps
docker compose -f server/deploy/compose.cuda12.yml logs --tail=200 server

Нужна помощь с production-развертыванием?

Свяжитесь с InsightFace по вопросам лицензирования моделей, оптимизации runtime и поддержки целевого hardware.

Отправить корпоративный запрос