Разработка сверточных нейронных сетей (CNN) для мобильных устройств является сложной задачей, поскольку мобильные модели должны быть небольшими и быстрыми, но при этом точными. Несмотря на то, что значительные усилия были направлены на проектирование и улучшение мобильных CNN во всех измерениях, очень сложно вручную сбалансировать эти компромиссы, когда необходимо рассмотреть так много архитектурных возможностей[1]. В этой работе мы предоставили открытый конвейер поиска нейронной архитектуры (NAS) с разделением веса, который можно обучить и выполнить поиск в ImageNet всего за 60 GPU-часов ( на 4 графических процессорах V100, включая обучение в суперсетях, поиск в суперсетях и обучение поиску лучших подсетей) в области исследования около 32^20 вариантов.

Краткий обзор этой работы: для обучения он поддерживает обучение суперсети с выбором блоков и каналов, SE в стиле ShuffleNetV2+ и последний блок свертки в стиле MobileNet V3; для поиска доступен как генетический, так и случайный поиск с обновлением статистики BN и ограничениями FLOP/количества параметров; для оценки и развертывания предоставляются инструменты для расчета FLOP и параметров, подробного профилирования для каждого оператора, квантования int8 и слияния Batch Norm.

Используя эту реализацию, была найдена новая современная модель поиска NAS, OneShot-S+, которая превосходит другие модели NAS, такие как Single Path One Shot, FBNet, MnasNet, DARTS, NASNET, PNASNET, с большим отрывом по всем показателям FLOPS, количеству параметров и Top-1 / Top -5 точности. Кроме того, для рассмотрения MicroNet Challenge Σ Normalized Score от Google перед любым квантованием он также превосходит другие популярные базовые модели, такие как MobileNet V1, V2, V3, ShuffleNet V1, V2, V2+.

Разбивка подхода

Наш подход в основном основан на One Path One-Shot NAS в сочетании Squeeze and Excitation (SE), ShuffleNet V2+ и >MobileNet V3. Как и в оригинальной статье, блоки выбора и шкалы каналов блоков ищутся с несколькими ограничениями FLOP и количества параметров. В этом разделе будут рассмотрены некоторые детали реализации.

Проектирование структуры суперсети

Для каждого ShuffleNasBlock было исследовано 4 блока выбора: ShuffleNetBlock-3x3 (SNB-3), SNB-5, SNB-7 и ShuffleXceptionBlock-3x3 (SXB-3). В каждом блоке доступно 8 вариантов каналов: [0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0] * (BlockOutputChannel / 2). Таким образом, каждый ShuffleNasBlock исследует 32 возможных вариантов, и в этой реализации есть 20 блоков, что составляет всего 32^20 вариантов дизайна.

Мы также применили макет SE, ShuffleNet V2+ SE и дизайн последнего блока свертки MobileNet V3 в суперсети. Наконец, суперсеть содержит 15.4 миллионов обучаемых параметров, а возможные FLOP подсети находятся в диапазоне от 168M до 841M.

Обучение суперсети

В отличие от того, что делал оригинальный Single Path One-Shot NAS, на этапе обучения мы не применяли равномерное распределение с самого начала. Всего суперсеть обучалась 120 эпох. В первые 60 эпохи применялся только выбор блока, а для предстоящих 60 эпох был введен новый подход "Разогрев выбора канала", который постепенно позволяет суперсети обучение с более широким диапазоном выбора канала.

Причина, по которой это необходимо делать при обучении суперсети, заключается в том, что в ходе наших экспериментов мы обнаружили, что для суперсети без SE выбор блока с самого начала работает хорошо, тем не менее выбор канала с самого начала вызовет сеть вообще не сходится. Диапазон выбора канала необходимо постепенно увеличивать, иначе он рухнет с точностью свободного падения. И диапазон может быть разрешен только для (0.6 ~ 2.0). Меньшие масштабы каналов(0.2, 0.4) также приведут к сбою сети. Для суперсети с SE выбор канала с полным выбором (0.2 ~ 2.0) можно использовать с самого начала, и он сходится. Однако это похоже на ущерб точности. По сравнению с той же сетью se-supernet с предварительным выбором канала, модель выбора канала с нуля всегда уступала по точности 10% Топ-1 в течение всей процедуры.

Поиск подсети

На этапе поиска выбор блока и выбор канала обрабатываются совместно в суперсети одновременно. Это означает, что для каждого экземпляра в популяции нашего генетического алгоритма он содержит 20 генов выбора блока и 20 генов выбора канала. Мы стремились найти комбинацию этих двух, оптимизирующих друг друга и дополняющих друг друга.

Для каждой квалифицированной структуры подсети (имеющей Σ Normalized Scores ниже, чем базовая модель поиска OneShot), как и в большинстве подходов NAS с разделением веса, статистика BN сначала обновлялась с помощью 20,000 фиксированных изображений обучающего набора, а затем оценивалась точность проверки этой подсети ImageNet в качестве индикатора ее представление.

Обучение работе с подсетями

Окончательная найденная модель была создана и обучена с нуля. Никакие предыдущие веса суперсети не используются повторно в подсети.

Что касается гиперпараметров. Официальный сценарий обучения GluonCV ImageNet был изменен для поддержки обучения как суперсети, так и обучения подсети. Модель подсети была обучена с начальной скоростью обучения 1.3, уменьшением веса 0.00003, косинусным планировщиком скорости обучения, 4 графическими процессорами каждый с размером пакета 256, сглаживанием меток и отсутствием уменьшения веса для бета-гаммы BN. Подсеть обучалась 360 эпох.

Результаты

Обучение суперсети

Поиск в суперсети

Мы пробовали как случайный поиск, случайным образом выбирая 250 подходящих экземпляров для оценки их производительности, так и генетический поиск. Генетический метод легко нашел лучшую структуру подсети по сравнению со случайным выбором.

Производительность искомых моделей

Oneshot-S+ — это модель с выбором блока и выбором канала, найденным этой реализацией, дизайном SE в стиле ShuffleNetV2+ и последней сверткой MobileNetV3.

Oneshot+ — это настраиваемая модель с вариантами блоков и каналов, представленными в документе, дизайном SE в стиле ShuffleNetV2+ и последней сверткой MobileNetV3.

Профилирование OneShot-S+

Подробное профилирование op to op можно найти здесь. Расчет выполняется в соответствии с политикой MicroNet Challenge. Это немного отличается от того, как большинство газет сообщают о провалах.

Резюме

В этой работе мы предоставили современный конвейер поиска нейронной архитектуры (NAS) с разделением веса с открытым исходным кодом, который можно обучить и выполнить поиск в ImageNet всего за 60 часа GPU (на 4 GPU V100) и в исследовательском пространстве. около 32^20. Модель, найденная этой реализацией, превосходит другие модели поиска NAS, такие как Single Path One Shot, FBNet, MnasNet, DARTS, NASNET, PNASNET, с хорошим отрывом по всем факторам FLOPS, количеству параметров и точности Top-1. Кроме того, с учетом оценки MicroNet Challenge Σ без какого-либо квантования она превосходит другие базовые модели, такие как MobileNet V1, V2, V3, ShuffleNet V1, V2, V2+.

Несмотря на то, что OneShot-S+ набрал больше очков MicroNet, чем MobileNet V3, он потребляет больше FLOP, чем последний. Мы работали над проектированием и поиском модели с меньшим количеством параметров и меньшим числом FLOP, чем MobileNet V3. Результаты будут представлены в ближайшее время.

Если эта работа покажется вам интересной, не забудьте клонировать меня на Github!