DeepFace – распознавание лиц

онлайн тренер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Введение

Компьютерное зрение активно применяется в биометрии, безопасности, маркетинге и даже в повседневных мобильных приложениях. Распознавание лиц — одна из самых популярных задач в этой области. Библиотека DeepFace для Python — мощный и удобный инструмент, позволяющий производить сравнение, верификацию и анализ лиц всего в несколько строк кода.

DeepFace объединяет популярные нейросетевые модели, такие как VGG-Face, Facenet, OpenFace, DeepID, ArcFace и Dlib, обеспечивая удобный интерфейс для их использования.


Основная часть

Установка библиотеки

pip install deepface

Дополнительные зависимости:

pip install tensorflow keras opencv-python

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


Основные возможности DeepFace

  • Верификация лиц (сравнение двух изображений)

  • Идентификация (поиск по базе)

  • Анализ эмоций, возраста, пола, этнической принадлежности

  • Использование разных моделей: VGG-Face, Facenet, Dlib, ArcFace и других


Сравнение лиц (Verification)

from deepface import DeepFace

result = DeepFace.verify("img1.jpg", "img2.jpg")
print(result)

Результат:

{
  "verified": true,
  "distance": 0.32,
  "threshold": 0.4,
  "model": "VGG-Face"
}

Идентификация (Find)

result = DeepFace.find(img_path="input.jpg", db_path="faces_db/")

В faces_db/ должны лежать изображения для сравнения. Возвращается DataFrame с результатами.


Анализ лица (анализ эмоций, пола, возраста, расы)

analysis = DeepFace.analyze(img_path = "face.jpg")
print(analysis)

Результат:

{
  "age": 28,
  "gender": "Man",
  "race": {"white": 55.5, "asian": 20.1, ...},
  "emotion": {"happy": 72.4, "sad": 5.1, ...}
}

Выбор модели и детектора

DeepFace.verify("img1.jpg", "img2.jpg", model_name="Facenet", detector_backend="mtcnn")
Параметр Значение по умолчанию Возможные варианты
model_name VGG-Face VGG-Face, Facenet, OpenFace, DeepID
detector_backend opencv opencv, mtcnn, dlib, retinaface

Поддержка GPU

DeepFace использует TensorFlow или PyTorch и может автоматически использовать GPU, если установлен CUDA и соответствующие драйверы.

Проверьте:

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

Применение в проектах

  • Авторизация по лицу в приложениях

  • Анализ настроения клиентов в маркетинге

  • Учет рабочего времени сотрудников

  • Биометрический контроль доступа


Частые ошибки и рекомендации

  • Ошибка загрузки модели: проверьте интернет-соединение

  • Файл не найден: убедитесь в правильности пути к изображению

  • Низкая точность: попробуйте другую модель (ArcFace точнее всего)

Описание всех ключевых функций и методов библиотеки DeepFace для Python

Основные функции

Функция Описание
DeepFace.analyze(img_path, actions=['emotion', 'age', 'gender', 'race']) Анализирует изображение. Определяет эмоцию, возраст, пол и расу. Возвращает словарь с результатами.
DeepFace.verify(img1_path, img2_path, model_name='VGG-Face') Проверяет, одно и то же ли лицо на двух изображениях. Возвращает результат и дистанцию между эмбеддингами.
DeepFace.find(img_path, db_path, model_name='VGG-Face') Ищет лицо на изображении в базе изображений (db_path). Возвращает совпадения с расстоянием.
DeepFace.represent(img_path, model_name='VGG-Face') Возвращает эмбеддинг (вектор признаков лица) для изображения. Используется для кастомных задач (например, сравнения вручную).

Распознавание лиц

Параметр / Метод Описание
model_name Название модели: 'VGG-Face', 'Facenet', 'Facenet512', 'OpenFace', 'DeepFace', 'Dlib', 'ArcFace'.
distance_metric Метрика расстояния: 'cosine', 'euclidean', 'euclidean_l2'.
enforce_detection По умолчанию True. Если False, можно передавать изображения без лиц (например, для отладки).
detector_backend Детектор лиц: 'opencv', 'ssd', 'dlib', 'mtcnn', 'retinaface', 'mediapipe', 'yolov8'.

Установка

bash
pip install deepface

Также потребуется установить opencv-python, tensorflow, keras, mtcnn, и др. Библиотека сама подтянет всё нужное при первом запуске.


Пример: анализ лица

python
from deepface import DeepFace result = DeepFace.analyze(img_path="img.jpg", actions=["age", "gender", "emotion", "race"]) print(result)

Пример: сравнение лиц

python
from deepface import DeepFace result = DeepFace.verify(img1_path="person1.jpg", img2_path="person2.jpg") print("Совпадение:", result["verified"])

Пример: поиск лица в базе

python
from deepface import DeepFace df = DeepFace.find(img_path="query.jpg", db_path="faces/") print(df.head())

Поддерживаемые модели

Модель Описание
VGG-Face Классическая модель с хорошей точностью, но большая.
Facenet / Facenet512 Более лёгкая и точная модель, популярна в реальных проектах.
DeepFace Модель Facebook.
OpenFace Очень лёгкая, быстрая, но менее точная.
Dlib Поддерживает локальное использование, работает быстро.
ArcFace Современная, точная и быстрая. Рекомендуется.

Поддерживаемые детекторы лиц

Детектор Описание
opencv По умолчанию. Быстрый, но не всегда точный.
mtcnn Точный, особенно на сложных ракурсах.
ssd Сбалансирован по скорости и точности.
dlib Устойчивый и локальный.
retinaface Очень точный, но медленный.
mediapipe Подходит для реального времени.
yolov8 Современный детектор на базе YOLOv8 (требует установки отдельно).

Заключение

DeepFace — это мощная, но простая в использовании библиотека для распознавания лиц и анализа эмоций. Она идеально подходит для быстрых прототипов и небольших production-проектов. Благодаря поддержке множества моделей и детекторов, а также возможности анализа на GPU, DeepFace остаётся одним из лучших инструментов для компьютерного зрения в Python.