Серия моделей семантической сегментации DeepLab

компьютерное зрение
Серия моделей семантической сегментации DeepLab

空气新鲜,风景宜人

Свежий воздух и приятные пейзажи

предисловие

В серии 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

Тема эссе:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

открытый исходный код: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

сетевая структура

Кодер:

  1. Используя DeepLab v3 в качестве структуры кодировщика, отношение размера вывода к размеру ввода составляет 16 (output_stride = 16).
  2. ASPP: одна свертка 1 × 1 + три свертки 3 × 3 (скорость = {6, 12, 18}) + глобальное среднее объединение.

декодер:

  1. Сначала выполните апсемплинг результата кодировщика в 4 раза (билинейная интерполяция), затем сплайсинг и слияние с картой признаков соответствующего размера в кодировщике, затем выполните свертку 3x3 и, наконец, повышайте дискретизацию в 4 раза, чтобы получить окончательный результат
  2. Перед объединением низкоуровневой информации выполняется свертка 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 + структура кодировщика)