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

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

Что такое семантическая сегментация изображения?

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

Например, на приведенном выше изображении различные объекты, такие как автомобили, деревья, люди, дорожные знаки и т. д., могут использоваться в качестве классов для семантической сегментации изображения. Таким образом, задача состоит в том, чтобы взять изображение (RGB или оттенки серого) и вывести матрицу W x H x 1, где W и H представляют ширину и высоту изображения соответственно. Каждая ячейка в этой матрице будет содержать предсказанные идентификаторы классов для каждого пикселя изображения.

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

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

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

Чем оно отличается от обнаружения объектов?

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

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

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

Прочтите этот пост в блоге для получения дополнительной информации об обнаружении и сегментации объектов: https://towardsdatascience.com/a-hitchhikers-guide-to-object-detection-and-instance-segmentation-ac0146fe8e11

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

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

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

Начальные слои сверточной нейронной сети изучают функции низкого уровня, такие как линии, края, цвета и т. д., а более глубокие слои изучают функции высокого уровня, такие как лица или объекты и т. д.

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

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

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

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

Такая архитектура известна как архитектура кодировщик-декодер. Фаза понижения частоты дискретизации называется кодером, а фаза повышения частоты дискретизации называется декодером.

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

Можно заметить, что описанная выше архитектура не использует какой-либо полносвязный уровень для прогнозирования. В связи с этим такие модели известны как Полностью сверточные сети (FCN).

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

Последний уровень декодера использует функцию softmax для каждого пикселя, чтобы делать прогнозы. Таким образом, карта, полученная после активации, будет иметь значения только в диапазоне от 0 до 1. Выходная карта имеет ту же размерность, что и входное изображение, с третьим измерением или количеством каналов, равным количеству классов. Таким образом, мы можем сравнить выходную карту с версией наземной истины, закодированной в горячем виде, чтобы рассчитать потери. Благодаря этой формулировке можно использовать стандартную бинарную кроссэнтропийную потерю.

Советы по улучшению тренировок

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

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

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

Приложения

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

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

Обработка спутниковых изображений. Аэрофотоснимки или спутниковые изображения охватывают обширную территорию и содержат ряд артефактов. Для выполнения точного анализа аэрофотоснимков или спутниковых изображений требуется сложная аннотация изображений. Семантическая сегментация находит применение в точном земледелии и геозонировании.

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

Некоторые полезные чтения для семантической сегментации

Это все для этого поста. Если вам понравился этот пост, не стесняйтесь хлопать в ладоши и делиться им с другими. Вы можете найти меня на LinkedIn или просмотреть некоторые мои работы на GitHub. Если у вас есть какие-либо вопросы или мысли, пожалуйста, оставьте комментарий ниже. Спасибо за прочтение этого поста!! Хорошего дня…🎉