Поиск модели для сегментации изображения

Все предыдущие версии DeepLab (v1, v2, v3 и v3plus) расширяли последние достижения в области семантической сегментации, когда они были опубликованы. Между тем, поиск нейронной архитектуры использовался, чтобы превзойти самые современные проблемы распознавания изображений, поставленные сетями, созданными людьми. Итак, следующим шагом было попытаться решить проблему прогнозирования плотного изображения, такую ​​как семантическая сегментация, с помощью поиска нейронной архитектуры. Эта история представляет собой обзор статьи «Auto-DeepLab: поиск иерархической нейронной архитектуры для семантической сегментации изображений», представленной на CVPR 2019.

Содержание:

  1. Вступление
  2. Пространство поиска архитектуры
  3. Приступаем к модели
  4. Результаты экспериментов
  5. Дальнейшее чтение

Вступление

Проблема семантической сегментации решается некоторыми из самых ранних CNN, таких как AlexNet, VGG, Inception, ResNet и т. Д. Затем появились улучшенные версии этих моделей, такие как Wide ResNet, Xception, ResNeXt и т. Д. Однако все эти модели были экстракторами общих функций, используется для решения рассматриваемой проблемы. Затем за этими моделями последовала серия моделей, специально предназначенных для сегментации, таких как серии моделей DeepLab, предлагающие идеи жестких сверток или, например, PSPNet, которые победили в проблемах сегментации нескольких наборов данных, когда они были соответственно опубликованы. Однако в большинстве моделей, используемых в настоящее время, используется предварительное обучение ImageNet. Однако предлагаемая здесь модель дает конкурентные результаты и без такой помощи.

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

Кроме того, в прошлом NAS использовался для поиска блока CNN, который регулярно повторяется для формирования всей сети. Другими словами, он использовался только на внутреннем уровне ячейки, а не для определения структуры сети. Однако здесь они предлагают использовать NAS для поиска в сети наряду с обычной задачей поиска в ячейке.

Пространство поиска архитектуры

Пространство поиска на уровне ячейки

Чтобы найти ячейку, сначала мы определяем ячейку. Здесь ячейка - это полностью сверточный модуль, состоящий из блоков B. Каждый блок представляет собой структуру с двумя ветвями и может быть определен кортежем из 5 (I₁, I₂, O₁, O₂, C), где I₁, I₂ ∈ Iˡᵢ, который является набор всех возможных вариантов выбора входа для блока i в слое l и O₁, O₂ - это выбор типов слоя для блока C - это метод, используемый для объединения отдельных выходов из двух ветвей, чтобы получить вывод этого блока Hᵢˡ. Выходной тензор ячейки Hˡ - это просто конкатенация выходных данных блоков. Набор возможных тензоров для блока содержит выходные данные двух предыдущих ячеек, то есть Hˡ⁻¹ и Hˡ⁻². Кроме того, выходные данные блока j в ячейке можно вводить в каждый блок i, где i ›j.

Далее, типы веток, которые будут рассматриваться в каждом блоке, следующие:

Разделение по глубине было впервые реализовано в MobileNetV2, а преобразование - в DeepLab.

Область поиска на уровне сети

Пространство поиска на сетевом уровне особенно необходимо, потому что это проблема прогнозирования плотного изображения, и обычно сети для таких проблем имеют тенденцию начинаться с изображения с высоким разрешением и уменьшать пространственное измерение где-то в сети, а затем снова возвращаться к исходному измерение. Здесь авторы ограничивают общий коэффициент понижающей дискретизации до 32. Кроме того, перемещение с точки зрения пространственного измерения может быть выполнено только с коэффициентом 2. Кроме того, общее количество слоев, т. Е. Общее количество пронизанных ячеек, установлено равным 12.

На рисунке ниже схематично показано скрытое пространство. Слева - скрытое пространство всей сети. Это сетка зависимости коэффициента пространственного размера от количества слоев. Модуль ASPP, который используется для сегментации, при поиске архитектуры помещается во все возможные в соответствии со всеми возможными конечными факторами пространственного измерения (s = 4,8,16,32).

Цифра справа - это скрытое пространство для ячейки. Он состоит из пяти блоков со всеми возможными связями. Эти соединения объясняются в следующем разделе.

Получение модели

Здесь мы получаем модели путем поиска. Это трехэтапный процесс:

Архитектура ячейки

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

Скрытый вывод блока Hᵢˡ:

Кроме того, мы приближаем ветвь, которая будет использоваться Oⱼ₋ᵢ для каждого соединения, используя это:

По сути, наряду с обычными весами CNN, мы добавляем эти веса (αᵏⱼ₋ᵢ) (с этого момента я буду называть их мета-весами) по всему пространству скрытого поиска, которое содержит все связи между возможными входными данными. и возможные ветви внутри ячейки. Мы даем взвешенное сложение и узнаем, какая комбинация этих мета-весов дает нам наилучшую структуру ячейки. Лучшая часть этой структуры - поскольку приведенное выше уравнение является дифференцируемым, мета-веса можно обучать одновременно с обычными весами. Поскольку в соответствии с уже определенным скрытым пространством, мы можем получить вывод из двух предыдущих ячеек в текущую ячейку. Таким образом, общая математическая формулировка ячейки для вывода на уровне l может быть записана как:

Затем следует структура сети в целом, в которой должен выполняться поиск, находясь в скрытом пространстве, как описано в предыдущем разделе. Если фактор пространственного измерения в текущем слое равен s, то вход в этот слой может поступать только из трех пространственных измерений, то есть s / 2, s и s в соответствии с латентным пространством. Следовательно, как и для структуры ячеек, мы определяем мета-веса для получения правильных соединений:

Здесь β - набор мета-весов. Связь между βs будет описана как:

Оптимизация

Как и обычные веса, мы обучаем эти «мета-веса», используя кросс-энтропийные потери, чтобы получить оптимизированную ситуацию, когда различные значения α описывают нам сеть внутри ячейки, а различные значения β описывают общую структуру. После обучения они придумали следующую модель.

Они пришли к этой архитектуре с помощью третьего шага:

Расшифровка

Для структуры ячеек мы берем две самые сильные связи из всех возможных входов, используя наибольшие значения α для этой ветви, и повторяем это упражнение для всех блоков. Для сетевой архитектуры значения β не могут быть вычислены жадно. Наша цель - получить ту последовательность значений, которая дает нам максимальное значение в конце. Это классический случай динамического программирования, и его легко решить с помощью алгоритма Витерби.

После декодирования мы получаем окончательную структуру, как на рисунке выше. Для сравнения, структура Deeplab выглядит примерно так:

Результаты экспериментов

Одним из самых больших достижений этой модели является то, что она не требует предварительного обучения Imagenet. Результаты можно обобщить в следующих таблицах. В наборе данных CityScapes AutoDeepLab-L превосходит GridNet и соответствует производительности с DeepLabV3 + на уровне 82,1%, при этом требуется почти половина вычислительной мощности.

Аналогичным образом, в наборе данных COCO результаты сопоставимы с моделями, в которых используется предварительное обучение Imagenet. Это демонстрирует мощь NAS и архитектуру, которую мы получаем от этой идеи.

Дальнейшее чтение

Ознакомьтесь с статьей Auto-DeepLab, чтобы узнать больше об этой идее.

Чтобы узнать больше о компьютерном зрении и глубоком обучении, подписывайтесь на меня на Medium и Github.

Вы также можете подписаться на меня в LinkedIn.