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

ArcFace

ArcFace — это метод распознавания лиц на основе глубокого обучения, представляющий собой функцию потерь (loss function) для обучения нейронных сетей, которая добавляет аддитивный угловой запас (additive angular margin) к целевой логите. Разработанный в 2018 году исследователями из компании InsightFace (организация, зарегистрированная в КНР), ArcFace стал одной из наиболее популярных и эффективных архитектур для задач верификации и идентификации лиц, обеспечивая высокую точность при обучении на больших наборах данных.

История и предпосылки

Развитие методов распознавания лиц прошло несколько этапов: от классических алгоритмов, основанных на ручных признаках (например, LBP, HOG), до использования свёрточных нейронных сетей (CNN). Ключевой проблемой при обучении CNN для распознавания лиц является выбор функции потерь, которая должна обеспечивать внутриклассовую компактность (близость изображений одного человека) и межклассовую разделимость (различие между разными людьми).

До появления ArcFace использовались такие функции потерь, как Softmax Loss, Triplet Loss, Center Loss и SphereFace. Softmax Loss, хотя и прост в реализации, не оптимизирует напрямую угловые расстояния между признаками. Triplet Loss требует сложной процедуры подбора триплетов (якорь, положительный и отрицательный примеры) и может быть нестабилен. SphereFace ввёл угловой запас, но использовал мультипликативный подход, что приводило к сложностям в сходимости.

ArcFace был предложен в 2018 году в статье «ArcFace: Additive Angular Margin Loss for Deep Face Recognition» группой исследователей из InsightFace (Цзяньцзян Дэн, Цзя Го, Нань Сюэ, Сяоян Чжан и др.). Основная идея заключалась в замене мультипликативного углового запаса на аддитивный, что упростило оптимизацию и улучшило точность.

Устройство и принцип работы

Функция потерь ArcFace

ArcFace модифицирует стандартную функцию потерь Softmax, добавляя аддитивный угловой запас (m) к углу между вектором признака и вектором веса соответствующего класса. Формально, функция потерь ArcFace выглядит следующим образом:

\[ L = -\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{s \cdot \cos(\theta_{y_i} + m)}}{e^{s \cdot \cos(\theta_{y_i} + m)} + \sum_{j \neq y_i} e^{s \cdot \cos(\theta_j)}} \]

Где:

  • \(N\) — размер батча;
  • \(y_i\) — истинный класс i-го образца;
  • \(\theta_j\) — угол между вектором признака \(x_i\) и вектором веса \(W_j\) класса j;
  • \(s\) — масштабирующий коэффициент (обычно 64);
  • \(m\) — аддитивный угловой запас (обычно 0.5).

Таким образом, ArcFace увеличивает логарифмическую вероятность истинного класса, требуя, чтобы признак был не просто ближе к центру класса, но и находился на определённом угловом расстоянии от других классов.

Отличие от других функций потерь

  • Softmax Loss: не использует запас, что приводит к меньшей разделимости.
  • SphereFace: использует мультипликативный запас (\(m \cdot \theta\)), что делает градиент более сложным и может вызывать проблемы сходимости.
  • CosFace: использует аддитивный косинусный запас (\(cos\theta - m\)), что эквивалентно ArcFace, но с другим геометрическим смыслом.

ArcFace показал лучшую производительность на эталонных тестах, таких как LFW, MegaFace и IJB-C, благодаря более стабильному обучению и лучшей дискриминации.

Архитектура сети

ArcFace обычно используется в сочетании с глубокими свёрточными нейронными сетями, такими как ResNet, MobileNet, EfficientNet и др. Типичная архитектура включает:

  1. Базовый энкодер (например, ResNet-50, ResNet-100) — извлекает признаки из изображения лица.
  2. Слой глобального среднего пулинга — уменьшает размерность.
  3. Полносвязный слой (FC) — проецирует признаки в пространство признаков (обычно 512-мерное).
  4. Нормализация — векторы признаков и весов нормализуются по L2-норме, чтобы они лежали на гиперсфере.

После обучения сеть может использоваться для извлечения признаков (embedding) из любого изображения лица, которые затем сравниваются по косинусному расстоянию.

Применение

ArcFace нашёл широкое применение в различных областях, связанных с распознаванием лиц:

  • Верификация личности — проверка, что два изображения принадлежат одному человеку (например, в системах доступа).
  • Идентификация — поиск человека в базе данных (например, в криминалистике).
  • Аутентификация — подтверждение личности по лицу (например, в мобильных устройствах).
  • Поиск по изображению — нахождение похожих лиц в больших коллекциях.
  • Анализ эмоций и атрибутов — хотя ArcFace изначально не предназначен для этого, его признаки могут быть использованы для классификации возраста, пола, эмоций.

Примеры использования: системы видеонаблюдения, пограничный контроль, социальные сети (например, Facebook — организация признана экстремистской и запрещена в РФ — использовал подобные методы), а также в коммерческих продуктах, таких как Face ID от Apple.

Критика и ограничения

Несмотря на высокую точность, ArcFace имеет ряд недостатков:

  • Зависимость от качества изображения — при сильном затенении, низком разрешении или больших углах поворота точность падает.
  • Необходимость больших наборов данных — для обучения требуется миллионы изображений лиц, что может быть проблематично с точки зрения приватности.
  • Уязвимость к атакам — системы на основе ArcFace могут быть обмануты с помощью фотографий, масок или глубоких подделок (deepfakes).
  • Этические проблемы — использование распознавания лиц без согласия может нарушать права на приватность. В ряде стран (например, в странах Европейского союза) введены ограничения на использование таких технологий.

Интересные факты

  • ArcFace занял первое место в нескольких соревнованиях по распознаванию лиц, включая MegaFace и IJB-C.
  • Код и предобученные модели ArcFace доступны в открытом репозитории InsightFace на GitHub, что способствовало его широкому распространению.
  • Аддитивный угловой запас интерпретируется как геометрическое расстояние на гиперсфере: чем больше m, тем сильнее разнесены классы.

Источники

  • Deng, J., Guo, J., Xue, N., & Zafeiriou, S. (2019). ArcFace: Additive Angular Margin Loss for Deep Face Recognition. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR).
  • InsightFace GitHub repository: https://github.com/deepinsight/insightface
  • Liu, W., Wen, Y., Yu, Z., Li, M., Raj, B., & Song, L. (2017). SphereFace: Deep Hypersphere Embedding for Face Recognition. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR).
  • Wang, H., Wang, Y., Zhou, Z., Ji, X., Gong, D., Zhou, J., & Liu, W. (2018). CosFace: Large Margin Cosine Loss for Deep Face Recognition. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR).

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

На главную BFOmetr →