Автор: Герман Петров
Редактура: Дмитрий Раков
Введение
Долгое время модели семейства MobileNet были хорошим выбором в контексте соотношения скорости работы и качества. Еще они зарекомендовали себя как энкодеры в задачах детекции и сегментации. Подробнее о них можно прочитать в нашем посте 😊
Однако прогресс не стоит на месте: ML-ресерчеры из Apple представили свое семейство быстрых моделей MobileOne с лучшим качеством на ImageNet в сравнении с MobileNet.
Официальный код с имплементацией MobileOne: https://github.com/apple/ml-mobileone.
Термины
Перед знакомством с моделями семейства MobileOne давайте разберем несколько терминов, которые нам понадобятся:
- FLOPs (FLoating-point OPerations per Second) — единица измерения вычислительной мощности процессоров в операциях с плавающей точкой. Важный параметр в контексте нейросетевых моделей: он показывает количество вычислений (операций с плавающей точкой) модели для получения результата. Следовательно, чем ниже этот параметр, тем лучше (меньшими усилиями мы получаем тот же результат).
- NMP (Number of Model Parameters) — количество параметров модели.
- MAC (Memory Access Cost) — временные затраты процессора на доступ к переменной в памяти.
- DOP (Degree Of Parallelism) — показатель, который отражает возможность распараллелить вычисления сети (насколько хорошо это можно сделать).
- Latency — время работы модели. Обычно считают в миллисекундах / ms.
Пара уточнений
- Далее везде инференс моделей будет происходить на процессоре A14 в Apple Iphone 12. Там нет доступа к командной строке или функциональности, позволяющей зарезервировать всю вычислительную структуру только для запуска модели, поэтому авторы написали специальное приложение на Swift для iOS. Для бенчмаркинга приложение запускают много раз (по умолчанию 1000) и усредняют полученные результаты.
- Периодически в посте будут появляться бранчи (branches) — дополнительные ответвления линейной архитектуры сети. Классический пример: skip connections. Multi branch — несколько branches.
- При описании MobileOne block будут упомянуты свертки depthwise, pointwise и separable. Подробнее о них можно прочитать в этом посте про виды 2D сверток.
Mobile problem
Кроме качества работы модели для многих реальных задач есть еще два ограничения:
- Размер модели должен быть небольшим, чтобы ее можно было использовать на мобильных устройствах и несильно мощных CPU-ядрах.