MTCNN
MTCNN (Multi-task Cascaded Convolutional Networks) — это алгоритм компьютерного зрения, предназначенный для обнаружения и выравнивания лиц на изображениях. Он представляет собой каскадную (многоступенчатую) свёрточную нейронную сеть, которая одновременно решает три задачи: детекцию лица, регрессию координат ограничивающей рамки (bounding box) и определение координат ключевых точек лица (глаз, носа, уголков рта). MTCNN была предложена исследователями из Китайской академии наук в 2016 году и быстро стала одним из стандартных инструментов для предварительной обработки изображений в системах распознавания лиц, анализа эмоций и других приложениях, требующих точной локализации лица.
История создания
MTCNN была впервые представлена в статье «Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks» (2016), авторами которой стали Кай Чжан, Чжанпэн Чжань, Чжифэн Ли и Юнцян Цяо. Работа была опубликована на конференции IEEE Signal Processing Letters. Основной мотивацией для создания алгоритма стала необходимость в высокоскоростном и точном детекторе лиц, который мог бы работать на устройствах с ограниченными вычислительными ресурсами, включая мобильные телефоны и встраиваемые системы.
До появления MTCNN популярные методы обнаружения лиц, такие как каскады Хаара (Viola-Jones) или HOG (Histogram of Oriented Gradients) с SVM, обладали рядом недостатков: низкой точностью при поворотах головы, плохой работой при частичном перекрытии лица и высокой чувствительностью к освещению. Глубокие нейронные сети, такие как Faster R-CNN, обеспечивали высокую точность, но были слишком медленными для реального времени. MTCNN предложила компромисс: каскадная архитектура из трёх сетей, каждая из которых выполняет всё более сложную задачу, позволяя отбрасывать большую часть ложных срабатываний на ранних этапах.
Архитектура и принцип работы
MTCNN состоит из трёх последовательных свёрточных нейронных сетей: P-Net (Proposal Network), R-Net (Refine Network) и O-Net (Output Network). Каждая последующая сеть получает на вход только те области изображения, которые были признаны потенциальными лицами на предыдущем этапе, что резко снижает вычислительную нагрузку.
P-Net (Proposal Network)
P-Net — это первая, самая лёгкая и быстрая сеть. Она работает по принципу скользящего окна, но не в исходном изображении, а в пирамиде масштабов (image pyramid). P-Net сканирует изображение с помощью небольшого ядра свёртки (обычно 12×12 пикселей) и для каждого окна выдаёт три результата:
- Классификация лица: вероятность того, что в окне находится лицо (два выхода — лицо/не лицо).
- Регрессия ограничивающей рамки: смещения (dx, dy, dw, dh) для уточнения координат окна.
- Регрессия ключевых точек: координаты пяти ключевых точек (левый глаз, правый глаз, нос, левый уголок рта, правый уголок рта) — на этом этапе они вычисляются, но используются только на последнем шаге.
После прохода P-Net по всем масштабам пирамиды, полученные окна с высокой вероятностью лица проходят через Non-Maximum Suppression (NMS) для удаления дублирующихся рамок. Результатом работы P-Net является множество грубых кандидатов в лица.
R-Net (Refine Network)
R-Net — это вторая, более глубокая сеть, которая принимает на вход изображения размером 24×24 пикселя, вырезанные из исходного изображения по координатам, полученным от P-Net. R-Net имеет ту же структуру выходов (классификация, регрессия рамки, регрессия ключевых точек), но за счёт большего размера входного изображения и более глубокой архитектуры способна отсеивать ложные срабатывания с высокой точностью. После прохода R-Net снова применяется NMS для удаления перекрывающихся рамок. Количество кандидатов на этом этапе значительно сокращается.
O-Net (Output Network)
O-Net — это самая глубокая и точная сеть, принимающая на вход изображения размером 48×48 пикселей. Она выполняет окончательную классификацию, уточнение рамки и, что важно, выдаёт финальные координаты пяти ключевых точек лица. O-Net использует большее количество свёрточных слоёв и полносвязных слоёв, что позволяет ей различать лица даже при сложных ракурсах, частичном перекрытии или низком качестве изображения. После O-Net выполняется финальный NMS, и на выходе алгоритма остаются только те рамки, которые прошли все три этапа.
Схема работы
- Построение пирамиды изображений (масштабирование исходного изображения в несколько раз).
- Проход P-Net по всем масштабам пирамиды, получение грубых кандидатов.
- NMS для удаления дубликатов.
- Извлечение фрагментов изображения по координатам кандидатов и их масштабирование до 24×24.
- Проход R-Net, отсев ложных срабатываний.
- NMS.
- Извлечение фрагментов 48×48.
- Проход O-Net, финальная классификация, уточнение рамки и вычисление ключевых точек.
- Финальный NMS.
Особенности и преимущества
- Многозадачность: одновременное решение задач детекции, регрессии рамки и локализации ключевых точек. Это позволяет сети использовать общие признаки, что повышает точность и устойчивость.
- Каскадная архитектура: ранние этапы (P-Net) работают быстро и отбрасывают большинство ложных срабатываний, а более сложные сети (R-Net, O-Net) обрабатывают только небольшое количество кандидатов, что обеспечивает высокую скорость работы.
- Устойчивость к масштабу: пирамида изображений позволяет обнаруживать лица разного размера — от крупных (на портретах) до очень мелких (на групповых снимках).
- Высокая точность: на момент публикации MTCNN показывала результаты, сопоставимые с лучшими методами того времени (например, Faceness-Net), при значительно меньшем времени обработки.
- Простота внедрения: алгоритм реализован на многих популярных фреймворках (TensorFlow, PyTorch, Caffe, OpenCV) и доступен в виде готовых библиотек, в том числе в составе dlib и face_recognition.
Недостатки и ограничения
- Чувствительность к сильным перекрытиям: при значительном частичном перекрытии лица (например, рукой или другим объектом) MTCNN может не обнаружить лицо или дать неточную рамку.
- Зависимость от качества изображения: на сильно зашумлённых, размытых или очень тёмных изображениях точность падает.
- Вычислительная нагрузка при большом количестве лиц: хотя каскадная архитектура оптимизирована, при наличии на изображении десятков и сотен мелких лиц (например, на фотографиях толпы) время обработки может возрасти.
- Отсутствие классификации по полу, возрасту или эмоциям: MTCNN не определяет атрибуты лица, а только его местоположение и ключевые точки.
Применение
MTCNN широко используется в качестве предварительного этапа (preprocessing) в системах, где требуется точная локализация лица:
- Распознавание лиц: большинство современных систем распознавания (например, FaceNet, ArcFace, DeepFace) сначала применяют MTCNN для вырезания и выравнивания лица, что значительно повышает точность последующего сравнения.
- Анализ эмоций и выражений лица: для корректной работы классификаторов эмоций необходимо, чтобы лицо было выровнено и приведено к единому масштабу.
- Биометрическая аутентификация: в системах контроля доступа, разблокировки устройств (например, на смартфонах) MTCNN используется для быстрого обнаружения лица в кадре.
- Видеонаблюдение и аналитика: в системах подсчёта людей, отслеживания движения, поиска пропавших.
- Фоторедакторы и приложения дополненной реальности: для наложения масок, фильтров, коррекции изображения (например, автоматическое кадрирование по лицу).
- Медицинская диагностика: в некоторых исследованиях MTCNN применяется для предварительной обработки изображений лиц при анализе симптомов заболеваний (например, синдрома Дауна, акромегалии).
Реализации и библиотеки
MTCNN реализована во многих популярных библиотеках компьютерного зрения:
- OpenCV (начиная с версии 4.5.1) — встроенная реализация в модуле
dnn. - face_recognition — популярная библиотека на Python, использующая MTCNN как один из детекторов.
- MTCNN — отдельная библиотека на Python (пакет
mtcnn), предоставляющая простой интерфейс. - TensorFlow / PyTorch — множество открытых реализаций, включая официальные репозитории авторов.
Сравнение с другими методами
| Метод | Точность (AP на FDDB) | Скорость (FPS на CPU) | Ключевые точки | Устойчивость к масштабу |
|---|---|---|---|---|
| Viola-Jones | 0.85 | 30+ | Нет | Низкая |
| HOG + SVM | 0.90 | 10-15 | Нет | Средняя |
| MTCNN | 0.95 | 15-25 | Да (5 точек) | Высокая |
| Faster R-CNN | 0.97 | 1-5 | Нет | Высокая |
| RetinaFace | 0.98 | 10-20 | Да (5-106 точек) | Высокая |
MTCNN занимает промежуточное положение между классическими методами (Viola-Jones, HOG) и более современными детекторами на основе глубокого обучения (RetinaFace, YOLO-face). Она превосходит классические методы по точности и устойчивости, но уступает более новым архитектурам по точности на сложных сценах, при этом оставаясь значительно быстрее многих из них.
Источники
- Zhang, K., Zhang, Z., Li, Z., & Qiao, Y. (2016). Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks. IEEE Signal Processing Letters, 23(10), 1499-1503.
- Viola, P., & Jones, M. (2001). Rapid object detection using a boosted cascade of simple features. Proceedings of the 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition.
- Deng, J., Guo, J., Ververas, E., Kotsia, I., & Zafeiriou, S. (2020). RetinaFace: Single-Shot Multi-Level Face Localisation in the Wild. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition.
- Документация библиотеки OpenCV (модуль dnn).
- Документация библиотеки face_recognition (Python).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →