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

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

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

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

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

Анализ лиц в Python с необязательной проверкой живого присутствия по RGB перед распознаванием и результатами для каждого лица.

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

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

  • Обновлённые исходники InsightFace 2 с файлом python-package/docs/liveness.md, Python 3.10+ и установленными зависимостями пакета. Руководство относится к этой версии исходников; старый установленный пакет может не поддерживать API дополнения.
  • Локальный файл input.jpg с лицом и достаточной областью изображения вокруг него, а также доступ для установки базовой модели и дополнения liveness. Соблюдайте условия каждой модели.
  • Для Server: обновлённое работающее развёртывание Linux с установленной базовой моделью. Для установки через веб-интерфейс пользователю Server (UID/GID 10001 в Compose) нужна запись в подключённый каталог дополнений и весь каталог конфигурации.

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 — английское пояснение, а не стабильный код состояния.

3. Установите, перезапустите и проверьте Server

Да. Установите и включите необязательное дополнение для проверки живого присутствия по RGB через веб-интерфейс сервера. Обычный режим разрешает распознавание в зависимости от результата проверки; режим наблюдения сообщает результаты, продолжая распознавание. По умолчанию проверка выключена, а для регистрации предусмотрен отдельный переключатель. Настройка и интерпретация результатов описаны в руководстве.

Откройте System → Liveness и выберите Download and enable after restart. Действие скачивает опубликованное дополнение или использует проверенный кеш, сверяет SHA-256 и сохраняет ['liveness'] в inference.addons и addons.auto_download. Дождитесь успешной установки и сохранения настроек перед перезапуском.

Выполните команду перезапуска из корня репозитория; для CUDA используйте compose.cuda12.yml. В System проверьте 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 restart server

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

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

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