Эволюция детекции лиц: от Handcrafted Features к Deep Learning Frameworks
Введение
Детекция лиц — это базовая задача компьютерного зрения по поиску и локализации лиц на цифровых изображениях. Она служит отправной точкой почти для всех последующих face analysis-задач: распознавания, верификации, оценки атрибутов и face swapping. Главный вопрос прост: где в изображении находятся лица?
Эпоха Viola-Jones (2001–2012)
Важнейший прорыв
Детектор Viola-Jones, опубликованный в 2001 году, более десяти лет доминировал в области face detection. Его ключевые инновации:
- Haar-like Features: эффективные прямоугольные признаки для описания базовых структур лица
- Integral Images: предварительное вычисление для быстрого расчёта признаков на разных масштабах
- AdaBoost: метод обучения, объединяющий множество слабых классификаторов в сильный
- Cascade Architecture: многоступенчатая схема, быстро отбрасывающая области без лиц и обеспечивающая работу в реальном времени
Ограничения
Несмотря на успех, Viola-Jones плохо справлялся с непрофильными лицами, экстремальным освещением и частичными перекрытиями. Метод в основном был рассчитан на frontal face detection и хуже переносился на реальные неконтролируемые условия.
Переходный период: DPM и гибридные подходы (2010–2015)
Deformable Part Models
С усложнением требований исследователи начали использовать Deformable Part Models, представляющие лицо как набор частей — глаза, нос, рот — и пространственных связей между ними. Эти модели лучше работали с позой, но требовали больше вычислений.
Революция Deep Learning (2014–настоящее время)
CNN меняют отрасль
Convolutional Neural Networks радикально изменили детекцию лиц. Глубокие модели начали учить иерархические представления напрямую из данных, без ручного проектирования признаков. Этому способствовали:
- крупные обучающие датасеты, такие как WIDER FACE
- мощные GPU
- развитие архитектур нейронных сетей
Ключевые framework
MTCNN (2016)
Multi-task Cascaded Convolutional Networks предложил трёхэтапный подход с Proposal Network (P-Net), Refine Network (R-Net) и Output Network (O-Net), объединив детекцию лица и alignment.
RetinaFace (CVPR 2020)
RetinaFace от InsightFace реализовал плотную локализацию лиц в реальных условиях. Основные особенности:
- single-stage, anchor-based detection
- совместное обучение детекции лица и 5-point landmarks
- multi-task learning с self-supervised mesh decoder
- state-of-the-art результаты на WIDER FACE
SCRFD (ICLR 2022)
Sample and Computation Redistribution for Efficient Face Detection вывел эффективность на новый уровень:
- NAS-based architecture search для оптимального распределения вычислений
- sample redistribution для более эффективного обучения
- лучшее соотношение accuracy-speed по сравнению с предыдущими подходами
- модели от 500M FLOPs до 34G FLOPs
Сравнение производительности
Современные Deep Learning detector значительно превосходят классические методы.
| Method | WIDER FACE Easy | WIDER FACE Medium | WIDER FACE Hard |
|---|---|---|---|
| Viola-Jones | ~50% | ~40% | ~20% |
| MTCNN | 85.1% | 82.0% | 60.7% |
| RetinaFace | 96.9% | 96.1% | 91.4% |
| SCRFD-34GF | 97.2% | 96.5% | 93.7% |
Практическая интеграция
С InsightFace внедрить state-of-the-art детекцию лиц значительно проще.
from insightface.app import FaceAnalysis
app = FaceAnalysis(providers=['CUDAExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))
faces = app.get(img)
for face in faces:
print(f"Bounding box: {face.bbox}")
print(f"Detection score: {face.det_score:.4f}")
print(f"Landmarks: {face.kps}")
Заключение
Переход от Handcrafted Features к Deep Learning Frameworks стал одним из крупнейших скачков в истории компьютерного зрения. RetinaFace и SCRFD от InsightFace находятся на переднем крае этой эволюции, сочетая передовую точность с практичностью развёртывания на сервере и edge-устройствах.