Развитие структуры сети CNN - достаточно понять эту статью

1cdd1d1a8b0a727bf283d519e93d7598.png

来源:深度学习爱好者‍‍‍‍‍‍‍‍‍
本文约3000字,建议阅读10分钟
本文为你介绍CNN的基本部件及经典网络结构。

Полное название CNN — «Сверточная нейронная сеть» (convolutional neuronet network). Нейронная сеть — это математическая или вычислительная модель, которая имитирует структуру и функцию биологической нейронной сети (центральной нервной системы животных, особенно мозга).

Автор丨zzq@知识

Ссылка 丨https://zhuanlan.zhihu.com/p/68411179

1. Введение в основные компоненты CNN

1. Локальное рецептивное поле

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

2. Объединение

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

3. Функция активации

Функция активации используется для добавления нелинейности. Общие функции активации включают sigmod, tanh и relu.Первые две обычно используются в полносвязных слоях, а relu обычно используется в сверточных слоях.

4. Полностью связанный слой

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

2. Классическая сетевая структура

1. Ленет5

Он состоит из двух сверточных слоев, двух объединяющих слоев и двух полносвязных слоев. Все ядра свертки имеют размер 5 × 5, шаг = 1, а слой объединения использует максимальное объединение.

329783ee4a444a3aa4bb0fc6fac27c68.jpeg

2. АлексНет

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

AlexNet использует ReLU в качестве функции активации, предотвращает переоснащение с помощью отсева и улучшения данных, реализует двойное графическое ядро, использует LRN.

c0f444a4371c33527aee4fc394addeee.jpeg 3258fa29ac8ef75f95a2af8862f5efab.jpeg

3. ВГГ

Все стеки ядер свертки 3×3 используются для имитации большего рецептивного поля и более глубокого сетевого уровня. VGG имеет пять свёрток, и за каждой свёрткой следует слой максимального объединения. Количество ядер свертки постепенно увеличивается.

Резюме: LRN малоэффективен, чем глубже сеть, тем лучше, свертка 1×1 тоже очень эффективна, но не так хороша, как 3×3.

7853433b823b31ff7b00cfdec9242808.jpeg

4. GoogLeNet (начало v1)

Мы узнали от VGG, что чем глубже сетевой уровень, тем лучше эффект. Однако по мере того, как модель становится глубже и добавляется больше параметров, это упрощает переоснащение сети и требует предоставления большего количества данных для обучения; кроме того, сложная сеть означает больше вычислений, большее хранилище модели и больше данных для обучения.Слишком много ресурсов. , и недостаточно быстро. GoogLeNet проектирует структуру сети с точки зрения уменьшения параметров.

GoogLeNet увеличивает сложность сети за счет увеличения ширины сети, чтобы сеть могла выбирать, как выбрать ядро ​​свертки. Этот дизайн уменьшает параметры, улучшая приспособляемость сети к нескольким масштабам. Использование свертки 1×1 может увеличить сложность сети без увеличения параметров.

3265f44d84f06a9b250ff1b9f5219c1c.jpeg

Начало-v2

Добавить технологию пакетной нормализации на основе v1.В тензорном потоке лучше использовать BN перед функцией активации, заменить свертки 5×5 на две последовательные свертки 3×3, чтобы сделать сеть глубже и иметь меньше параметров.

Начало-v3

Основная идея состоит в том, чтобы разложить ядро ​​свертки на более мелкие свертки, например разложить 7×7 на два ядра свертки 1×7 и 7×1, чтобы уменьшить параметры сети и увеличить глубину.

Структура Inception-v4

ResNet введен для ускорения обучения и повышения производительности. Но когда количество фильтров слишком велико (> 1000), обучение очень нестабильно, вы можете добавить активировать коэффициент масштабирования, чтобы облегчить

5. Восприятие

Предложен на основе Inception-v3, основная идея — свертка с разделением каналов, но есть отличия. Параметры модели несколько уменьшены, но точность выше. Xception сначала выполняет свертку 1×1, а затем свертку 3×3, то есть сначала происходит объединение каналов, а затем выполняется пространственная свертка. С глубиной все наоборот: сначала выполняется пространственная свертка 3×3, а затем выполняется канальная свертка 1×1. Основная идея состоит в том, чтобы следовать допущению: свертка канала должна быть отделена от свертки пространства во время свертки. MobileNet-v1 использует порядок по глубине и добавляет BN и ReLU. Количество параметров Xception не сильно отличается от Inception-v3, он увеличивает ширину сети и направлен на повышение точности сети, в то время как MobileNet-v1 направлен на уменьшение сетевых параметров и повышение эффективности.

79698f12f5bd942cc8f6388bd750f089.jpeg 9b9593dd911f7dd5cfa067fb4550f57a.jpeg

6. Серия Мобайлнет

V1

Используйте свертки, разделяемые по глубине; откажитесь от слоя объединения и используйте свертки шаг=2. Количество каналов ядра свертки стандартной свертки равно количеству каналов входной карты признаков, количество каналов ядра глубинной свертки равно 1, есть еще два параметра, которыми можно управлять, a управляет количество входных и выходных каналов, p управляет разрешением изображения (карты признаков).

3da76cc60ebf3ed3fe62e694854a8667.jpeg e30e9b4655a6966e9fd78a3005abe25a.jpeg

v2

По сравнению с v1 есть три отличия: 1. Введена остаточная структура 2. Перед dw выполняется свертка 1×1 для увеличения количества каналов карты признаков, что отличается от общего остаточного блока 3. Отброшен ReLU после окончания точечной функции, измененной на линейную функцию активации, чтобы предотвратить повреждение функций ReLU. Это связано с тем, что функции, извлеченные слоем dw, ограничены количеством входных каналов.Если используется традиционный остаточный блок, функции, которые могут быть извлечены dw, будут меньше, если используется традиционный остаточный блок.Поэтому он вначале не сжимается, а сначала расширяется. Но когда используется расширение-свертка-сжатие, то после сжатия будет проблема, ReLU уничтожит кольцевые признаки, а признаки уже были сжаты, и после ReLU часть признаков потеряется, поэтому следует использовать линейный.

5161e7a54b8f73ce8d17982845d67cdd.jpeg 9eda3b48f0ef9b9d367e57234cb2214b.jpeg

V3

Комбинация дополнительных технологий поиска: NAS с ограниченными ресурсами выполняет поиск по набору модулей, а NetAdapt выполняет локальный поиск; улучшение структуры сети: перемещение последнего среднего слоя пула вперед и удаление последнего сверточного слоя, а также введение функции активации h-swish, изменение начального фильтра банк.

V3 сочетает в себе свертку v1 с разделением по глубине, антиостаточную структуру v2 с линейным узким местом и облегченную модель внимания структуры SE.

441d91c84b775d3ee853cd72f99d319c.jpeg 255d78565d369e05a62da23544c5226b.jpeg 8213fa7fcf0b005fecb9c86ebf7bd083.jpeg

7. Эффнет

EffNet является усовершенствованием MobileNet-v1.Основная идея заключается в следующем: разбить уровень dw MobileNet-1 на два слоя dw 3x1 и 1x3, чтобы объединение использовалось после первого уровня, тем самым уменьшая второй уровень. Расчеты. EffNet меньше по размеру и более совершенен, чем модели MobileNet-v1 и ShuffleNet-v1.

1670e5dd99ebd2b77d91c9c163eefcfe.jpeg 6c60e6d43a7d5b103a18f5a1a10bdc80.jpeg

8. Эффективная сеть

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

3a4a8392fc8eca5495282cae570d69e6.jpeg

9. Ренет

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

558fe9b8a8c196bf80fde381534d2f3e.jpeg

10. RESNeXt

Комбинация разделения+преобразования+объединения на основе ResNet и Inception. Но эффект лучше, чем ResNet, Inception, Inception-ResNet. Можно использовать групповую свертку. Вообще говоря, есть три способа увеличить выразительность сети: 1. Увеличить глубину сети, например, от AlexNet до ResNet, но результаты экспериментов показывают, что улучшение, приносимое глубиной сети, становится все меньше и меньше; 2. Увеличьте ширину сетевого модуля, но ширина Увеличение неизбежно приведет к экспоненциальному увеличению шкалы параметров, и это не является основным дизайном CNN 3. Улучшите дизайн структуры сети CNN, например, серии Inception и ResNeXt. И эксперимент показал, что увеличение Cardinatity, то есть количества одинаковых ветвей в блоке, может лучше улучшить способность выражения модели.

9442545a29afe4aee7cc544fac5b1e0b.jpeg f166a4a1ba18500aaa9e93dab96e4811.jpeg

11. Плотная сеть

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

cb8ba000604fca8350313894c2a588ee.jpeg

12. Сожмите сеть

Предлагаемый пожарный модуль: слой сжатия + слой расширения. Слой сжатия представляет собой свертку 1 × 1, а слой расширения — свертку 1 × 1 и 3 × 3 соответственно, а затем конкатенацию. Параметр сжимает 1/50 от alexnet и 1/510 после сжатия, но точность сравнима с alexnet.

4d2aff36e5ceb4e96a6f09ca35142322.jpeg

13. Серия ShuffleNet

V1

Объем вычислений уменьшается за счет групповой свертки и ядра поточечной групповой свертки 1 × 1, а информация о каждом канале обогащается за счет реорганизации каналов. Xception и ResNeXt менее эффективны в моделях небольших сетей, поскольку большое количество сверток 1×1 потребляет ресурсы, поэтому групповая свертка «точка за точкой» предлагается для снижения вычислительной сложности, но использование групповой свертки «точка за точкой» будет иметь побочные эффекты. эффекты, поэтому в соответствии с этим предлагается перетасовка каналов для облегчения потока информации. Хотя dw может уменьшить количество вычислений и параметров, на маломощных устройствах, по сравнению с интенсивными операциями, эффективность вычислений и доступа к хранилищу хуже, поэтому shufflenet стремится использовать глубокую свертку на узких местах, чтобы максимально снизить накладные расходы. .

c4947fcf9c232f3f2d67098c73b4754d.jpeg

v2

Рекомендации по проектированию структуры сети CNN, чтобы сделать нейронные сети более эффективными:

  • Сохранение количества входных каналов равным количеству выходных каналов минимизирует затраты на доступ к памяти;

  • Использование слишком большого количества групп в групповой свертке увеличит стоимость доступа к памяти;

  • Слишком сложная структура сети (слишком много ответвлений и базовых блоков) уменьшит параллелизм сети;

  • Нельзя игнорировать потребление операции по элементам.

bd8b6887aabc24b9b2fbed626420170f.jpeg

14. ДЕКЛАРАЦИЯ

fe958e84f98e0a749945bb75b597ecd6.jpeg

15. СКНет

48a2e75319a9398ed069b49ee0f4314d.jpeg

Монтажер: Хуан Цзиян

275935fa6ab9b7eb0969ae5ae58c687f.png

Supongo que te gusta

Origin blog.csdn.net/tMb8Z9Vdm66wH68VX1/article/details/131950167
Recomendado
Clasificación