Мы будем обсуждать семантическую сегментацию с использованием CNN в серии сообщений в блогах. В этом сообщении блога мы обсудим архитектуры FCN, DeConvolution Network, SegNet.

Прежде чем углубляться в детали того, как осуществляется семантическая сегментация с помощью CNN, давайте разберемся с концепцией «семантической сегментации».

Семантическая сегментация:

Сегментация - это разделение изображения на несколько связанных частей, но без попытки понять, что эти части представляют. Одна из самых известных работ (но определенно не первая) - Ши и Малик« Нормализованные сокращения и сегментация изображений PAMI 2000».

С другой стороны, «Семантическая сегментация» пытается разделить изображение на семантически значимые части, и, чтобы отнести каждую часть к одному из заранее определенных классов. Вы также можете достичь той же цели, классифицируя каждый пиксель (а не все изображение / сегмент). В этом случае вы выполняете классификацию по пикселям, что приводит к тому же конечному результату, но немного по другому пути.

Итак, я полагаю, вы можете сказать, что «семантическая сегментация», «маркировка сцены» и «классификация по пикселям» в основном пытаются достичь одной и той же цели: семантического понимания роли каждого пикселя в изображении. Для достижения этой цели можно пойти разными путями, и эти пути приводят к небольшим нюансам в терминологии.

Далее следует недавняя работа в области семантической сегментации, архитектура называется Mask-RCNN. Он пытается одновременно выполнять 3 визуальные задачи: классификация объектов, обнаружение объектов и сегментация.

КАК СЕМАНТИЧЕСКИ СЕГМЕНТИРОВАТЬ, ИСПОЛЬЗУЯ CNN:

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

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

Маска выглядит так:

Эти маски являются основными метками для изображений. Маска состоит из всех пикселей, принадлежащих определенному классу. Первый набор изображений содержит маски классной лошади. Второй набор состоит из класса собак. Если бы было изображение с собакой и лошадью, на выходе в сеть сегментации было бы две маски. Одна двоичная маска для вывода класса собаки, другая для класса лошади. Для изображения размера h x w выходные маски для задачи распознавания для k классов будут представлять собой массив h x w x k. K масок размером h x w каждая.

ТИПИЧНАЯ СЕТЕВАЯ АРХИТЕКТУРА СЕГМЕНТАЦИИ:

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

Кодер постепенно уменьшает пространственное измерение за счет объединения слоев, а декодер постепенно восстанавливает детали объекта и пространственное измерение.

Важно понимать, как происходит семантическая сегментация в сверточных сетях. Как концепция, семантическая сегментация пытается найти значимые части изображения. Можно было бы говорить о том, как пиксели, принадлежащие к одному классу, встречаются во взаимосвязи с пикселями другого класса. Рассмотрим кодирование первого уровня CNN. Основная операция свертки кодирует изображение в представление более высокого уровня с идеей выражения изображения как, скажем, комбинации частей, таких как края или градиенты. Такие особенности, как, например, ребра, не являются исключительными, но фактически несут в себе контекст соседства. Во время выборки и декодирования эти функции декодируются с учетом ассоциаций классов, руководствуясь попиксельными картами во время обратного распространения.

FCN (полностью сверточные сети):

Одна из первых попыток использования глубокого обучения для задачи сегментации - это полностью сверточные сети FCN. Как следует из названия, архитектура сети состоит только из сверточных слоев и не содержит слоев FC.

FCN использует AlexNet в качестве кодировщика, а кодировщик выполняет повышающую дискретизацию в 32 раза в качестве декодера. Во время обучения обучаются только веса декодера, поскольку кодировщик предварительно обучен AlexNet.

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

Давайте подробно обсудим свертку транспонирования.

ТРАНСПОРТНАЯ СВЕРТКА:

Транспонирование свертки также обычно называют свертками с обратным шагом или дробными свертками. При обычной свертке, скажем, ядро ​​3 * 3 умножается на 3 * 3 значения пикселей, суммируя, чтобы получить одно значение. Здесь один пиксель умножается на 3 * 3 веса и проецируется на выходное измерение 3 * 3. Точно так же каждый пиксель умножается на ядро ​​и проецируется в выходное пространство. Если выходы перекрываются для пикселей, результат суммируется, как показано на изображении ниже.

То же самое применяется к FCN. Транспонированный сверточный слой с коэффициентом дискретизации 32.

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

Варианты FCN, FCN-16 и FCN-8 используют вывод слоев maxpool во время извлечения признаков, объединяя их с соответствующими версиями conv7 с повышенной дискретизацией. Слияние представляет собой простую аддитивную конкатенацию.

Прогнозы для FCN-8, FCN-16 становятся лучше, поскольку мы кодируем больше пространственной информации. Контекст обеспечивается пропускаемыми соединениями.

ФУНКЦИЯ ПОТЕРЯ:

Используемая функция потерь - это потеря кросс-энтропии.

Ниже приводится одномерная перекрестная потеря энтропии.

Но изображение - это двумерный или трехмерный массив. Как здесь можно использовать перекрестную потерю энтропии?

Вот в чем загвоздка. Для простоты возьмем изображение как двумерный массив.

Матрицы y (фактические) и y ^ (прогнозируемые) являются двумерными, поэтому при суммировании потери будут иметь h x w членов.

ДЕКОРАТИВНАЯ СЕТЬ:

Вскоре исследователи начали экспериментировать с сетями сегментации. В 2015 году Но и др.. придумал сеть для снятия конвульсий, которая выводит игру по декодированию на новый уровень.

Архитектура выглядит следующим образом:

Кодер представляет собой сеть VGG, инициализированную весами VGG, а декодер следует той же сетевой архитектуре, что и сеть VGG, но изучается с нуля.

Итак, по сути, изучено 13 уровней повышающей дискретизации (unpooling + conv). (+ Конечно слои FC)

Здесь новая концепция заключается в том, что мы разделяем повышающую дискретизацию и свертку. Мы используем разворачивание, чтобы увеличить размер воспринимающего поля, в то время как мы используем сверточные слои после разворачивания.

Итак, Unpooling работает следующим образом:

Если у нас есть объединенная карта 2 * 2 после свертки из входа 4 * 4, мы проецируем ее на выход 4 * 4, используя фильтр Unpooling. При этом они используют переменные переключателя, чтобы фиксировать, где происходит наибольшая активация, чтобы направлять декодирование w.r.t. края, градиент или любые другие высокоуровневые функции, которые изучаются во время свертки. Это действительно помогает в сохранении краев / информации о границах. Дополнительные затраты, связанные с этим, связаны с переключением переменных на каждом уровне пула. По сути, 2 бита информации для окна 2 * 2.

Deconvolution Network была опубликована в ICCV 2015.

SEGNET:

Следующей известной архитектурой стал SegNet.

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

Пример результатов использования различных архитектур, взятых из статьи SegNet:

В следующей статье мы рассмотрим DeepLab ResNet v2, UNet, которая представляет собой стандартную архитектуру, используемую для медицинских изображений.

Использованная литература:

FCN: https://arxiv.org/abs/1411.4038

Сеть DeConvolution: https://arxiv.org/abs/1505.04366

SegNet: https://arxiv.org/abs/1511.00561

Автор статьи:

Чандана Котта: https://www.linkedin.com/in/chandana-k-b43871a7/