Руководство по семантической сегментации 2021 г.

Исходный узел: 872271

Главная

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

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

Источник http://cs224d.stanford.edu/index.html

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

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

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

Source http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf
  1. Семантическая сегментация : - Семантическая сегментация - это процесс классификации каждого пикселя, принадлежащего определенной метке. Он не отличается в разных экземплярах одного и того же объекта. Например, если на изображении 2 кошки, семантическая сегментация дает одинаковую метку для всех пикселей обеих кошек.
  2. Сегментация экземпляра : - Сегментация экземпляров отличается от семантической сегментации в том смысле, что она дает уникальную метку каждому экземпляру определенного объекта на изображении. Как видно на изображении выше, всем трем собакам присвоены разные цвета, то есть разные метки. При семантической сегментации всем им был бы присвоен один цвет.

Итак, мы подошли к вопросу, где нам понадобится такой алгоритм.

Примеры использования сегментации изображений

Распознавание почерка : - Junjo et all продемонстрировали, как семантическая сегментация используется для извлечения слов и строк из рукописных документов в их Исследовательская работа 2019 распознавать рукописные символы

Источник

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

Источник: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Истории YouTube : - Google недавно выпустил функцию Истории YouTube для создателей контента, чтобы показать различные фоны при создании историй.

Источник: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Виртуальный макияж : - Теперь можно применять виртуальный карандаш для губ с помощью сегментации изображения

Источник: - https://www.theverge.com/2017/3/16/14946086/sephora-virtual-assistant-ios-app-update-ar-makeup

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

Источник: - https://arxiv.org/pdf/1807.07688.pdf

Визуальный поиск изображений : - Идея сегментирования одежды также используется в алгоритмах поиска изображений в электронной коммерции. Например, Pinterest / Amazon позволяет загружать любое изображение и получать похожие похожие товары, выполняя поиск изображений на основе сегментации ткани.

Источник: - https://github.com/paucarre/tiefvision

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

Источник: - https://medium.com/intro-to-artificial-intelligence/semantic-segmentation-udaitys-self-driving-car-engineer-nanodegree-c01eb6eaf9d

Nanonets помогает компаниям из списка Fortune 500 улучшать качество обслуживания клиентов в любом масштабе с помощью семантической сегментации.

Методы и приемы

До появления глубокого обучения для решения проблемы сегментации изображений использовались классические методы машинного обучения, такие как SVM, Random Forest, K-means Clustering. Но, как и в случае с большинством формулировок проблем, связанных с изображениями, глубокое обучение работает в целом лучше, чем существующие методы, и теперь стало нормой при работе с семантической сегментацией. Давайте рассмотрим методы, которые используются для решения проблемы.

Полностью сверточная сеть

Общая архитектура CNN состоит из нескольких сверточных и объединяющих слоев, за которыми в конце следуют несколько полностью связанных слоев. В документе Fully Convolutional Network, выпущенном в 2014 году, утверждается, что последний полностью связанный слой можно рассматривать как свертывание 1 × 1, которое покрывает всю область.

Источник: - https://arxiv.org/abs/1411.4038

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

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

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

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

Источник: - https://arxiv.org/abs/1411.4038

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

Для решения этой проблемы в документе предложены 2 другие архитектуры FCN-16, FCN-8. В FCN-16 информация из предыдущего слоя объединения используется вместе с окончательной картой функций, и, следовательно, теперь задача сети - изучить 16-кратную выборку с повышением, что лучше по сравнению с FCN-32. FCN-8 пытается сделать его еще лучше, включая информацию из еще одного предыдущего уровня пула.

Унет

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

Источник: - https://arxiv.org/abs/1505.04597

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

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

ДипЛаб

Deeplab из группы исследователей из Google предложила множество методов для улучшения существующих результатов и получения более точных результатов при меньших вычислительных затратах. В рамках исследования предлагаются 3 основных улучшения:

1) Атрозные извилины
2) Зловещее пространственное пирамидальное объединение
3) Использование условных случайных полей для улучшения конечного результата
Давайте обсудим все это

Атрозная свёртка

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

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

Source:- https://www.mdpi.com/1424-8220/19/24/5361/htm

Расширенная свертка работает за счет увеличения размера фильтра путем добавления нулей (называемых отверстиями), чтобы заполнить пробел между параметрами. Число дырок / нулей, заполненных между параметрами фильтра, называется скоростью расширения. Когда скорость равна 1, это не что иное, как обычная свертка. Когда скорость равна 2, один ноль вставляется между всеми остальными параметрами, делая фильтр похожим на свертку 5 × 5. Теперь у него есть возможность получить контекст свертки 5 × 5, имея параметры свертки 3 × 3. Точно так же для уровня 3 рецептивное поле увеличивается до 7 × 7.

В Deeplab последние слои объединения заменены на шаг 1 вместо 2, что позволяет снизить частоту дискретизации до 8x. Затем применяется серия жестких извилин, чтобы охватить более широкий контекст. Для обучения выходная маркированная маска подвергается 8-кратной дискретизации для сравнения каждого пикселя. Для вывода используется билинейная восходящая выборка для получения выходных данных того же размера, что дает достаточно приличные результаты при меньших затратах на вычисления и память, поскольку билинейная восходящая выборка не требует каких-либо параметров в отличие от деконволюции для восходящей выборки.

АСЗ

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

Источник: - http://kaiminghe.com/eccv14sppnet/index.html

С модулем SPP сеть выдает 3 выхода размером 1 × 1 (т.е. GAP), 2 × 2 и 4 × 4. Эти значения объединяются путем преобразования в 1d-вектор, таким образом собирая информацию в нескольких масштабах. Еще одно преимущество использования SPP - могут быть предоставлены входные изображения любого размера.

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

Источник: - http://liangchiehchen.com/projects/DeepLab.html

Как можно видеть, входные данные свертываются с помощью фильтров 3 × 3 со скоростями расширения 6, 12, 18 и 24, а выходные данные объединяются вместе, поскольку они имеют одинаковый размер. Выходной сигнал свертки 1 × 1 также добавляется к плавленому выходу. Чтобы также предоставить глобальную информацию, вывод GAP также добавляется выше после выборки. Объединенный выход 3 × 3 изменяемых расширенных выходов, 1 × 1 и выход GAP пропускается через свертку 1 × 1, чтобы получить необходимое количество каналов.

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

Улучшение вывода с помощью CRF

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

Источник: - http://liangchiehchen.com/projects/DeepLab.html

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

Deeplab-v3 ввел пакетную нормализацию и предложил скорость расширения, умноженную на (1,2,4) внутри каждого слоя в блоке Resnet. Также добавление функций уровня изображения в модуль ASPP, которое обсуждалось в вышеупомянутом обсуждении ASPP, было предложено как часть этого документа.

Источник: - https://arxiv.org/pdf/1706.05587.pdf

Deeplab-v3 + предложил использовать декодер вместо простой билинейной выборки 16x. Декодер получает подсказку от декодера, используемого архитектурами, такими как U-Net, которые берут информацию из уровней кодера для улучшения результатов. Выходные данные кодера подвергаются 4-кратной повышающей дискретизации с использованием билинейной повышающей дискретизации и объединяются с функциями кодера, которые снова подвергаются 4-кратной повышающей дискретизации после выполнения свертки 3 × 3. Такой подход дает лучшие результаты, чем прямая выборка с увеличением в 16 раз. Также предлагается использовать модифицированную архитектуру Xception вместо Resnet как часть кодировщика, а разделимые по глубине свертки теперь используются поверх сверток Atrous, чтобы сократить количество вычислений.

Глобальная сеть свертки

Источник: - https://arxiv.org/pdf/1703.02719.pdf

Семантическая сегментация предполагает одновременное выполнение двух задач.

i) Классификация
ii) Локализация

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

Источник: - https://arxiv.org/pdf/1703.02719.pdf

Автор предлагает достичь этого, используя большие ядра как часть сети, что обеспечивает плотные соединения и, следовательно, больше информации. Это достигается с помощью блока GCN, как показано на рисунке выше. Блок GCN можно рассматривать как фильтр свертки akxk, где k может быть числом больше 3. Для уменьшения количества параметров фильтр akxk дополнительно разбивается на блоки 1 xk и kx 1, kx1 и 1xk, которые затем суммируются. Таким образом, увеличивая значение k, захватывается больший контекст.

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

Результаты показали, что блок GCN улучшил точность классификации пикселей ближе к центру объекта, указывая на улучшение, вызванное захватом контекста дальнего действия, тогда как блок Boundary Refinement помог повысить точность пикселей ближе к границе.

Смотрите больше, чем один раз - KSAC для семантической сегментации

Семейство Deeplab использует ASPP, чтобы несколько воспринимающих полей собирали информацию, используя разные скорости свертки. Хотя ASPP был значительно полезен в улучшении сегментации результатов, есть некоторые проблемы, связанные с архитектурой. В ASPP нет информации, совместно используемой между различными параллельными уровнями, что влияет на обобщающую способность ядер на каждом уровне. Кроме того, поскольку каждый уровень обслуживает разные наборы обучающих выборок (меньшие объекты - для меньшей скорости, а большие объекты - для более высокой скорости), объем данных для каждого параллельного уровня будет меньше, что повлияет на общую обобщаемость. Также количество параметров в сети линейно увеличивается с количеством параметров и, таким образом, может привести к переобучению.

Источник: - https://arxiv.org/pdf/1908.09443.pdf

Для решения всех этих проблем автор предлагает новую сетевую структуру под названием Kernel-Sharing Atrous Convolution (KSAC). Как видно на приведенном выше рисунке, вместо того, чтобы иметь разные ядра для каждого параллельного уровня в ASPP, используется одно ядро, что улучшает возможности обобщения сети. При использовании KSAC вместо ASPP сохраняется 62% параметров при использовании скоростей дилатации 6,12, 18 и XNUMX.

Еще одним преимуществом использования структуры KSAC является то, что количество параметров не зависит от количества используемых скоростей расширения. Таким образом, мы можем добавить как можно больше ставок, не увеличивая размер модели. ASPP дает лучшие результаты со значениями 6,12,18, но точность снижается с 6,12,18,24, что указывает на возможное переобучение. Но точность KSAC по-прежнему значительно улучшается, что указывает на расширенные возможности обобщения.

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

Сегментация видео

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

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

СТФКН

Spatio-Temporal FCN предлагает использовать FCN вместе с LSTM для сегментации видео. Мы уже знаем, как можно использовать FCN для извлечения функций для сегментации изображения. LSTM - это разновидность нейронных сетей, которые могут захватывать последовательную информацию с течением времени. STFCN объединяет возможности FCN с LSTM для захвата как пространственной, так и временной информации.

Источник: - https://arxiv.org/abs/1608.05971

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

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

Семантические видео CNN через искажение представления

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

Источник: - https://arxiv.org/abs/1708.03088

Предлагаемый подход можно привязать к любой стандартной архитектуре в виде плагина. Ключевым ингредиентом, который играет роль, является модуль NetWarp. Для вычисления карты сегментации вычисляется оптический поток между текущим кадром и предыдущим кадром, то есть Ft, и передается через FlowCNN для получения Λ (Ft). Этот процесс называется преобразованием потока. Это значение передается через модуль деформации, который также принимает в качестве входных данных карту характеристик промежуточного слоя, рассчитанную при прохождении через сеть. Это дает деформированную карту объектов, которая затем комбинируется с промежуточной картой объектов текущего слоя, и вся сеть проходит обучение от начала до конца. Эта архитектура достигла результатов SOTA на наборах данных тестов видео CamVid и Cityscapes.

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

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

Источник: - https://arxiv.org/abs/1608.03609

На приведенном выше рисунке показано сравнение скорости изменения для пула 4 уровня среднего уровня и fc7 глубокого уровня. Слева мы видим, что, поскольку во фреймах много изменений, оба слоя показывают изменение, но изменение для pool4 выше. Справа мы видим, что фреймы не сильно изменились. Следовательно, pool4 показывает незначительное изменение, тогда как fc7 показывает почти нулевое изменение.

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

Источник: - https://arxiv.org/abs/1608.03609

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

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

Источник: - https://arxiv.org/abs/1804.00389

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

Сегментация облаков точек

Данные, поступающие от датчика, такого как лидар, хранятся в формате, называемом облаком точек. Облако точек - это не что иное, как набор неупорядоченных наборов трехмерных точек данных (или любого измерения). Это разреженное представление сцены в 3D, и CNN не может быть применен напрямую в таком случае. Также любая архитектура, предназначенная для работы с облаками точек, должна учитывать, что это неупорядоченный набор и, следовательно, может иметь множество возможных перестановок. Таким образом, сеть должна быть инвариантной к перестановкам. Также точки, определенные в облаке точек, могут быть описаны расстоянием между ними. Таким образом, более близкие точки в целом несут полезную информацию, которая полезна для задач сегментации.

ПойнтНет

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

Источник: - https://arxiv.org/abs/1612.00593

Входом сети для n точек является матрица размером nx 3. Матрица nx 3 отображается на nx 64 с использованием общего мультиперцептронного уровня (полностью подключенная сеть), который затем отображается на nx 64, а затем на nx 128 и nx 1024. Максимальное объединение применяется для получения вектора 1024, который преобразуется в k выходы, проходя через MLP размером 512, 256 и k. Наконец, вывод k классов производится аналогично любой классификационной сети.

Классификация имеет дело только с глобальными характеристиками, но для сегментации нужны также локальные характеристики. Таким образом, локальные функции из промежуточного уровня на nx 64 объединяются с глобальными функциями, чтобы получить матрицу тревожной 1088, которая отправляется через mlp 512 и 256, чтобы добраться до nx 256, а затем через MLP 128 и m, чтобы дать m выходных классов для каждой точки. в облаке точек.

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

A-CNN

Источник: - https://arxiv.org/abs/1904.08017

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

Архитектура берет на вход nx 3 точки и находит для них нормали, которые используются для упорядочивания точек. Подвыборка точек берется с использованием алгоритма FPS, что дает ni x 3 точки. На них применяется кольцевая свертка для увеличения до 128 размеров. Кольцевая свертка выполняется в точках соседства, которые определяются с использованием алгоритма KNN.

Другой набор вышеупомянутых операций выполняется для увеличения размеров до 256. Затем применяется mlp для изменения размеров до 1024 и применяется объединение, чтобы получить глобальный вектор 1024, аналогичный облаку точек. Вся эта часть считается кодировщиком. Для классификации глобальные выходные данные кодировщика передаются через mlp для получения выходных данных класса c. Для задачи сегментации как глобальные, так и локальные функции считаются аналогичными PointCNN, а затем передаются через MLP для получения выходных данных класса m для каждой точки.

Метрика

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

Точность пикселей

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

Точность = (TP + TN) / (TP + TN + FP + FN)

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

Пересечение через союз

Долговая расписка определяется как отношение пересечения исходных данных и прогнозируемых результатов сегментации к их объединению. Если мы рассчитываем для нескольких классов, рассчитываются долговые обязательства каждого класса и берется их среднее значение. Это лучшая метрика по сравнению с точностью пикселей, так как если каждый пиксель задан как фон во входных данных 2 класса, значение IOU составляет (90/100 + 0/100) / 2, т.е. 45% IOU, что дает лучшее представление по сравнению с 90 % точности.

Источник: - https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection

Долговые обязательства, взвешенные по частоте

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

Счет F1

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

Источник: - https://en.wikipedia.org/wiki/F1_score

Средняя точность

Площадь под кривой «Точность - отзыв» для выбранного порогового среднего значения IOU по различным классам используется для проверки результатов.

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

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

Потеря перекрестной энтропии

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

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

Потеря фокуса

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

Потеря кости

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

Тверски Лосс

Это вариант потери кубиков, который дает разный вес для FN и FP.

Хаусдорфово расстояние

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

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

Источник https://en.wikipedia.org/wiki/Hausdorff_distance

Два рассматриваемых здесь термина относятся к двум границам, т. Е. К исходной истинности и прогнозу на выходе.

LabelMe :-

Инструмент аннотации изображений, написанный на Python.
Поддерживает аннотацию многоугольника.
Открытый исходный код и бесплатно.
Работает на Windows, Mac, Ubuntu или через Anaconda, Docker
Ссылка на сайт :- https://github.com/wkentaro/labelme

Источник: - https://github.com/wkentaro/labelme

Инструмент аннотации компьютерного зрения: -

Инструмент для аннотации видео и изображений, разработанный Intel
Бесплатно и доступно онлайн
Работает на Windows, Mac и Ubuntu
Ссылка на сайт :- https://github.com/opencv/cvat

Аннотатор изображений VGG: -

Бесплатный инструмент для аннотации изображений с открытым исходным кодом
Простая html-страница <200 КБ и может работать в автономном режиме
Поддерживает аннотации и точки многоугольника.
Ссылка на сайт :- https://github.com/ox-vgg/via

Источник: - https://github.com/ox-vgg/via

Рекламная метка: -

Платный инструмент аннотации для Mac
Может использовать базовые модели машинного обучения для предварительного аннотирования изображений
Поддерживает многоугольники, кубики Безье, линии и точки
Ссылка на сайт :- https://github.com/ryouchinsa/Rectlabel-support

Ярлык: -

Платный инструмент аннотации
Поддерживает инструмент "Перо" для более быстрого и точного комментирования
Ссылка на сайт :- https://labelbox.com/product/image-segmentation

Datasets

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

Паскаль Контекст

Этот набор данных является расширением набора данных Pascal VOC 2010 и выходит за рамки исходного набора данных, предоставляя аннотации для всей сцены и содержит более 400 классов реальных данных.

Источник: - https://cs.stanford.edu/~roozbeh/pascal-context/
Источник: - https://cs.stanford.edu/~roozbeh/pascal-context/

Ссылка на сайт :- https://cs.stanford.edu/~roozbeh/pascal-context/

Набор данных COCO

Набор данных COCO stuff содержит 164k изображений исходного набора данных COCO с аннотациями на уровне пикселей и является стандартным эталонным набором данных. Он охватывает 172 класса: 80 классов предметов, 91 класс персонала и 1 класс без ярлыка.

Источник: - http://cocodataset.org/#home

Ссылка на сайт :- http://cocodataset.org/

Набор данных "Городские пейзажи"

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

Источник: - https://www.cityscapes-dataset.com/

Ссылка на сайт :- https://www.cityscapes-dataset.com/

Набор данных Lits

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

Источник: - https://competitions.codalab.org/competitions/17094

Ссылка на сайт :- https://competitions.codalab.org/competitions/17094

Набор данных CCP

Cloth Co-Parsing - это набор данных, который создается как часть исследовательской работы Clothing Co-Parsing by Joint Image Segmentation and Labeling. Набор данных содержит более 1000 изображений с аннотациями на уровне пикселей, всего 59 тегов.

Источник: - https://github.com/bearpaw/clothing-co-parsing

Источник :- https://github.com/bearpaw/clothing-co-parsing

Набор данных Pratheepan

Набор данных, созданный для задачи сегментации кожи на основе изображений из Google, содержащий 32 фотографии лица и 46 семейных фотографий.

Источник: - http://cs-chan.com/downloads_skin_dataset.html

Ссылка на сайт :- http://cs-chan.com/downloads_skin_dataset.html

Маркировка аэрофотоснимков Inria

Набор данных карт аэрофотосъемки, созданных из изображений, являющихся общественным достоянием. Имеет площадь покрытия 810 кв. Км и имеет 2 класса строительный и не строительный.

Источник: - https://project.inria.fr/aerialimagelabeling/
Источник: - https://project.inria.fr/aerialimagelabeling/

Ссылка на сайт :- https://project.inria.fr/aerialimagelabeling/

С3ДИС

Этот набор данных содержит облака точек шести крупномасштабных внутренних частей в 3 зданиях с более чем 70000 изображениями.

Источник: - http://buildingparser.stanford.edu/dataset.html

Ссылка на сайт :- http://buildingparser.stanford.edu/dataset.html

Обзор

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

Чтобы получить список дополнительных ресурсов для семантической сегментации, начните с https://github.com/mrgloom/awesome-semantic-segmentation.

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


Возможно, вас заинтересуют наши последние публикации на:

Обновление:
Добавлен дополнительный материал для чтения.

Источник: https://nanonets.com/blog/semantic-image-segmentation-2020/

Отметка времени:

Больше от ИИ и машинное обучение