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

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

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

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

Однако очень часто нам нужно локализовать каждый пиксель. Желаемый результат - это изображение, которое разделено на различные области, что снижает сложность понимания изображений машинами. Это очень полезно при обработке биомедицинских изображений и для беспилотных автомобилей.

Давайте рассмотрим несколько примеров семантической сегментации в действии:

Редактирование:

Если вы не так хорошо знакомы с извилинами и тем, как они применяются, вам настоятельно рекомендуется посмотреть блестящую запись в блоге здесь:



Архитектура

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

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

Кодировщик

Кодер состоит из повторяющихся сверток 3x3 с ReLU в качестве линейной функции активации, которая вносит нелинейность в модель, а затем следует операция максимального объединения. На каждом шаге понижения частоты количество каналов удваивается.

Декодер

Декодер объединяет пространственную информацию и информацию о функциях через слои повышающей дискретизации, а затем объединяется с функциями с более высоким разрешением от кодера. На каждом шаге повышения частоты дискретизации количество каналов уменьшается вдвое. Последним шагом является свертка 1x1, которая сопоставляет 64-компонентный объект с 23 сверточными слоями.

Пропустить Подключения

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

В документе также упоминается, что важно выбрать размер ввода таким образом, чтобы операции максимального объединения применялись к четным размерам x, y.

Функция обучения и потерь

В оригинальной статье они объединили soft-max с функцией кросс-энтропийных потерь. Я хочу подробнее остановиться на формулах, приведенных в статье, так как это может быть неясно с первого взгляда.

l(x) представляет собой истинную метку пикселя в позиции x, например, если пиксель является частью 1-го класса, то l(x)= 1. Теперь p_k мы вычисляем как:

гдеa_k — это активация в функциональном канале k в позиции x. и k — номер класса. Следовательно, если l(x) = 1, у нас будет p1(x).

Чтобы заставить сеть научиться точно предсказывать границы между объектами одного класса, они ввели взвешенные потери как:

где wc(x) — взвешенная карта классов. Шаги для его вычисления:

  • для каждого класса подсчитайте, сколько пикселей в наземной истине принадлежит этому классу
  • для каждого пикселя в wc(x), который имеет форму одного входного изображения, назначьте вероятность как 1/(число, рассчитанное выше)
  • разделите все значения в карте на максимальное значение карты, чтобы фон имел вес 1

w0(x) — это константы, которые в исходной статье имеют значения 10 и 5 соответственно. d1(x) и d2(x) соответствуют расстояниям, указанным в документе, до первых двух ближайших ячеек. .

Вот визуализация, как вы видите, больше веса приходится на границы между объектами.

Приложения

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

Интересные наборы данных kaggle, которые могут послужить вам практикой:

Ссылки: