Свежий воздух и приятные пейзажи
предисловие
В серии DeepLab есть четыре статьи, соответствующие DeepLab V1, DeepLab V2, DeepLab V3 и DeepLab V3+.
DeepLab V1
Тема эссе:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
открытый исходный код:TheLegendAli/DeepLab-Context
DeepLab V2
открытый исходный код:DrSleep/tensorflow-deeplab-resnet
DeepLab V3
Тема эссе:Rethinking Atrous Convolution for Semantic Image Segmentation
открытый исходный код:leonndong/DeepLabV3-Tensorflow
DeepLab V3+
Тема эссе:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
открытый исходный код:jfzhang95/pytorch-deeplab-xception
Идеи из серии DeepLab
Сегментация изображений CNN адаптирована из семантики высокого уровня классификации, но точности CNN для семантической сегментации недостаточно.Основной причиной является инвариантность к переводу высокоуровневых признаков DCNN, то есть отображение признаков высокого уровня, который коренится в повторяющемся объединении, а понижающая дискретизация теряет информацию о локализации, то есть низкоуровневая семантика пикселей не может быть точно определена.
Для понижения разрешения или объединения в пул для уменьшения разрешения DeepLab использует сложную свертку вместо объединения, чтобы расширить восприимчивое поле и получить больше контекстной информации. Между тем, DeepLab v1v2 сочетает в себе методы глубоких сверточных нейронных сетей (DCNN) и вероятностных графических моделей (DenseCRF). DeepLab v2 предлагает последовательный модуль ASPP. ASPP повышает надежность сети для многоклассовой сегментации в различных масштабах. Он использует различные масштабы выборки и рецептивные поля для извлечения входных признаков и может собирать целевую и контекстную информацию в различных масштабах. рецептивное поле ядра свертки сильно расширено, ноПо мере того, как рецептивное поле приближается к размеру изображения, оно вырождается в свертку 1x1.
Для решения этой проблемы,DeepLab v3 улучшает слой объединения сверточных пространственных пирамид ASPP, различные свертки расширения работают параллельно, а затем суммируются после нормализации размера.. Модуль ASPP основан на идее PSPNet и собирает контекстную информацию о различных масштабах изображения посредством параллельной выборки сложной свертки с разной частотой дискретизации.
DeepLab v3+ расширяет DeepLab v3, добавляя простой, но эффективный модуль декодера для оптимизации результатов сегментации, достигая 89% и 82,1% MIOU для набора данных PASCAL VOC 2012 и набора данных Cityscapes соответственно.
Ключевые проблемы семантической сегментации
разрешениеНепрерывные операции объединения или понижения частоты дискретизации приведут к значительному падению разрешения изображения, что приведет к потере исходной информации, которую трудно восстановить во время повышения частоты дискретизации. Поэтому все больше и больше сетей пытаются уменьшить потерю разрешения, например, используя жесткие свертки или заменяя объединение операций свертки с шагом 2.
многомасштабные функцииТочность сегментации объектов разного размера на одном и том же изображении различна, поскольку ядра свертки разного масштаба по-разному влияют на сегментацию объектов разного размера. В случае малого разрешения информация о местоположении мелких объектов часто теряется, а карты признаков разного масштаба извлекаются путем настройки сверточных слоев или объединения слоев с разными параметрами. Отправка этих карт объектов в сеть для слияния значительно повышает производительность всей сети. Однако из-за многомасштабного ввода пирамиды изображений во время расчета сохраняется большое количество градиентов, что приводит к высоким требованиям к оборудованию.
1 DeepLab V1
DeepLab v1 — это метод, сочетающий глубокие сверточные нейронные сети (DCNN) и вероятностные графические модели (DenseCRF).
Глубокие сверточные нейронные сети (DCNN)• Используя идею FCN, модифицируйте сеть VGG16, чтобы получить грубую карту оценок и выполнить интерполяцию до исходного размера изображения. • Используйте свертку Atrous, чтобы получить карту признаков с более плотным и неизменным рецептивным полем.
Вероятностные графические модели (DenseCRF)• Заимствование полносвязных CRF для точной настройки результатов сегментации, полученных от DCNN.
DeepLab v1: VGG16+ atrous convolution+CRF для постобработки результатов сегментации краев. Для понижения разрешения или объединения в пул для уменьшения разрешения DeepLab использует сложную свертку, чтобы расширить рецептивное поле и получить больше контекстной информации. В то же время используется полностью связанное условное случайное поле (CRF), чтобы улучшить способность модели фиксировать детали.
Соответствие между рецептивным полем и ядром шага и свертки:
Сетевая структура DeepLab v1
1. Сменить полносвязный слой (fc6, fc7, fc8) на сверточный слой (сквозное обучение) 2. Измените размер шага 2 двух последних слоев объединения (pool4, pool5) на 1 (чтобы гарантировать, что разрешение объекта будет уменьшено до 1/8 от исходного изображения). 3. Установите скорость расширения трех последних сверточных слоев (conv5_1, conv5_2, conv5_3) на 2, а скорость расширения первого полностью связанного слоя на 4 (сохраняя рецептивное поле). 4. Изменить количество каналов последнего полносвязного слоя fc8 с 1000 на 21 (количество классификаций 21). 5. В первом полносвязном слое fc6 количество каналов изменено с 4096 на 1024, а размер ядра свертки изменен с 7х7 на 3х3.В последующих экспериментах установлено, что при коэффициенте расширения здесь 12 (LargeFOV), эффект наилучший.
Экспериментальная установка
Деформация сети: DeepLab-MSc: аналогично FCN, добавлено слияние функций. DeepLab-7×7: заменить полносвязное ядро свертки размером 7×7 DeepLab-4×4: заменить полносвязное ядро свертки размером 4×4 DeepLab-LargeFOV: заменить полносвязное ядро свертки размером 3×3 и коэффициентом расширения 12.
Функция потерь: перекрестная энтропия + softmax Оптимизатор: SGD + моментум 0,9 размер партии: 20 Скорость обучения: 10^−3 (каждые 2000 эпох, скорость обучения * 0,1)
2 DeepLab V2
Deeplab v2: VGG16/ResNet + последовательный модуль ASPP + CRF для постобработки результатов сегментации краев. Добавлен слой объединения пространственной пирамиды отверстий ASPP, а операция объединения, вызывающая потерю неглубоких элементов, заменена различными последовательными операциями расширения свертки, что значительно расширяет рецептивное поле.
жизненный опыт
Жестокая свертка
Плотная карта:Стандартная свертка 3×3: 33 области размера соответствуют одному выходному значению Атрусная извилина (скорость = 2): 5Область размера 5 соответствует выходному значению
Стандартная свертка 3х3 (скорость 1), рецептивное поле 3; расширенная свертка (скорость 2), размер ядра свертки 5х5, рецептивное поле 7; дилатационная свертка (скорость 4), ядро свертки Размер 9х9 и Рецептивное поле 15.
ResNet
Скорость изменения: введение остатков удаляет большую часть, тем самым выделяя небольшие изменения.
Основная идея: Подгонка карты идентичности типа y=x к нейронной сети сложнее, чем подгонка нейронной сети к карте 0, такой как y=0. Потому что при подгонке y=0 вам нужно только приблизить вес и смещение к 0.
Network&ASPP
Состав модуля ASPP -> Эволюция от DeepLab v1 к DeepLab v2 -> DeepLab v2 на основе VGG16 был дополнительно скорректирован на основе v1 (FC6-FC8 заменен на ASPP)
Экспериментальная установка
Функция потерь: перекрестная энтропия + softmax Оптимизатор: SGD + моментум 0,9 Размер партии: 20 Стратегия скорости обучения: шаг: 10 ^ −3 (каждые 2000 эпох, скорость обучения * 0,1)
поли:
Деформация сети: LargeFOV: свертка 3 × 3 + скорость = 12 (лучший результат DeepLab v1) АСПП-С: г = 2, 4, 8, 12 АСПП-Л: r = 6, 12, 18, 24
3 DeepLab V3
Deeplab v3: ResNet + улучшенный параллельный модуль ASPP. По мере увеличения частоты дискретизации количество эффективных весов фильтра (веса, применяемые к эффективным функциям вместо нулей, дополненных заполнением) становится меньше, и в крайних случаях, когда скорость расширения приближается к размеру карты объектов, фильтр 3 × 3 не захват Весь контекст изображения вместо этого вырождается в простую свертку 1 × 1 (эффективны только центральные веса фильтра). Таким образом, v3 использует параллельный модуль ASPP, а последняя ветвь объединяет модуль глобального пула для сбора информации о глобальном контексте.
Общая структура извлечения признаков для семантической сегментации1. Пирамида изображений: начиная с входного изображения, изображения разного масштаба отправляются в сеть для извлечения признаков, а затем объединяются. 2. Структура кодека: часть кодека использует понижение частоты дискретизации для извлечения признаков, а часть декодера использует повышение частоты дискретизации для восстановления размера карты признаков. 3. Глубокая сеть против жесткой свертки: классические алгоритмы классификации используют непрерывную субдискретизацию для извлечения признаков, в то время как жесткая свертка использует разные частоты дискретизации. 4. Структура пространственной пирамиды. Помимо ASPP, существуют еще другие сети, использующие эту идею, такие как SPPNet, PSPNet и т. д.
сетевая структура
Сетевая архитектура классического алгоритма классификации, такая как ResNet -> Структура последовательной сети свертки отверстий DeepLab v3 -> Структура параллельной сети свертки отверстий DeepLab v3 (скорректированный модуль ASPP)
Экспериментальная установка
размер урожая: Обрезать изображение до 513x513 (для лучшей подгонки частоты отверстий) Стратегия скорости обучения: при использовании полистратегии принцип такой же, как и в версии 2.
Стратегия слоя BN: Когда output_stride=16, batchsize=16, а уровень BN делает затухание параметра равным 0,9997. В расширенном наборе данных после обучения 30 000 с начальной скоростью обучения 0,007 параметры слоя BN замораживаются. Когда output_stride=8, batchsize=8, обучить 30 000 с начальной скоростью обучения 0,001.
4 DeepLab V3+
Deeplab v3+: Суть DeepLabv3+ заключается в расширении DeepLab v3 за счет добавления простого, но эффективного модуля декодера для восстановления границ объектов (вдоль границ объектов для уточнения результатов сегментации). Взяв за основу Xcepition/ResNet, для кодирования используется свертка с разделением по глубине, а после модуля ASPP многомасштабного извлечения признаков добавляется простой модуль декодера.
жизненный опыт
Разделимая по глубине свертка
Стандартная свертка:Стандартный размер входного изображения составляет 12 × 12 × 3, а операция свертки выполняется с ядром свертки 5 × 5 × 3, и на выходе будет получено 8 × 8 × 1; Операция свертки с 256 ядрами свертки размером 5 × 5 × 3 приводит к результату 8 × 8 × 256. Расчет параметра: 256×5×5×3 = 19200
Свертка пакетов:Групповая свертка предназначена для группировки входных карт объектов, и каждая группа свертывается отдельно. Предположим, что размерность входной карты объектов равна C.HW (12×5×5), количество выходных карт объектов равно N (6), если установлено разделение на группы G (3), количество входных карт объектов для каждой группы равно C/G (4 ), каждая Количество выходных карт признаков группы равно N/G (2), а размер каждого ядра свертки равен (C/G)KK (4×5×5), общее количество ядер свертки по-прежнему равно N (6), количество ядер свертки в каждой группе равно N/G (2), и каждое ядро свертки имеет только карту входных признаков выполняется одна и та же группа Convolution, а общее количество параметров ядра свертки равно N*(C/G)KK видно, что общая сумма параметров уменьшается до исходной 1/G.
Глубинно-сепарабельная свертка является крайним случаем групповой свертки, то есть сколько каналов есть на входе, столько и групп у соответствующей группировки, то есть количество групп групп = количеству каналов входной карты признаков.
Глубокая отделимая свертка = глубинная свертка + точечная свертка
**Свертка глубины: **Каждое ядро свертки 5×5×1 соответствует каналу во входном изображении, и получаются три выхода 8×8×1, а после сплайсинга получаются результаты 8×8×3.
** Поточечная свертка: ** Установите 256 ядер свертки 1 × 1 × 3, а затем выполните операцию свертки на выходе свертки по глубине и, наконец, получите Выход 8×8×256
Расчет параметра:Параметры глубинной свертки = 5×5×3 = 75 Параметры поточечной свертки = 256×1×1×3 = 768 Суммарные параметры = 75 + 768 = 843
сетевая структура
Кодер:
- Используя DeepLab v3 в качестве структуры кодировщика, отношение размера вывода к размеру ввода составляет 16 (output_stride = 16).
- ASPP: одна свертка 1 × 1 + три свертки 3 × 3 (скорость = {6, 12, 18}) + глобальное среднее объединение.
декодер:
- Сначала выполните апсемплинг результата кодировщика в 4 раза (билинейная интерполяция), затем сплайсинг и слияние с картой признаков соответствующего размера в кодировщике, затем выполните свертку 3x3 и, наконец, повышайте дискретизацию в 4 раза, чтобы получить окончательный результат
- Перед объединением низкоуровневой информации выполняется свертка 1x1 для уменьшения количества каналов.
DeepLab v3+ доработал Xception:
1. Более глубокая структура Xception, исходный средний поток повторяется 8 раз, а тонкая настройка повторяется 16 раз.
2. Все структуры max pooling заменены разделяемыми по глубине свертками с шагом=2.
3. За каждой глубинной извилиной 3x3 (в сочетании с атриальной извилиной) следуют BN и Relu.
Экспериментальная установка
Размер вырезки: обрезать картинку до 513*513
Стратегия скорости обучения: при использовании полистратегии принцип такой же, как у v2 v3.
Резюме статьи
История развития серии DeepLab
v1: Изменить классическую классификационную сеть (VGG16), применить к модели свертку отверстий, попытаться решить проблему низкого разрешения и извлечь многомасштабные признаки и использовать CRF для постобработки (VGG16 + свертка отверстий + CRF для результаты сегментации краев. иметь дело с)
v2: Разработайте модуль ASPP, чтобы максимизировать производительность свертки отверстий, используйте VGG16 в качестве основной сети, попробуйте использовать ResNet-101 для сравнительных экспериментов и используйте CRF для постобработки (последовательный модуль ASPP VGG16/ResNet+ + CRF для результатов сегментации краев). проходят постобработку)
v3: с ResNet в качестве основной сети спроектирована последовательная и параллельная сеть DCNN, настроен модуль ASPP, а CRF отменен для постобработки (ResNet + улучшенный параллельный модуль ASPP)
v3+: с ResNet или Xception в качестве основной сети новая модель алгоритма разрабатывается в сочетании со структурой кодека, v3 используется в качестве структуры кодировщика, а структура декодера разрабатывается отдельно, а CRF отменяется для постобработки (ResNet /Xception+ параллельный модуль ASPP + структура кодировщика)