← Назад к руководствам
InsightFacePythonInsightFace ServerНеобязательная проверка живого присутствия по RGB

Включение RGB-проверки живого лица в Python и InsightFace Server

Добавьте проверки перед распознаванием и получайте статус и оценки для каждого лица. Настройте допуск к распознаванию по результату проверки или режим наблюдения для обнаружения, сравнения, поиска и процессов RTSP.

•5 минут чтения

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

FaceAnalysis для работы с лицами или PersonAnalysis для обнаружения людей, сопоставления лиц и ReID по телу.

По умолчанию выключена. Проверки при регистрации настраиваются отдельно.

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

  • Обновлённые исходники InsightFace 2 с файлом python-package/docs/liveness.md, Python 3.10+ и установленными зависимостями пакета. Руководство относится к этой версии исходников; старый установленный пакет может не поддерживать API дополнения.
  • Локальный файл input.jpg с лицом и достаточной областью изображения вокруг него, а также доступ для установки базовой модели и дополнения liveness. Соблюдайте условия каждой модели.
  • Используйте развёртывание из инструкции Docker с существующей конфигурацией. Контейнеры уже работают как root с доступными для записи моделями и настройками. CLI может включить проверку до первого запуска Server.

1. Явно включите проверку в Python

Из корня обновлённого репозитория установите пакет Python в активное виртуальное окружение. Перед запуском поместите input.jpg в рабочий каталог. Пример для CPU выбирает детекцию и распознавание; addons=['liveness'] включает отдельную модель проверки живого лица.

При первом запуске могут скачиваться недостающие модели. Дополнение хранится в ~/.insightface/addons/liveness.onnx; перед загрузкой проверяется SHA-256. Само наличие файла не включает проверку: укажите addons=['liveness'] явно. Без addons она остаётся выключенной.

Установка из обновлённых исходников
cd python-package
python -m pip install .
Пример для CPU с результатами по каждому лицу
import cv2
from insightface.app import FaceAnalysis

image_bgr = cv2.imread("input.jpg")
if image_bgr is None:
    raise FileNotFoundError("input.jpg")

app = FaceAnalysis(
    name="buffalo_l",
    allowed_modules=["detection", "recognition"],
    addons=["liveness"],
    liveness_mode="normal",
    liveness_threshold=0.8,
    providers=["CPUExecutionProvider"],
)
app.prepare(ctx_id=-1, det_size=(640, 640))

for face in app.get(image_bgr):
    print(face.liveness)
    if face.liveness is not None:
        print(
            face.liveness.status,
            face.liveness.is_live,
            face.liveness.live_score,
        )

2. Прочитайте результаты и выберите режим распознавания

В режиме normal распознавание выполняется только при is_live=True. Другие лица остаются в списке с результатами детекции, но без embedding. В режиме observe распознавание продолжается при отрицательной оценке или отклонённом входе, а результат проверки сохраняется. Ошибки модели, выравнивания и инференса вызывают исключения в обоих режимах.

  • status='ok': is_live равно True или False, live_score — число в [0, 1]. Порог по умолчанию — 0.8; равенство порогу считается прохождением. Проверьте порог на характерных данных с тем провайдером выполнения, который используется в развёртывании.
  • status='input_rejected': is_live и live_score равны None. Это означает недостаточную область исходного изображения вокруг выровненного лица, а не классификацию подделки. Переместите лицо к центру, отойдите от камеры или используйте менее тесно обрезанное изображение. reason содержит пояснение.
  • Без выбранного дополнения face.liveness равно None; если лиц нет, возвращается []. В логике используйте status и is_live. Текст reason в Python/API — английское пояснение, а не стабильный код состояния.

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

Да. Добавьте --enable-liveness при установке модели либо включите проверку в разделе Система Web UI, затем запустите или перезапустите Server. normal управляет допуском к распознаванию; observe сохраняет результаты и продолжает его. По умолчанию выключено; у регистрации отдельный переключатель.

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

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

Также можно выбрать загрузку с включением после перезапуска в разделе Система → Проверка живого лица. Web и CLI проверяют модель и добавляют liveness в оба списка, сохраняя прочие настройки. Ошибка загрузки ничего не включает; дождитесь успешного сохранения.

Новую установку запустите после подготовки, а работающий сервис перезапустите подходящей командой CPU/CUDA ниже. Проверьте enabled=true и restart_required=false. installed описывает проверенный файл, configured_enabled — сохранённую настройку. Изменение монтирований требует пересоздания контейнера.

По умолчанию проверка выключена. Действие в веб-интерфейсе не меняет регистрацию: liveness_on_registration=false сохраняется. Отдельно задайте true, чтобы применять normal/observe при регистрации. Для отключения сохраните пустые списки в inference.addons и addons.auto_download, затем перезапустите Server.

CPU
docker compose -f server/deploy/compose.cpu.yml run --rm models install buffalo_l --accept-license --enable-liveness
CUDA 12
docker compose -f server/deploy/compose.cuda12.yml run --rm models install buffalo_l --accept-license --enable-liveness
Применение сохранённых настроек к работающему CPU-развёртыванию
docker compose -f server/deploy/compose.cpu.yml restart server
Применение сохранённых настроек к работающему CUDA 12-развёртыванию
docker compose -f server/deploy/compose.cuda12.yml restart server

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

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

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