Открыть сервис

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, и на выходе алгоритма остаются только те рамки, которые прошли все три этапа.

Схема работы

  1. Построение пирамиды изображений (масштабирование исходного изображения в несколько раз).
  2. Проход P-Net по всем масштабам пирамиды, получение грубых кандидатов.
  3. NMS для удаления дубликатов.
  4. Извлечение фрагментов изображения по координатам кандидатов и их масштабирование до 24×24.
  5. Проход R-Net, отсев ложных срабатываний.
  6. NMS.
  7. Извлечение фрагментов 48×48.
  8. Проход O-Net, финальная классификация, уточнение рамки и вычисление ключевых точек.
  9. Финальный 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-Jones0.8530+НетНизкая
HOG + SVM0.9010-15НетСредняя
MTCNN0.9515-25Да (5 точек)Высокая
Faster R-CNN0.971-5НетВысокая
RetinaFace0.9810-20Да (5-106 точек)Высокая

MTCNN занимает промежуточное положение между классическими методами (Viola-Jones, HOG) и более современными детекторами на основе глубокого обучения (RetinaFace, YOLO-face). Она превосходит классические методы по точности и устойчивости, но уступает более новым архитектурам по точности на сложных сценах, при этом оставаясь значительно быстрее многих из них.

Источники

  1. 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.
  2. 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.
  3. 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.
  4. Документация библиотеки OpenCV (модуль dnn).
  5. Документация библиотеки face_recognition (Python).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →