EfficientDet - это усовершенствованная версия EfficientNet, поэтому в первую очередь мы рассмотрим последнюю.

EfficientNet

В документе рассматривается проблема данной базовой модели, то есть архитектуры CNN, как мы можем масштабировать модель для повышения точности. Есть 3 способа масштабирования модели.

  1. Разрешение - входное разрешение, например (224 224) - (512 512)
  2. Глубина - количество конв-блоков (слоев), например. Resnet-18 в Resnet-101
  3. Ширина - количество каналов в каждом конв-блоке, например. 8, 16, 32 до 16, 32, 64

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

Таким образом, существует взаимосвязь между разрешением, глубиной и шириной тензоров и сети. В большинстве случаев CNN можно смоделировать как составную функцию F тензора формы H, W, C. А поскольку большинство моделей повторяют свои блоки conv, глубину сети можно смоделировать с помощью того, сколько раз (L) мы применяем F к тензору. Таким образом, мы можем увеличить H, W, C и L.

Они вводят решение под названием составное масштабирование, которое зависит от 4 гиперпараметров. Это ϕ, α, β, γ, где ϕ - сложный коэффициент масштабирования, определяемый пользователем на основе доступных вычислительных ресурсов. И α, β, γ определяют относительное соотношение масштаба для глубины, ширины и разрешения соответственно. FLOPS CNN пропорционален α, β², γ². Прочтите приложение, чтобы узнать, как это сделать. Если предположить, что у нас вдвое больше ресурсов, тогда

И любое дальнейшее масштабирование следует за формой

где ϕ - гиперпараметр, выбранный пользователем. Они также представляют новую базовую архитектуру, найденную с помощью поиска нейронной архитектуры (например, AutoML). Используя эту базовую модель, они выполняют поиск по сетке наиболее эффективных значений для α, β, γ, которые равны 1,2, 1,1, 1,15 соответственно. Затем они используют одни и те же значения для всех значений ϕ. Несмотря на то, что отдельный поиск по сетке для каждого варианта даст лучшие значения и, следовательно, лучшую производительность, не стоит тратить время и вычисления.

Главное наблюдение - масштабирование разрешения, ширины и глубины вместе в соотношении α, β, γ для получения максимальной точности.

EfficientDet

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

На изображении выше восходящая линия представляет собой традиционную основу CNN. И сверху вниз представляет объединение функций в нескольких масштабах. Идея бокового соединения состоит в том, чтобы объединить функциональные карты с широким набором функций, но с низким разрешением, с картами с высоким разрешением, но с менее значимыми характеристиками. Блок прогноза применяет свертку 3x3 и создает окончательные карты функций, на которых могут быть выполнены дальнейшие операции (обнаружение, сегментация).

Теперь, когда FPN ясна, перейдем к EfficientDet. В документе вносятся два основных изменения в EfficientNet, а именно BiFPN и новый метод составного масштабирования. EfficientDet использует ту же магистраль, что и EfficientNet, но добавляет двунаправленную пирамидную сеть функций, чтобы помочь в объединении функций в нескольких масштабах.

BiFPN имеет 5 модификаций по сравнению с обычным FPN.

  1. Вместо только нисходящей функции, он добавляет еще одну восходящую ветвь слияния функций.
  2. В нем пропущены соединения от исходной карты объектов к объединенной карте объектов.
  3. Узлы с одним входом удаляются, потому что они не так сильно сливаются, как другие узлы.
  4. Весь модуль повторяется несколько раз
  5. Характеристики не суммируются напрямую, вместо этого используется средневзвешенное значение, надеясь, что карты функций с разным разрешением способствуют объединению с разной емкостью. Неограниченные веса создают проблемы с обратным распространением, поэтому нам нужно его нормализовать. Они попытались применить softmax к значениям веса, что сработало, но замедлило тренировку. Таким образом, для нормализации весов используется простое среднее значение после повторной активации.

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

Приложение

Пусть T1 и T2 - входной и выходной тензор с размерностями H, W, C1 и H, W, C2 соответственно. Количество операций в секунду, необходимое для свертки с размером ядра K, K, равно

Примечание: количество ядер определяется количеством каналов выходного тензора, то есть в данном случае C2. Таким образом, удвоение количества каналов приводит к 4-кратному увеличению числа FLOPS.