Компьютерное зрение

Материал из MachineLearning.

Перейти к: навигация, поиск

Шаблон:Философия ИИ/Статья создана с помощью ИИ

Содержание

Сегментация изображений

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

1. Постановка задачи

Пусть задано исходное изображение, представленное в виде трёхмерного тензора X из пространства RH × W × C, где H — высота изображения (число строк пикселей), W — ширина изображения (число столбцов пикселей), а C — количество каналов (например, C = 3 для цветового пространства RGB или C = 1 для полутоновых изображений).

Определим дискретную пространственную сетку пикселей как множество пар индексов:

Ω = {1, ..., H} × {1, ..., W},      (i, j) ∈ Ω

Каждому пикселю с координатами (i, j) соответствует вектор признаков xijRC. В зависимости от постановки задачи, задано конечное множество меток классов Y = {1, ..., K}, где K — количество целевых категорий, включая, если необходимо, класс «фон» (background).

Целью обучения является построение отображения (алгоритма классификации) f, переводящего тензор признаков в матрицу ответов. Таким образом, для каждого отдельного пикселя алгоритм принимает решение:

ŷij = f(X)ij,      ŷij ∈ {1, ..., K}

2. Разновидности сегментации

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

  1. Семантическая сегментация (Semantic Segmentation): Попиксельная классификация, при которой все пиксели, принадлежащие к объектам одного и того же класса (например, «автомобиль»), помечаются идентичным индексом класса. Индивидуальные границы отдельных экземпляров объектов внутри одного класса не разделяются.
  2. Экземплярная сегментация (Instance Segmentation): Задача, совмещающая детекцию объектов и сегментацию. Алгоритм должен не только определить класс объекта, но и локализовать каждый экземпляр (instance) отдельно. Множество меток для изображения динамически расширяется уникальными идентификаторами для каждого физического объекта. Пиксели фона при этом могут игнорироваться.
  3. Паноптическая сегментация (Panoptic Segmentation): Синтез семантической и экземплярной сегментации (Kirillov et al., 2019). Все множество классов разделяется на подмножества исчисляемых объектов (things: люди, машины) и аморфных фоновых регионов (stuff: небо, трава, дорога). Для объектов применяется экземплярный подход, для фона — семантический, при этом каждый пиксель изображения обязан получить ровно одну уникальную метку.

3. Эволюция подходов и историческая справка

Развитие методов сегментации можно разделить на два выраженных этапа: классический (детерминированный) и глубокий (стохастический).

Классические методы

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

  • Пороговая фильтрация (Thresholding): Метод Отсу (Otsu, 1979), максимизирующий межклассовую дисперсию интенсивностей пикселей для бинаризации изображений.
  • Маркерный водораздел (Watershed Algorithm): Интерпретация градиента изображения как топографического рельефа (Beucher, Lantuéjoul, 1979). Метод склонен к избыточной сегментации при наличии шумов.
  • Графовые методы (Graph Cuts): Изображение представляется в виде взвешенного графа, где пиксели — вершины, а ребра отражают пространственную илическую близость. Задача сегментации сводится к нахождению минимального разреза (Boykov, Jolly, 2001) путём максимизации потока в графе.

Переход к глубокому обучению

Революция в задаче произошла в 2015 году с публикацией концепции Fully Convolutional Networks (FCN) (Long, Shelhamer, Darrell, 2015). Авторы предложили заменить полносвязные (dense) слои классификационных сетей (архитектур VGG, AlexNet) на свёрточные слои. Это позволило принимать на вход изображения произвольного пространственного размера и сохранять пространственную разметку тензора на выходе за счет применения операций транспонированной свёртки (transposed convolution) для восстановления исходного разрешения.

4. Базовые нейросетевые архитектуры

U-Net

Разработана для сегментации медицинских изображений (Ronneberger et al., 2015). Архитектура имеет симметричную контурную структуру (U-shape) и состоит из двух частей:

  • Энкодер (сжимающий путь): Классическая свёрточная топология, извлекающая высокоуровневые семантические признаки и уменьшающая пространственное разрешение тензора с помощью операций Subsampling (Max Pooling).
  • Декодер (разжимающий путь): Восстанавливает исходный размер маски с помощью апсэмплинга (Up-sampling / Transposed Convolution).

Ключевое нововведение U-Net — перекрёстные связи (skip-connections). Тензоры признаков из энкодера конкатенируются с соответствующими по разрешению тензорами декодера до выполнения свёртки:

Zdec(l) = concat( Zenc(l), Up( Zdec(l+1) ) )

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

Семейство DeepLab и разреженная свёртка

Предложено группой исследователей из Google (Chen et al., 2014–2017). Вместо сильного уменьшения разрешения с последующим восстановлением, авторы применили разреженную (atrous / dilated) свёртку. Свёрточное ядро расширяется за счет введения параметра разреженности r. Для одномерного сигнала свёртка с ядром w длины K приобретает вид:

y[i] = ∑k=1..K x[i + r · k] · w[k]

Использование r > 1 позволяет экспоненциально увеличивать рецептивное поле нейрона без увеличения числа обучаемых параметров. Дополнительно введен модуль ASPP (Atrous Spatial Pyramid Pooling), извлекающий признаки на разных масштабах.

Сегментирующие трансформеры и SAM

Современный этап развития CV ознаменовался переходом от свёрточных архитектур к архитектурам на основе механизмов внимания (Attention). Модели класса Vision Transformer (ViT), такие как SETR (Zheng et al., 2021), рассматривают изображение как последовательность визуальных патчей. Кульминацией этого направления стала модель SAM (Segment Anything Model) (Kirillov et al., 2023), разработанная Meta. SAM способна осуществлять сегментацию в режиме Zero-Shot на основе различных типов промптов: точек или ограничивающих рамок.

5. Функции потерь (Loss Functions)

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

  • Попиксельная многоклассовая кросс-энтропия (Pixel-wise Cross-Entropy):
LCE = − (1 / |Ω|) · ∑(i,j)∈Ωk=1..K y ij, k · ln( p ij, k )
где y ij, k — бинарный индикатор принадлежности пикселя (i,j) к классу k, а p ij, k — предсказанная моделью вероятность (после слоя Softmax). Данная функция нестабильна, если мелкие объекты теряются на огромном фоне.
  • Потери на основе коэффициента Дайса (Dice Loss):
Представляет собой дифференцируемый аналог меры сходства и напрямую оптимизирует перекрытие масок:
LDice = 1 − ( 2 · ∑(i,j)∈Ω y ij · p ij ) / ( ∑(i,j)∈Ω y ij2 + ∑(i,j)∈Ω p ij2 )
  • Focal Loss (Фокальные потери):
Модификация кросс-энтропии для подавления вклада легко классифицируемых пикселей (обычно пикселей фона):
LFocal = − (1 / |Ω|) · ∑(i,j)∈Ω (1 − p ij)γ · ln( p ij )
где γ (гамма) — гиперпараметр фокусировки. При γ > 0 модель концентрируется на «сложных» пикселях (границах и мелких деталях).

6. Метрики качества

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

  1. Pixel Accuracy (PA): Простая доля правильно классифицированных пикселей. Метрика дает ложно завышенные результаты при дисбалансе классов (если фон занимает 95% площади, предсказание чистого фона даст PA = 95%).
  2. Intersection over Union (IoU / Метрика Жаккара): Отношение площади пересечения предсказанной и истинной масок к площади их объединения. Для класса k рассчитывается как:
IoUk = TPk / (TPk + FPk + FNk)
где TP, FP, FN — истинно положительные, ложно положительные и ложно отрицательные попиксельные срабатывания соответственно. Итоговое качество модели оценивается по метрике mIoU (среднее IoU по всем классам).
  1. Dice Coefficient (F1-score на уровне пикселей): Гармоническое среднее между попиксельной точностью (Precision) и полнотой (Recall):
Dicek = (2 · TPk) / (2 · TPk + FPk + FNk)

7. Распространенные ошибки и практические рекомендации

  • Размытие и неточность границ объектов: Свёрточные сети из-за операций макс-пулинга склонны «округлять» острые углы и размывать мелкие детали. Рекомендуется использовать архитектуры со skip-connections (U-Net) или применять блоки условных случайных полей (CRF) на этапе постпроцессинга.
  • Дисбаланс классов: Борьба с доминированием фона ведется либо через взвешивание кросс-энтропии (введение весов классов, обратно пропорциональных их частоте в датасете), либо переходом на Dice Loss.
  • Аугментация данных: При обучении моделей сегментации любые геометрические трансформации (повороты, отражения, масштабирование) должны применяться к исходному изображению X и к маске ответов Y абсолютно синхронно, иначе разрушается пространственная координация пар «признак-ответ».
Личные инструменты