NetAdapt: ​​автоматизированный метод упрощения сети для MobileNetV3 | ECCV 2018

алгоритм
NetAdapt: ​​автоматизированный метод упрощения сети для MobileNetV3 | ECCV 2018

Идея NetAdapt гениальна и эффективна.Он делит цель оптимизации на несколько небольших целей и вводит в процесс оптимизации фактические индикаторы, которые могут автоматически генерировать серию упрощенных сетей, связанных с платформой.Лучшая производительность с точки зрения и задержки


Источник: Заметки по разработке алгоритмов Xiaofei Public Account.

Диссертация: NetAdapt: ​​Адаптация нейронной сети с учетом платформы для мобильных приложений

Introduction


Существует два основных метода облегченных сетей, а именно структурная оптимизация и ручное квантование, однако ни один из двух вышеперечисленных методов не может гарантировать хорошую работу сети на разных устройствах, и большинство современных методов основаны на косвенных показателях (расчетах). . количество/параметр количество) в качестве ориентира и часто отличается от фактических результатов.

  С этой целью в документе предлагается автоматизированный метод упрощения сети, связанный с платформой NetAdapt, Логика показана на рисунке 1, и сеть, которая соответствует ожидаемому потреблению ресурсов, медленно получается с помощью итеративной оптимизации. NetAdapt вводит прямые индикаторы ресурсов в процесс оптимизации, одновременно поддерживает несколько ограничений ресурсов и может быстро искать упрощенные сети, связанные с платформой.

Methodology: NetAdapt


Problem Formulation

  Основной целью NetAdapt является решение следующих невыпуклых задач оптимизации с ограничениями:

NetNetэто сеть, упрощенная по сравнению с исходной предварительно обученной сетью,Acc()Acc(\cdot)расчет точности,Resj()Res_j (\cdot)это ресурсjjрасчет расхода,BudjBud_jэто ресурсjjОбщая сумма также является ограничением оптимизации, которое может быть задержкой, потреблением энергии, памятью или другим.
NetAdapt делит вышеуказанные цели оптимизации на несколько небольших целей для итеративной оптимизации:

NetiNet_iпервыйiiСамая точная сеть, созданная следующей итерацией,Net0Net_0является начальной предварительно обученной моделью. По мере увеличения количества итераций потребление ресурсов сети становится меньше,ΔRi,j\Delta R_{i,j}представлятьiiресурсы в следующей итерацииjj, общая идея аналогична планированию скорости обучения. когдаResj(Neti1)ΔRi,j=BudjRes_j(Net_{i-1})-\Delta R_{i,j}=Bud_jКогда все ресурсы удовлетворены, алгоритм завершает работу, выводится оптимальная сеть в каждом раунде итеративной оптимизации, и из нее выбирается подходящая сеть.

Algorithm Overview

  Предполагая, что текущей целью оптимизации является только задержка, потребление данных можно оптимизировать, уменьшив количество ядер в сверточном слое или полносвязном слое.Логика алгоритма NetAdapt показана в алгоритме 1.

Подробности каждой итерации показаны на рисунке 2. Количество сохраняемых ядер (выберите количество фильтров) и оставшихся ядер (выберите, какие фильтры) выбираются слой за слоем (или сетевой единицей), а выбор количества ядер основан на об эмпирической оценке (будет обсуждаться позже), обратите внимание, что мы решили удалить все ядро ​​вместо некоторых его весов, таких как512×3×3512\times 3\times 3Ядро свертки сводится к256×3×3256\times 3\times 3Ядро свертки и соответствующая карта функций должны быть удалены после удаления ядра. Оптимизация каждого слоя создает упрощенную сеть, которая затем подвергается кратковременной точной настройке (Short-Term Fine-Tune) для восстановления точности.
После завершения вышеуказанных операций одна итерация NetAdapt производитKKВыбирается упрощенная сеть, и сеть с наивысшей степенью точности выбирается в качестве начальной сети для следующей итерации (выбрать самую высокую точность). Если сеть текущей итерации удовлетворила требованиям к ресурсам, выйдите из оптимизации и выполните точную настройку оптимальной сети, созданной в каждой итерации, до сходимости (долгосрочная точная настройка).

Algorithm Details

  • Choose Number of Filters

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

  • Choose Which Filters

  Есть много способов решить, какое ядро ​​оставить, в статье используется простой метод, основанный на величине, то есть выборNNL2-норма наибольшего ядра,NNопределяется вышеописанными шагами.

  • Short-/Long-Term Fine-Tune

  В каждой итерации NetAdapt используется относительно небольшой (краткосрочный) доводочный поиск упрощенной сети для восстановления точности, что очень важно для небольших сетей. Из-за массового сокращения количества ресурсов, если этого не сделать, точность сети может упасть до нуля, в результате чего алгоритм выберет неправильную сеть. По мере продвижения алгоритма, хотя сеть будет продолжать обучаться, она не достигла точки сходимости, поэтому, когда будет получена окончательная серия адаптивных сетей, используйте больше раз (долгосрочную) тонкую настройку до сходимости в качестве последнего шага. .

Fast Resource Consumption Estimation

  В процессе адаптации для упрощения потребления ресурсов сети требуются офлайн-вычисления, которые могут быть медленными и трудно распараллеливаемыми из-за ограниченного оборудования, что станет вычислительным узким местом алгоритма.

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

  На рисунке 4 сравнивается расчетная задержка и фактическая задержка во время оптимизации MobileNetV1, и видно, что эти два значения сильно коррелируют.

Experiment Results


  Сравните эффект упрощения NetAdapt и других методов упрощения сети на небольшом MobileNetV1 (50%).

  Сравнение NetAdapt и других методов упрощения сети на небольшом MobileNetV1 (100%) на разных устройствах.

Conclustion


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



Если эта статья была вам полезна, ставьте лайк или смотрите~

Для получения дополнительной информации, пожалуйста, обратите внимание на общедоступную учетную запись WeChat [Примечания по разработке алгоритмов Xiaofei].

work-life balance.