InsightFace — это open-source библиотека для анализа лиц, которая работает на PyTorch и MXNet. Проект объединяет передовые алгоритмы распознавания, детекции и выравнивания лиц, причём всё это заточено под реальные задачи — от обучения моделей до их развёртывания в продакшене.
Внутри InsightFace собрано несколько ключевых направлений. Первое — распознавание лиц. Здесь реализованы методы вроде ArcFace, SubCenter ArcFace и PartialFC, которые показывают отличные результаты на стандартных бенчмарках. Модели обучаются на очищенных датасетах MS1M, VGG2 и CASIA-Webface, а для оценки качества есть готовые пайплайны под IJB и Megaface. Поддерживаются популярные архитектуры — IResNet, MobilefaceNet, InceptionResNet и другие.
Второе направление — детекция лиц. Тут представлены RetinaFace и SCRFD. RetinaFace — это одноступенчатый детектор, который хорошо работает в сложных условиях. SCRFD — более свежая разработка, нацеленная на высокую точность при минимальных вычислительных затратах. Для обоих методов доступны обучающие данные, предобученные модели и скрипты для оценки.
Третье — выравнивание лиц. Здесь есть SDUNets, который использует тепловые карты, и SimpleRegression — лёгкие модели, которые сразу предсказывают координаты ключевых точек на основе обрезанного изображения лица.
InsightFace выпущен под лицензией MIT, так что код можно использовать свободно. Но есть нюанс: обучающие данные и модели, натренированные на них, доступны только для некоммерческих исследований. Для коммерческого использования отдельных моделей, например inswapper или продвинутых SDK, нужно связываться с авторами проекта.
Проект активно развивается. Недавно вышел InspireFace — кроссплатформенный SDK для распознавания лиц на C/C++. Команда InsightFace регулярно занимает первые места в соревнованиях, включая NIST-FRVT и челленджи на CVPR и ECCV. Есть готовые веб-демо для локализации, распознавания и замены лиц, а также python-пакет, который позволяет быстро протестировать модели на своих изображениях.