8.1 KiB
Сегментация
Ранее мы изучали обнаружение объектов, которое позволяет находить объекты на изображении, предсказывая их ограничивающие рамки. Однако для некоторых задач нам нужны не только рамки, но и более точная локализация объектов. Эта задача называется сегментацией.
Тест перед лекцией
Сегментацию можно рассматривать как классификацию пикселей, где для каждого пикселя изображения мы должны предсказать его класс (фон является одним из классов). Существует два основных алгоритма сегментации:
- Семантическая сегментация определяет только класс пикселя, не различая отдельные объекты одного и того же класса.
- Сегментация экземпляров разделяет классы на отдельные экземпляры.
Для сегментации экземпляров эти овцы считаются разными объектами, но для семантической сегментации все овцы представлены одним классом.
Изображение из этой статьи
Существуют различные нейронные архитектуры для сегментации, но все они имеют одинаковую структуру. В некотором смысле, она похожа на автоэнкодер, о котором вы узнали ранее, но вместо деконструкции исходного изображения наша цель — деконструировать маску. Таким образом, сеть для сегментации состоит из следующих частей:
- Энкодер извлекает признаки из входного изображения.
- Декодер преобразует эти признаки в маску изображения, с тем же размером и количеством каналов, соответствующих количеству классов.
Изображение из этой публикации
Особое внимание следует уделить функции потерь, используемой для сегментации. При использовании классических автоэнкодеров нам нужно измерить сходство между двумя изображениями, и для этого можно использовать среднеквадратичную ошибку (MSE). В сегментации каждый пиксель целевой маски изображения представляет номер класса (закодированный в формате one-hot вдоль третьего измерения), поэтому необходимо использовать функции потерь, специфичные для классификации, такие как кросс-энтропия, усреднённая по всем пикселям. Если маска бинарная, используется бинарная кросс-энтропия (BCE).
✅ One-hot кодирование — это способ преобразования метки класса в вектор длиной, равной количеству классов. Ознакомьтесь с этой статьёй о данной технике.
Сегментация в медицинской визуализации
В этом уроке мы увидим сегментацию в действии, обучая сеть распознавать невусы (родинки) на медицинских изображениях. Мы будем использовать базу данных PH2 дерматоскопических изображений в качестве источника данных. Этот набор данных содержит 200 изображений трёх классов: типичный невус, атипичный невус и меланома. Все изображения также содержат соответствующую маску, которая выделяет невус.
✅ Этот метод особенно подходит для такого типа медицинской визуализации, но какие ещё реальные приложения вы могли бы представить?
Изображение из базы данных PH2
Мы обучим модель сегментировать любой невус от его фона.
✍️ Упражнения: Семантическая сегментация
Откройте ноутбуки ниже, чтобы узнать больше о различных архитектурах семантической сегментации, попрактиковаться в работе с ними и увидеть их в действии.
Тест после лекции
Заключение
Сегментация — это очень мощная техника классификации изображений, которая выходит за рамки ограничивающих рамок и позволяет классифицировать пиксели. Она используется в медицинской визуализации и других приложениях.
🚀 Задание
Сегментация тела — это лишь одна из распространённых задач, которые можно выполнять с изображениями людей. Другие важные задачи включают обнаружение скелета и определение позы. Попробуйте библиотеку OpenPose, чтобы увидеть, как можно использовать определение позы.
Обзор и самостоятельное изучение
Эта статья в Википедии предлагает хороший обзор различных приложений данной техники. Узнайте больше самостоятельно о поддомейнах сегментации экземпляров и паноптической сегментации в этой области исследований.
Задание
В этой лабораторной работе попробуйте сегментацию человеческого тела с использованием Segmentation Full Body MADS Dataset из Kaggle.