Приглашаем вас ознакомиться с компьютерным видением серии статей — DenseNet
Если я смогу контролировать свои эмоции, я обязательно сдержу свое сердце гурмана.
введение
бумага:Densely Connected Convolutional Networks
Эта статья призвана переосмыслить значение короткого пути и повторного использования функций, а также представить идею плотного соединения.
DenseNet основан на ResNet (Обзор ResNet?, Реснет Классик! ! ! ) для дальнейшего расширения сетевого подключения.Для любого слоя сети карты объектов всех слоев перед слоем являются входными данными этого слоя, а карты объектов этого слоя являются входными данными всех последующих слоев.
Резюме:
-
Остаточные соединения делают CNN глубже, сильнее и эффективнее;
-
В этой статье предлагается DenseNet, которая характеризуется передним слоем как соединением всех последующих слоев;
-
Обычно уровень L имеет L соединений, а DenseNet — L*(L+1)/2;
-
Передний слой используется как вход для всех слоев позади;
-
Преимущества DenseNet уменьшают исчезновение градиента, улучшают распространение признаков, улучшают повторное использование признаков и уменьшают весовые параметры;
-
Проверено на 4 наборах данных и выполнено SOTA.
Сверточные нейронные сети могут быть более глубокими, точными и более эффективными, если вы замкнете накоротко слои, близкие к входу и выходу. Наконец, предлагается плотная сверточная сеть (DenseNet).Каждый слой DenseNet подключен к следующим слоям в режиме прямой обратной связи.В отличие от традиционной сверточной нейронной сети с L слоями, которая имеет L соединений, каждый слой в DenseNet имеет L соединений , Он подключен к уровню после него, поэтому DenseNet уровня L имеет отношения соединения L (L + 1)/2.
Оценивая нашу структуру по четырем тестам распознавания объектов (CIFAR-10, CIFAR-100, SVHN и ImageNet), можно обнаружить, что DenseNet обеспечивает более высокую производительность при уменьшении объема вычислений.
Бумажные детали
Плотная связь
Проиллюстрирована схема получившегося DenseNet. В каждом блоке выход каждого слоя напрямую связан со входом всех последующих слоев. Чтобы обеспечить максимальный поток информации между слоями в сети, мы соединяем все слои (с соответствующими размерами карт объектов) напрямую друг с другом. Чтобы сохранить характер прямой связи, каждый слой получает дополнительные входные данные от всех предыдущих слоев и передает свою собственную карту объектов всем последующим слоям.
ResNets и Highway Networks обходят сигналы от одного уровня к другому через идентификационные соединения. Стохастическая глубина укорачивает ResNet за счет случайного удаления слоев во время обучения, чтобы обеспечить лучшую информацию и градиентный поток.
Чтобы обеспечить максимальный поток информации между слоями в сети, мы соединяем все слои (с соответствующими размерами карт объектов) напрямую друг с другом. Чтобы сохранить характер прямой связи, каждый слой получает дополнительные входные данные от всех предыдущих слоев и передает свою собственную карту объектов всем последующим слоям.
Самое главное, в отличие от ResNet, мы никогда не объединяем функции путем их суммирования перед передачей их на слой, вместо этого мы объединяем функции путем конкатенации.
- Плотные соединения могут получить больше карт характеристик с меньшим количеством параметров;
- Слой традиционной НС можно рассматривать как состояние, а НС модифицирует или сохраняет состояние;
- ResNet сохраняет информацию посредством сопоставления удостоверений;
- Многие карты функций в ResNet малоэффективны;
- Состояние (карта функций) ResNet такое же, как и у сети RNN;
- DenseNet не выполняет добавление функций и сохранение информации;
- Сеть DenseNet узкая.
Успех Highway Network и ResNet выигрывает от прохода путей.
- В дополнение к углублению сети существует метод расширения для улучшения сети;
- Как и GoogLenet, расширил ResNet.
При достаточной глубине ResNet может улучшить свою производительность. FractalNet также добился конкурентоспособных результатов на нескольких наборах данных, используя широкий спектр сетевых архитектур.
- DenseNet отличается от других сетей увеличением ширины и глубины;
- DenseNet использует мультиплексирование функций для создания простой в обучении и эффективной сети.
Вместо того, чтобы брать репрезентативные возможности из чрезвычайно глубоких или широких архитектур, DenseNet использует потенциал сети за счет повторного использования функций, что приводит к созданию сжатых моделей, которые легко обучать и эффективно использовать параметры. Объединение карт объектов, изученных разными слоями, увеличивает вариацию входных данных последующих слоев и повышает эффективность. В этом заключается основное различие между DenseNet и ResNet. Начальные сети также соединяют функции разных слоев, что проще и эффективнее по сравнению с DenseNet.
Есть и другие заметные инновации в сетевой структуре, которые дали конкурентоспособные результаты. Структура «сеть в сети» (NIN) включает миниатюрные многослойные персептроны в фильтры сверточных слоев для извлечения более сложных признаков. существует В сети с глубоким наблюдением (DSN) внутренние уровни напрямую контролируются вспомогательными классификаторами, которые могут усилить градиенты, полученные более ранними уровнями. Лестничные сети вводят боковые связи в автоэнкодеры, обеспечивая впечатляющую точность в задачах обучения с полуучителем. Сети Deep Fusion Networks (DFN) предлагаются для улучшения потока информации за счет объединения промежуточных уровней различных базовых сетей.
-
Быстрое соединение легче оптимизировать;
-
Недостаток в том, что форма суммирования будет препятствовать поступлению информации;
-
CNN нуждается в субдискретизации, но разрешение в Denseblock не изменится
-
Уменьшение разрешения карты объектов между блоками
-
Используйте переходный слой для выполнения
-
BN+11conv+22 Объединение
- Если после расчета каждого слоя получается k карт признаков, то l-й слой будет иметь k0+k*(l-1) признаков.
граф, поэтому k не может быть слишком большим; 2. Каждый слой DenseNet очень узкий и очень тонкий, например, k=12; 3. k здесь — гиперпараметр Growth Rat; 4. Чем меньше k, тем лучше результат; 5. Объясните DenseNet с точки зрения состояния;
В этой статье есть еще одно явное объяснение узкого места.
Свертка 1 × 1 вводится как узкое место перед каждой сверткой 3 × 3, чтобы уменьшить количество входных карт признаков и тем самым повысить эффективность вычислений.
Чтобы еще больше повысить компактность модели, мы можем уменьшить количество карт признаков для переходных слоев. Если плотный блок содержит m карт объектов, мы позволяем нижележащему переходному слою генерировать выходные карты объектов bθmc, где 0
Во всех наборах данных, кроме ImageNet, DenseNet, используемая в наших экспериментах, имеет три плотных блока, каждый с одинаковым количеством слоев. Перед входом в первый плотный блок над входным изображением выполняется свертка с 16 (или в два раза больше скорости роста DenseNet-BC) выходными каналами. Для сверточных слоев с размером ядра 3 × 3 каждая сторона входных данных дополняется одним пикселем, чтобы сохранить фиксированный размер карты объектов. Мы используем свертку 1×1 с последующим объединением средних 2×2 в качестве переходного слоя между двумя последовательными плотными блоками. В конце последнего плотного блока выполняется глобальное усреднение, за которым следует классификатор softmax. Размеры карт объектов в трех плотных блоках составляют 32×32, 16×16 и 8×8 соответственно. Мы экспериментируем с базовой структурой DenseNet с конфигурациями {L=40,k=12}, {L=100,k=12} и {L=100,k=24}. Для DenseNet-BC оцениваются сети с конфигурациями {L=100, k=12}, {L=250, k=24} и {L=190, k=40}.
В наших экспериментах с ImageNet мы используем структуру DenseNet-BC с 4 плотными блоками на входном изображении 224×224. Исходный сверточный слой состоит из 2k сверток размером 7×7 с шагом 2, количество карт признаков во всех остальных слоях также определяется параметром k. Точная конфигурация сети, которую мы использовали в ImageNet, показана ниже:DenseNet-121 означает, что в сети всего 121 уровень: (6+12+24+16) * 2 + 3 (переходный уровень) + 1 (7x7 Conv) + 1 (уровень классификации) = 121.
переходный слой; Свертка 1 × 1 с последующим объединением средних 2 × 2.
эксперимент
L представляет собой глубину сети, а k — скорость роста. Синий шрифт представляет оптимальный результат, а + представляет увеличение данных для исходного набора данных. DenseNet обеспечивает более низкую частоту ошибок и меньше параметров, чем ResNet.
Обсудить преимущества DenseNet
Вывод: добавить B, добавить C для сохранения параметров.
При той же точности, Dendennet-bc использует только 1/3 параметров.
Точность та же, разница более чем в десять раз по количеству параметров.
Прямым следствием объединения входных данных является то, что карты объектов, изученные каждым уровнем DenseNet, могут использоваться любым последующим уровнем. Этот подход облегчает повторное использование сетевых функций и, таким образом, приводит к более простой модели. DenseNet-BC использует только около 1/3 параметров ResNet для получения аналогичной точности.
Тепловая карта трех плотных блоков показана на следующем рисунке:Средние абсолютные веса фильтра сверточных слоев в хорошо обученной плотной сети. Цвет пикселя (пикселей) кодирует средний уровень весов, соединяющих сверточные слои и плотные области (нормализованный по количеству входных карт объектов). Три столбца, выделенные черными прямоугольниками, соответствуют двум слоям перехода и классификации. Первая строка — это веса, связанные с входным слоем плотного блока.
Можно сделать следующие выводы
-
В том же блоке все слои передают свои веса другим слоям в качестве входных данных. Это показывает, что признаки, извлеченные ранними слоями, могут быть использованы более глубокими слоями под тем же самым плотным блоком;
-
Вес переходного слоя также может передаваться всем слоям предыдущего плотного блока, то есть информация DenseNet может передаваться от первого уровня к последнему несколько косвенным образом;
-
Все слои во втором и третьем плотных блоках присваивают наименьший вес выходным данным переходного слоя, указывая на то, что переходный слой выводит много избыточных признаков. Это связано с сильными результатами DenseNet-BC;
-
Хотя окончательный классификатор также использует веса, прошедшие через весь плотный блок, кажется, что он уделяет больше внимания итоговой карте признаков, указывая на то, что некоторые высокоуровневые признаки также генерируются в конце сети.
Суммировать
Мы предлагаем новую архитектуру сверточной сети, которую мы называем плотными сверточными сетями (DenseNet). Он вводит прямую связь между любыми двумя слоями с одинаковым размером карты объектов. Мы показываем DenseNet. Естественное масштабирование до сотен слоев без каких-либо проблем с оптимизацией.
По мере увеличения количества параметров точность сетей DenseNet постоянно повышается без каких-либо признаков ухудшения производительности или переобучения. Он достигает самых современных результатов на нескольких конкурирующих наборах данных при различных настройках. Кроме того, DenseNets требует меньше параметров и меньше вычислений для достижения современной производительности. Поскольку в нашем исследовании мы использовали настройки гиперпараметров, оптимизированные для остаточных сетей, мы считаем, что дальнейшие улучшения могут быть достигнуты путем более подробной настройки гиперпараметров и графиков скорости обучения. Точность DenseNets.
Следуя простым правилам подключения, DenseNets естественным образом интегрирует функции сопоставления удостоверений, глубокого контроля и разнообразной глубины. Они позволяют повторно использовать функции по всей сети, что позволяет изучать более компактные и точные модели. Благодаря своему компактному внутреннему представлению и уменьшенной избыточности функций DenseNets могут быть хорошими экстракторами функций для различных сверточных задач компьютерного зрения на основе функций. Эта передача функций исследуется с помощью DenseNets в будущей работе.