Мобильные архитектуры
Мы рассмотрели различные идеи повышения точности классификации изображений свёрточными сетями. Отметим, что высокая точность обеспечивалась нейросетями с большим числом слоёв, что требовало для их применения высокопроизводительной видеокарты с большим объёмом памяти.
Однако на практике часто главным преимуществом модели является не её точность, а производительность и экономичность. Например, когда мы хотим внедрить разработанное решение в телефоне или в фотоаппарате, чьи процессоры весьма скромны по своим возможностям. Поэтому актуальна разработка так называемых мобильных архитектур (mobile architectures), нетребовательных к вычислительным ресурсам.
Рассмотрим идеи повышения вычислительной эффективности на примерах популярных мобильных свёрточных архитектур.
В сети MobileNet [1] для снижения размерности вместо максимизирующего пулинга использовались свёртки с шагом (stride) 2. Вместо стандартных свёрток использовались поканальные сепарабельные (depthwise separable convolutions). Впоследствии появлялись новые версии этой модели, в которых были добавлены тождественные связи (как в ResNet).
В сети SqueezeNet [2] вообще не использовались полносвязные слои. Рей тингами классов служили выходы глобального пулинга, применённого к последнему (свёрточному) слою сети. Свёртки 3x3 заменялись композицией свёрток 3x1 и 1x3.
В сети SqueezeNext [3] вначале изображение сильно сжималось свёрткой 7x7, а вся последующая обработка велась уже в сильно пониженном разрешении.
В модели ShuffleNet [4] многократно использовались групповые свёртки (grouped convolutions). Чтобы свёрточные фильтры не замыкались в своих группах, каналы периодически перемешивались.
Таким образом, мобильные архитектуры активно использовали облегчённые версии свёрток, изученные ранее. Число слоёв и число каналов в каждом слое также было существенно меньше. Использовались и другие инженерные улучшения, описанные в приведённых статьях.