fbpx
  • face.evoLVe: библиотека для распознавания лиц на PyTorch

    face.evoLVe — это библиотека на PyTorch для распознавания лиц с помощью state-of-the-art архитектур. В библиотеке доступны предобученные модели и данные, на которых обучались модели. Нейросети из face.evoLVe выдают state-of-the-art результаты на задачах MS-Celeb-1M, IJB-A, Labeled Faces in the Wild (LFW), Celebrities in Frontal-Profile (CFP), CMU Multi-PIE, MORPH Album2, CACD-VS, FG-NET.

    Функционал библиотеки включает в себя:

    • Распознавание лиц: детектирование, локализация основных точек лица, соотнесение лиц;
    • Обработку данных: аугментация, балансировка, нормализация;
    • Разнообразие базовых моделей: ResNet, IR, IR-SE, ResNeXt, SE-ResNeXt, DenseNet, LightCNN, MobileNet, ShuffleNet, DPN
    • Разнообразие функций потерь: Softmax, Focal, Center, SphereFace, CosFace, AmSoftmax, ArcFace, Triplet;
    • Трюки для улучшения работы модели: дистилляция, модификации модели и процесса обучения

    Распределенное вычисление моделей в face.evoLVe

    В стандартных библиотеках модели обучаются распределенно на нескольких GPU. Это позволяет распараллеливать вычисления базовой модели на нескольких графических процессорах. При этом финальный полносвязный слой считается на одном master GPU. Это не является проблемой для стандартной задачи распознавания лиц с небольшим числом классов персон. Однако в случае, когда количество классов измеряется в миллионах, такая схема обучения неэффективна. При вычислении последнего слоя master GPU тратит на вычисление большую часть своих ресурсов, в то время как остальные процессоры остаются малонагружены. Это приводит к необходимости уменьшать размер батча или к ошибкам. 

    Схема параллелизации обучения

    Чтобы решить эту проблему, в библиотеке распределенно обучается не только базовая модель, но и финальный полносвязный слой. Такой подход упрощает использование моделей из библиотеки для распознавания миллионов лиц и инференс моделей в продукте.