От Inception v1, v2, v3, v4, RexNeXt до Xception, MobileNets, ShuffleNet, MobileNetV2

искусственный интеллект Нейронные сети
Заявление об авторских правах: эта статья является оригинальной статьей блоггера и не может быть воспроизведена без разрешения блоггера. https://blog.csdn.net/qq_14845119/article/details/73648100

v1:Going deeper with convolutions

Сеть Inception v1 в основном предлагает структуру Inceptionmodule (объединяются 1*1, 3*3, 5*5 конв и пул 3*3), а самой большой изюминкой является введение 1 от NIN (сеть в сети).* 1 конв, структура представлена ​​на рисунке ниже, репрезентативная работа GoogleNet

Предположим, что размер предыдущего слоя 28*28*192, тогда

Размер гири a, 1*1*192*64+3*3*192*128+5*5*192*32=387072

Размер выходной карты характеристик составляет 28*28*64+28*28*128+28*28*32+28*28*192=28*28*416.

Размер весов b, 1*1*192*64+(1*1*192*96+3*3*96*128)+(1*1*192*16+5*5*16*32 )+1 *1*192*32=163328

Размер выходной карты признаков b, 28*28*64+28*28*128+28*28*32+28*28*32=28*28*256

Пишу сюда, не могу отделаться от ощущения гениальности 1*1 conv Из приведенных выше данных видно, что с одной стороны уменьшаются веса, а с другой стороны уменьшается размерность.

Основные моменты Inception v1 резюмируются следующим образом:

(1) Функция, совместно используемая сверточным слоем, которая может реализовать уменьшение и увеличение размерности в направлении канала.Что касается уменьшения или увеличения, это зависит от количества каналов (количества фильтров) сверточного слоя.В Inception v1, объем 1*1 Продукт используется для уменьшения размерности, уменьшения размера весов и размерности карты признаков.

(2) Уникальная функция свертки 1*1, так как свертка 1*1 имеет только один параметр, это эквивалентно созданию масштаба для исходной карты признаков, и этот масштаб изучается путем обучения, что, несомненно, повысит точность распознавания .

(3) Увеличьте глубину сети

(4) Увеличить ширину сети

(5) Одновременно используется свертка 1*1, 3*3, 5*5, что повышает адаптивность сети к масштабу

На следующем рисунке показана структура сети googlenet:

Здесь есть 2 места, на которые стоит обратить внимание:

(1) Для обеспечения сходимости вся сеть имеет 3 потери

(2) Перед последним полностью подключенным слоем использовался глобальный средний пул.Если глобальный пул используется правильно, есть еще много возможностей для игры.


v2:Batch Normalization: Accelerating Deep Network Training by ReducingInternal Covariate Shift

Сеть Inception v2 представляет собой улучшенную версию с добавленным слоем BN (Batch Normalization) и свёрткой 2 3*3 вместо 1 5*5.GoogleNet.

Основные моменты Inception v2 приведены ниже:

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

(2) Используйте 2 последовательных преобразования 3 * 3 для замены 5 * 5 в начальном модуле, тем самым увеличивая глубину сети, а общая глубина сети увеличивается на слои 9. Недостатком является то, что веса увеличиваются на 25%, а расчет расход на 30%.


v3:Rethinking the InceptionArchitecture for Computer Vision

Сеть Inception v3, в основном на основе v2, предлагает сверточную декомпозицию (факторизацию), репрезентативной работой является GoogleNet версии Inceptionv3.

Основные моменты Inception v3 приведены ниже:

(1) Разложить 7*7 на две одномерные свертки (1*7, 7*1), а 3*3 - то же самое (1*3, 3*1), Это преимущество может не только ускорить вычисление ( Избыточная вычислительная мощность может быть использована для углубления сети), а одна конв может быть разделена на две конв, что еще больше увеличивает глубину сети и увеличивает нелинейность сети.Более совершенный дизайн 35*35/17* 17/8* 8 модулей.

(2) Увеличьте ширину сети, и вход сети изменится с 224*224 на 299*299.

 

v4:Inception-v4,Inception-ResNet and the Impact of Residual Connections on Learning 

Inception v4 в основном использует остаточное соединение (Residual Connection) для улучшения структуры v3, например Inception-ResNet-v1, Inception-ResNet-v2, Inception-v4.

Остаточная структура в реснете выглядит следующим образом.Эта структура очень умно спроектирована.Это просто гениальный ход.По-другому делается с использованием исходного слоя и карты признаков, которая прошла через 2 объемных базовых слоя. Улучшение Inception-ResNet заключается в использовании вышеуказанного модуля Inception для замены conv+1*1 conv в ярлыке resnet.

Основные моменты Inception v4 приведены ниже:

(1) Сочетание начального модуля и ResidualConnection, предложенное Inception-ResNet-v1,Inception-ResNet-v2, чтобы тренировочное ускорение сходилось быстрее и точность была выше.

Результаты испытаний ILSVRC-2012 следующие (одна культура),



(2) Разработана более глубокая версия Inception-v4, и эффект сравним с Inception-ResNet-v2.

(3) Размер сетевого входа такой же, как у V3, по-прежнему 299*299.

Aggregated ResidualTransformations for Deep Neural Networks

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

(1) Увеличение мощности лучше, чем увеличение ширины или глубины модели.

(2) По сравнению с ResNet, ResNeXt имеет меньше параметров, лучший эффект, более простую структуру и более удобный дизайн.

Среди них левое изображение — это модуль ResNet, а правое изображение — это модуль ResNeXt, который представляет собой идею разделения-преобразования-слияния.

 

Xception: DeepLearning with Depthwise Separable Convolutions

В этой статье в основном предлагается Xception (Extreme Inception), основанный на Inception V 3. Основная идея - свертка разделения каналов (операция свертки с разделением по глубине). наконец понял

(1) Существует небольшое уменьшение параметров модели, и уменьшение очень небольшое, а именно:

(2) Точность улучшена по сравнению с Inception V3.Точность в ImageNET выглядит следующим образом:

Во-первых, операция свертки в основном выполняет два преобразования:

(1) пространственные измерения, пространственное преобразование

(2) измерение канала, преобразование канала

И Xception должен поднять шумиху вокруг этих двух трансформаций. Различия между Xception и Inception V3 заключаются в следующем:

(1) Разница в порядке операций свертки

Inception V3 сначала делает свёртку 1*1, а потом свёртку 3*3, так что сначала происходит слияние каналов, то есть свёртка каналов, а потом пространственная свёртка, а Xception как раз наоборот, сначала пробел, а затем свертка канала 1*1.

(2) Наличие или отсутствие RELU

Это отличие состоит в том, что Inception V3 имеет RELU-операции в каждом модуле, а Xception не имеет RELU-операций в каждом модуле.

MobileNets: EfficientConvolutional Neural Networks for Mobile Vision Applications

 

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

 

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

Разница между традиционной сверткой и сверткой с разделением по глубине заключается в следующем:

Предположим, что размер карты входных объектов равен DF * DF, размерность — M, размер фильтра — DK * DK, размерность — N, отступ — 1, а шаг — 1. но,

Для исходной операции свертки число выполняемых матричных операций равно DK · DK · M · N · DF · DF, а параметры ядра свертки равны DK · DK · N · M

Количество матричных операций, необходимых для отделимых по глубине сверток, равно DK · DK · M · DF · DF + M · N · DF · DF, а параметры ядра свертки равны DK · DK · M+N · M

Поскольку процесс свертки — это, в основном, процесс уменьшения пространственных размерностей и увеличения размеров каналов, то есть N>M, значит, DK·DK·N·M>DK·DK·M+N·M.

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

В caffe отделяемые по глубине свертки в основном реализуются групповыми операциями в слое свертки, а размер модели base_line составляет около 16M.

Структура сети mobileNet выглядит следующим образом:


ShuffleNet: AnExtremely Efficient Convolutional Neural Network for Mobile Devices

 

В этой статье в основном сделано 1 улучшение на базе mobileNet:

mobileNet выполняет только глубокую свертку 3 * 3 свертки, в то время как свертка 1 * 1 по-прежнему является традиционным методом свертки, и все еще существует много избыточности.ShuffleNet использует свертка 1 * 1 для перемешивания и группировки на этой основе. перемешивание и точечная групповая свертка, и, наконец, улучшает скорость и точность по сравнению с mobileNet.

Как показано ниже,

(a) является исходной структурой mobileNet, и каждая группа не обменивается информацией друг с другом.

(b) Перетасуйте карту объектов

(c) — результат после перетасовки каналов.


Основная идея Shuffle заключается в следующем: предполагается, что вводятся 2 группы, а выводятся 5 групп.

|группа 1 |группа 2 |

|1,2,3,4,5 |6,7,8,9,10 |

Преобразование в матрицу с матрицей 2*5

1 2 3 4 5

6 7 8 9 10

Транспонировать матрицу, матрицу 5*2

1 6

2 7

3 8

4 9

5 10

сглаженная матрица

|1 группа |2 группа |3 группа |4 группа |5 группа |

|1,6       |2,7       |3,8       |4,9       |

Структура блоков ShuffleNet выглядит следующим образом:

(a) является узким местом с глубинной сверткой (DWConv)

(б) На основании (а) выполняются точечно-групповая свертка (GConv) и перетасовка каналов

(c) Окончательный ShuffleNetunit с пулом AVG и операциями concat


MobileNetV2: Inverted Residuals and Linear Bottlenecks 

Есть 2 основных вклада:

1. Предложена инвертированная остаточная структура (Inverted остаточные значения)

Поскольку версия MobileNetV2 использует остаточную структуру, она похожа на остаточную структуру реснета, производного от реснета, но отличается.

Поскольку Resnet не использует углубленное преобразование, количество функциональных каналов перед входом в точечное преобразование относительно велико, поэтому в остаточном модуле используется уменьшение размерности в 0,25 раза. Поскольку MobileNet v2 имеет преобразование по глубине, количество каналов относительно невелико, поэтому в остатке используется 6-кратное увеличение размерности.

Подводя итог, 2 балла разницы

(1) Остаточная структура ResNet — это 0,25-кратное уменьшение размерности, а остаточная структура MobileNet V2 — 6-кратное увеличение размерности.

(2) Свертка 3*3 в остаточной структуре ResNet — это обычная свертка, а свертка 3*3 в MobileNet V2 — это свертка по глубине.

 

Между MobileNet v1 и MobileNet v2 есть 2 различия:

(1) Перед входом в свертку 3*3 версия v2 сначала выполняет точечное обновление измерения conv 1*1 и проходит через RELU.

(2) После свертки 1*1 операция RELU не выполняется.

2, предлагаемые линейные узкие места (линейные узкие места)

Почему нет РЕЛУ?

Сначала посмотрите на функцию RELU. RELU может отображать все отрицательные значения в 0, что очень нелинейно. На картинке ниже показан тест бумаги. Когда размерность относительно низкая 2,3, потеря информации при использовании RELU более серьезна. Когда одно измерение выше 15,30, потеря информации относительно невелика.

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

Структура сети MobileNet v2:


Среди них t представляет коэффициент расширения канала, c представляет количество выходных каналов,

n представляет собой количество повторений единицы, s представляет собой шаг скользящего шага

В модуле узкого места модули с шагом=1 и шагом=2 показаны на рисунке выше, и только модуль с шагом=1 имеет остаточную структуру.

 

результат:

MobileNet v2 быстрее и точнее, чем MobileNet v1

references:

A.GitHub.IO/2016/03/один…

GitHub.com/so EA ver/Powder…

GitHub.com/Facebook Рес…

GitHub.com/Но я так по нему скучаю/десять…

GitHub.com/stone/mobi… GitHub.com/stone/mobi…

GitHub.com/tensorflow/…

GitHub.com/Холмс С-для-…

GitHub.com/camel007/CA…

GitHub.com/stone/mobi…

GitHub.com/Китай KO OK/M…