Серия ShuffleNet является очень важной серией в облегченной сети.ShuffleNetV1 предлагает операцию перетасовки каналов, так что сеть может использовать групповую свертку для ускорения, в то время как ShuffleNetV2 переворачивает большую часть дизайна V1.С фактической точки зрения, это предлагает операцию разделения каналов, повторное использование функций выполняется при ускорении сети, и достигаются хорошие результаты
Источник: Заметки по разработке алгоритмов Xiaofei Public Account.
ShuffleNet V1
Документ: ShuffleNet: чрезвычайно эффективная сверточная нейронная сеть для мобильных устройств
- Адрес бумаги:АР Вест V.org/PDF/1707.01…
- Код диссертации:GitHub.com/Мег VII-touch…
Introduction
Точность нейронных сетей становится все выше и выше, а скорость логического вывода постепенно снижается, и в практических приложениях приходится идти на компромисс между производительностью и точностью. С этой целью в статье анализируется время, отнимаемое небольшими сетями, и предлагается ShuffleNet. Сначала в документе представлены основные операции ShuffleNet, Channel Shuffle и Group Convolutions, затем представлена структура модуля Shuffle и, наконец, представлена архитектура ShuffleNet.
Channel Shuffle for Group Convolutions
В некоторых современных основных сетях точечная свертка обычно используется для уменьшения размерности, тем самым уменьшая сложность сети, но из-за высокой входной размерности накладные расходы точечной свертки очень велики. Для небольших сетей дорогостоящая точечная свертка приведет к значительному падению производительности, например, в модуле ResNext на точечную свертку приходится 93,4% вычислений. С этой целью в документе представлена групповая свертка и сначала обсуждаются две реализации ShuffleNet:
- Рисунок 1а является наиболее прямым методом, который изолирует все операции в абсолютных размерах, но это приводит к тому, что конкретный вывод связан только с небольшой частью ввода, что блокирует поток информации между группами и снижает выразительность.
- Рисунок 1b перераспределяет размеры вывода.Сначала вывод каждой группы делится на несколько подгрупп, а затем каждая подгруппа вводится в другую группу, что может хорошо сохранить поток информации между группами.
Идею рисунка 1b можно просто реализовать с помощью операции перетасовки каналов, как показано на рисунке 1c, предполагая, чтоВыход сверточного слоя группы
измерение, сначала измените форму () вывода как
, затем транспонировать() и, наконец, сгладить() обратно
измерение.
ShuffleNet Unit
На основе операции перетасовки каналов в документе предлагаются два модуля ShuffleNet, начиная с базовой остаточной структуры на рис. 2а, включаяГлубокая свертка для извлечения признаков:
- На рис. 2b показан блок ShuffeNet с тем же размером карты признаков.
Слой свертки заменяется точечно сгруппированной сверткой + операция перетасовки каналов.Функция второй точечно сгруппированной свертки состоит в том, чтобы восстановить входное измерение единицы для облегчения поэлементного добавления с помощью ярлыков. Следующие две операции свертки связаны только с BN в соответствии с рекомендацией разделяемой бумаги по глубинной свертке, а не BN + ReLU. В статье была предпринята попытка перетасовки каналов после второй свертки с точечной группировкой, но это не сильно улучшило точность.
- На рисунке 2c показан блок ShuffleNet с уменьшенным вдвое размером карты признаков, который можно использовать для понижения дискретизации признаков между блоками. В основном добавляется в ярлык
Объединение в средний пул и замена последнего поэлементного сложения конкатенацией каналов увеличивает размер вывода, не требуя слишком больших вычислений.
Расчет блока Shuffle более эффективен, т.к., средний размер узкого места
, расчетная сумма единицы ResNet составляет
FLOPs, расчетная сумма единицы ResNeXt составляет
FLOPs, расчетная сумма единицы ShuffleNet составляет
,
- количество групп для свертки. При тех же вычислительных ресурсах сокращение объема вычислений означает, что ShuffeNet может использовать карты объектов большего размера, что очень важно в небольших сетях.
Следует отметить, что хотя глубинные свертки обычно имеют меньшую теоретическую сложность, они не очень эффективны в реализации. С этой целью ShuffleNet использует свертки по глубине только для функций в узком месте (более низкая размерность).
Network Architecture
Структура ShuffleNet показана в таблице 1. Единицы ShuffleNet объединяют три разных этапа. Первая единица ShuffleNet каждого этапа особенная. Используя структуру шага = 2 на рисунке 2c, размер карты признаков удваивается, а количество каналов удвоилось. В других модулях ShuffleNet используется структура, показанная на рис. 2b, а размер бутлнека устанавливается равным выходным данным.. В таблице 1 спроектированы сети с разным количеством групп и изменены соответствующие выходные размерности.Общий размер модели поддерживается на уровне около 140 млн флопс.Чем больше количество групп в сети, тем больше размерность, которую можно установить .
Experiments
Чтобы установить различную сложность сети, добавьте коэффициент масштабирования к измерению сетевого уровня в таблице 1., например, ShuffleNet 0.5X удваивает размерность вывода всех слоев в таблице 1.
Производительность для разных масштабов и количества групп.
Сравните влияние перетасовки каналов на сети разного размера.
В случае сохранения сложности попробуйте заменить этапы 2-4 другими основными сетевыми структурами (конкретный дизайн см. в исходном тексте) для сравнения производительности.
Сравните производительность MobileNet с такой же сложностью.
Сравните производительность основных сетей.
Сравнение производительности в качестве основы для обнаружения объектов.
Сравнение скорости однопоточного вывода ЦП.
Conclusion
Ядром ShuffleNet является использование операции перетасовки каналов, чтобы восполнить обмен информацией между группами, чтобы сеть могла максимально использовать точечную групповую свертку, что может не только уменьшить основной объем расчета сети, но и увеличить размерность свертки.С экспериментальной точки зрения, это очень хорошая работа.
ShuffleNet V2
Документ: ShuffleNet V2: Практические рекомендации по эффективному Архитектурный дизайн CNN
- Адрес бумаги:АР Вест V.org/PDF/1807.11…
- Код диссертации:GitHub.com/Мег VII-touch…
Introduction
В документе было обнаружено, что в качестве меры вычислительной сложности FLOP на самом деле не эквивалентны скорости. Как показано на рисунке 1, скорость сетей с одинаковыми FLOP сильно различается, недостаточно использовать FLOP в качестве индикатора для измерения вычислительной сложности, а также учитывать потребление доступа к памяти и параллелизм GPU. Основываясь на приведенных выше выводах, в документе перечислены пять основных принципов проектирования облегченной сети от теории до эксперимента, а затем предлагается ShuffleNet V2 в соответствии с основными принципами проектирования.
Practical Guidelines for Efficient Network Design
Для обеспечения правильности результатов в статье проводятся теоретические испытания на следующем промышленном оборудовании:
- GPU. A single NVIDIA GeForce GTX 1080Ti is used. The convolution library is CUDNN 7.0
- ARM. A Qualcomm Snapdragon 810.
Содержит следующие 5 основных элементов легкого сетевого дизайна:
-
G1: Equal channel width minimizes memory access cost (MAC).
В большинстве основных сетей используется свертка с разделением по глубине, в которой на точечную свертку приходится большая часть вычислительных затрат. Предположим, входное измерениеи выходной размер
, размер карты объектов
и
,но
Вычислительная стоимость ядра свертки
, потребление доступа к памяти
, MAC можно выразить в виде формулы, относящейся к B:
Приведенная выше формула находится ви
Минимальное значение получается, когда они равны, то есть, когда входная и выходная размерности равны, потребление доступа к памяти наименьшее.
Чтобы избежать расхождения между теорией и практикой, в статье сравнивается реальное оборудование и корректируется соотношение входных и выходных размеров при сохранении FLOP без изменений.Видно, что скорость расчета самая высокая в случае 1: 1. Поэтому при проектировании структуры старайтесь, чтобы размеры входа и выхода свертки были согласованными.
-
G2: Excessive group convolution increases MAC
Групповая свертка может уменьшить FLOP.В случае фиксированных FLOP групповая свертка может использовать больше каналов, но увеличение количества каналов приведет к улучшению MAC.Связь между MAC и FLOP свертки пакетов такова:
это количество групп,
для флопов. В случае фиксированного ввода и вычислений MAC увеличивается с
увеличиваться и увеличиваться.
В документе также проводится сравнение реальных устройств. Использование большего количества пакетов снижает скорость логического вывода, в основном из-за увеличения MAC-адреса. Поэтому необходимо тщательно подбирать количество групп в соответствии с платформой и задачами.Выбор большого количества групп может в определенной степени повысить точность, но также приведет к быстрому увеличению потребления вычислений.
-
G3: Network fragmentation reduces degree of parallelism
В настоящее время некоторые сети используют несколько проходов в одном блоке, например, NASNET-A использует 13 ответвлений в одном блоке, в то время как обычные сети используют только 2-3 ответвления. Хотя такая конструкция может повысить точность, она не подходит для параллельных вычислений устройства и приведет к падению производительности.
Сравнение производительности последовательной и параллельной ветвей по отдельности в случае фиксированных FLOP. Судя по результатам, одноветвевая структура имеет наилучшую производительность, а падение производительности наиболее заметно на устройствах с графическим процессором.
-
G4: Element-wise operations are non-negligible
В статье анализируется потребление времени ShuffleNetV1 и MobileNetV2 и делается вывод о том, что потребление поэлементных операций (ReLU, AddTensor, AddBias и т. д.) нельзя игнорировать, особенно на устройствах с графическим процессором. Хотя эти операции имеют низкие FLOP, их MAC относительно высок.
В реальном сравнении устройств, в случае фиксированных FLOP, использование большего количества поэлементных операций приведет к снижению производительности сети.
Наконец, суммируйте основные принципы проектирования сети, содержащиеся в документе:
- Свертка с использованием одних и тех же входных и выходных измерений
- Понимание потери свертки пакетов
- уменьшить количество ветвей
- Сокращение поэлементных операций
ShuffleNet V2: an Efficient Architecture
Как упоминалось выше, как точечная групповая свертка ShuffleNetV1, так и результат узкого места улучшат MAC, что приведет к значительным вычислительным потерям. Для достижения высокой производительности и высокой точности ключом является получение крупноразмерной свертки с одинаковыми входными и выходными данными без плотной свертки и чрезмерной группировки.
Единичная структура ShuffeNetV1 показана на рисунке 3ab.Для достижения вышеуказанной цели операция разделения каналов добавлена на основе V1, как показано на рисунке 3c. В начале каждого раздела карта признаков делится наа также
две части. Согласно G3, ветвь передается прямо назад. Согласно G1, другая ветвь содержит 3 свертки с одинаковыми входной и выходной размерностями. По G2 групповая свертка больше не используется, а начало блока уже эквивалентно групповой свертке. После завершения операции свертки признаки объединяются, восстанавливаются до входного размера единицы (в соответствии с G1), а затем выполняется операция перемешивания каналов. Здесь нет операции поэлементного сложения, которая соответствует G4.При реализации concat/перетасовка каналов/разделение каналов комбинируются для дальнейшего повышения производительности.
Немного изменена операция пространственной субдискретизации, как показано на рисунке 3d, удалена операция разделения каналов, поэтому размер выходного сигнала будет удвоен.
Аналогично ShuffleNetV1, установитеstage2-4 — это структура сложенного блока ShuffleNet, и один добавляется перед глобальным объединением.
Свертка, чтобы помочь слиянию функций. ShuffleNetV2 не только быстр, но и имеет низкую точность.В основном он выигрывает от двух аспектов.Во-первых, высокая производительность модели позволяет использовать большие размерности и пропускную способность сети.Во-вторых, разделение каналов позволяет некоторым функциям проходить непосредственно через блок. повторное использование для DenseNet.
В документе визуально сравнивается степень повторного использования функций DenseNet и ShuffleNetV2.В DenseNet соединения соседних слоев сильнее, чем в других слоях, что означает наличие избыточности в плотных соединениях всех слоев. В ShuffleNet влияние между слоями определяетсяЗатухание производится при кратности , что имеет определенное сходство с DenseNet.
Experiment
Для сравнения примените устройство ShuffleNetV2 к большой сети.
Сравните производительность ShuffleNetV2 как основы сети обнаружения.
Сравнение производительности с основными классификационными сетями разных размеров.
Conclusion
Исходя из практики и руководствуясь фактической скоростью рассуждений, в документе обобщаются 5 основных принципов проектирования облегченных сетей и предлагается ShuffleNetV2 в соответствии с основными требованиями, которые хорошо учитывают точность и скорость, а операция разделения каналов очень привлекательна. , чтобы добиться эффекта повторного использования функций, аналогичного DenseNet.
CONCLUSION
Серия ShuffleNet является очень важной серией в облегченной сети.ShuffleNetV1 предлагает операцию перетасовки каналов, которая позволяет сети использовать сгруппированные свертки для ускорения, в то время как ShuffleNetV2 переворачивает большую часть дизайна V1.С фактической точки зрения, это предлагает операцию разделения каналов, повторное использование функций выполняется при ускорении сети, и достигаются хорошие результаты.
Если эта статья была вам полезна, ставьте лайк или смотрите~
Для получения дополнительной информации, пожалуйста, обратите внимание на общедоступную учетную запись WeChat [Примечания по разработке алгоритмов Xiaofei].