Сегментация изображений
Материал из MachineLearning.
| | Статья написана с использованием LLM GPT-5.6 Thinking и проверена участником Egor Goroshko 04:16, 18 июля 2026 (MSD) |
Сегментация изображений (англ. image segmentation) — задача компьютерного зрения, состоящая в разбиении изображения на области, соответствующие объектам, частям объектов, фону или другим значимым структурам. В современных методах машинного обучения сегментация обычно формулируется как предсказание категории или идентификатора объекта для каждого пикселя изображения.
В отличие от классификации изображений (англ. image classification), определяющей категорию изображения в целом, и обнаружения объектов (англ. object detection), локализующего объекты преимущественно с помощью ограничивающих прямоугольников, сегментация позволяет получить их точную пространственную форму.
Сегментация используется, когда необходимо определить не только наличие объектов или областей, но и их границы, размеры, положение и взаимное расположение. Результат сегментации может быть конечным результатом системы или промежуточным представлением для последующего распознавания, измерения, редактирования и принятия решений.
Содержание |
Постановка задачи
Пусть задано цифровое изображение
где и
— высота и ширина изображения в пикселях, а
— число каналов. Например, цветное изображение в цветовом пространстве RGB обычно имеет три канала.
Алгоритм сегментации строит отображение
где — модель сегментации,
— её параметры, а
— множество допустимых результатов. В случае нейронной сети параметрами
являются прежде всего веса её слоёв. Они определяются во время обучения на примерах изображений и соответствующей им разметки.
Для семантической сегментации результат обычно представляется картой меток
где — число классов. Карта
имеет те же пространственные размеры, что и исходное изображение. Значение
указывает класс пикселя с координатами
. Например, если задача содержит классы «фон», «объект первого типа» и «объект второго типа», каждый пиксель должен получить одну из трёх меток.
Логиты и вероятности
Нейронная сеть обычно не выдаёт готовую метку непосредственно. Для каждого пикселя и каждого класса она сначала вычисляет числовую оценку, называемую логитом (англ. logit).
Выход модели можно представить тензором
где — логит класса
для пикселя
. Чем больше логит, тем сильнее модель предпочитает соответствующий класс. Однако логиты не являются вероятностями: они могут быть отрицательными или положительными и не обязаны находиться в диапазоне от нуля до единицы.
Функция softmax
Функция softmax (англ. softmax function) преобразует набор логитов в распределение вероятностей по классам. Для каждого пикселя она вычисляется по формуле
где — оценённая моделью вероятность принадлежности пикселя
классу
, а
— экспоненциальная функция.
Экспонента преобразует логиты в положительные значения, а деление на сумму экспонент нормирует их. Поэтому для каждого пикселя выполняются условия
и
Таким образом, softmax создаёт отдельное распределение вероятностей для каждого пикселя. Например, модель может присвоить одному пикселю вероятности ,
и
для трёх классов. Наиболее вероятным считается второй класс.
Большое значение softmax показывает, что один логит существенно превосходит остальные. Однако оно не всегда означает, что модель надёжно работает на данном изображении: нейронные сети могут выдавать высокие вероятности и на данных, отличающихся от обучающей выборки.
Для бинарной сегментации вместо softmax часто применяется логистическая функция (англ. sigmoid function):
Она преобразует один логит в число от нуля до единицы, интерпретируемое как вероятность принадлежности пикселя целевому классу. Softmax обычно используется, когда каждый пиксель должен принадлежать ровно одному из взаимоисключающих классов. Логистическая функция применяется в бинарных задачах или в случаях, когда несколько меток могут предсказываться независимо.
Выбор итоговой метки
После получения вероятностей итоговый класс пикселя обычно выбирается с помощью операции argmax:
Операция возвращает номер класса, для которого вероятность максимальна. Символ
обозначает предсказанную моделью карту сегментации, а
— эталонную разметку.
В бинарной сегментации решение можно получить сравнением вероятности с порогом:
где — порог, а
— индикаторная функция. Она равна единице, если условие выполнено, и нулю в противном случае. Часто используется порог
, однако его можно подбирать по валидационной выборке в зависимости от допустимого соотношения между ложными срабатываниями и пропущенными объектами.
Основные виды сегментации
Семантическая сегментация
Семантическая сегментация (англ. semantic segmentation) присваивает каждому пикселю категорию. Разные объекты одного класса при этом не различаются. Например, пиксели всех объектов одного типа получают одинаковую метку независимо от того, сколько отдельных объектов присутствует на изображении. Результатом является карта классов, описывающая смысловую структуру изображения.
Сегментация экземпляров
Сегментация экземпляров (англ. instance segmentation) не только определяет класс пикселей, но и различает отдельные объекты одного класса. Если на изображении находятся несколько объектов одного типа, каждый из них получает собственный идентификатор и отдельную бинарную маску.
Одна из наиболее известных архитектур этого типа — Mask R-CNN. Она расширяет детектор Faster R-CNN дополнительной ветвью, предсказывающей маску каждого обнаруженного объекта.[1]
Паноптическая сегментация
Паноптическая сегментация (англ. panoptic segmentation) объединяет семантическую сегментацию и сегментацию экземпляров. Каждый пиксель получает семантический класс, а для отдельных объектов дополнительно указывается идентификатор экземпляра.[1]
В этой постановке обычно различают две группы классов:
- things — объекты, естественно представляемые отдельными экземплярами;
- stuff — протяжённые области, для которых разделение на экземпляры обычно не требуется.
Интерактивная сегментация
Интерактивная сегментация (англ. interactive segmentation) использует дополнительные указания пользователя: точки, линии, ограничивающие прямоугольники или грубые маски. Пользователь обозначает интересующую область, после чего алгоритм уточняет её границы.
Классические интерактивные методы могут формулировать задачу как поиск минимального разреза графа (англ. graph cut).[1]
Современным развитием этого направления является сегментация по подсказке (англ. promptable segmentation). Модель получает запрос в виде точки, прямоугольника, маски или текста и строит соответствующую область. Примером является Segment Anything Model.[1]
История
Ранние методы сегментации основывались на анализе яркости, цвета, текстуры и локальных границ. К ним относятся пороговая обработка изображений, выделение контуров, наращивание областей, кластеризация и методы математической морфологии.
В конце 1970-х годов для сегментации изображений было предложено водораздельное преобразование (англ. watershed transform), рассматривающее изображение или его градиент как топографическую поверхность.[1] Эффективный алгоритм водораздела на цифровой решётке был позднее описан Винсентом и Суалем.[1]
В 2000-е годы широко применялись графические модели, марковские случайные поля, условные случайные поля и методы оптимизации на графах. Они позволяли учитывать одновременно свойства отдельных пикселей и согласованность соседних областей.
Переход к современным методам связан с развитием глубоких свёрточных нейронных сетей. Архитектура Fully Convolutional Network показала, что классификационную сеть можно преобразовать в модель плотного предсказания, выдающую класс для каждого пикселя.[1]
В том же году была предложена архитектура U-Net, использующая симметричные пути уменьшения и восстановления разрешения.[1]
В дальнейшем появились модели с разреженными свёртками, многомасштабным объединением признаков, механизмами внимания и трансформерами.
Классические методы
Пороговая обработка
Пороговая обработка изображений (англ. image thresholding) разделяет пиксели на группы по значению яркости, цвета или другого числового признака.
Для бинарной сегментации правило можно записать как
где — значение признака пикселя,
— порог, а
— индикаторная функция. Если значение пикселя не меньше порога, результат равен единице, в противном случае — нулю.
Метод прост и требует мало вычислений, но его качество снижается при неравномерном освещении, низком контрасте и пересечении распределений признаков разных областей. Порог может задаваться вручную, вычисляться отдельно для разных частей изображения или определяться автоматически. Одним из известных способов автоматического выбора является метод Оцу.
Методы областей
Методы наращивания областей (англ. region growing) начинают работу с одного или нескольких начальных пикселей, называемых семенами. К области последовательно добавляются соседние пиксели, удовлетворяющие критерию сходства. Критерий может учитывать яркость, цвет, текстуру или расстояние до среднего значения области. Результат зависит от выбора начальных точек и критерия остановки.
Методы границ
Методы на основе границ (англ. edge-based segmentation) ищут резкие изменения яркости или цвета, которые могут соответствовать границам объектов. Для этого используются операторы вычисления градиента, например оператор Собеля или детектор границ Кэнни.
Градиент изображения показывает направление и величину наиболее быстрого изменения яркости. Однако найденные контуры могут быть разорванными или шумными, поэтому часто требуется дополнительная обработка.
Водораздельное преобразование
Водораздельное преобразование интерпретирует изображение как топографический рельеф, где значение каждого пикселя рассматривается как высота. Локальные минимумы образуют водосборные бассейны, а линии их встречи становятся границами сегментов.
Прямое применение может приводить к чрезмерному дроблению изображения. Для уменьшения этого эффекта используется водораздел по маркерам (англ. marker-controlled watershed).
Кластеризация
При сегментации с помощью кластеризации пиксели объединяются в группы на основе сходства их признаков. Вектор признаков пикселя может включать цвет, координаты, текстурные характеристики и признаки, извлечённые нейронной сетью.
Для кластеризации могут применяться метод k-средних, смесь гауссовских распределений или спектральная кластеризация. Обычная кластеризация не гарантирует пространственную связность областей. Для учёта положения координаты пикселей включают в признаки или используют суперпиксели (англ. superpixels) — компактные группы соседних пикселей с похожими свойствами.
Графовые методы
Изображение можно представить в виде графа, вершинами которого являются пиксели или суперпиксели, а рёбра задают отношения соседства.
Сегментация может определяться минимизацией энергии
где — стоимость присвоения вершине метки,
— штраф за сочетание меток соседних вершин, а
регулирует влияние пространственной согласованности.
Первое слагаемое отражает соответствие пикселя выбранному классу, а второе обычно поощряет одинаковые метки у соседних похожих пикселей. Для некоторых видов энергии задача решается с помощью минимального разреза графа.
Условное случайное поле (англ. conditional random field, CRF) также моделирует зависимости между соседними метками и может использоваться для уточнения границ.[1]
Нейросетевые методы
Свёрточные нейронные сети
Свёрточная нейронная сеть (англ. convolutional neural network, CNN) обрабатывает изображение с помощью обучаемых свёрточных фильтров. Свёртка вычисляет новый признак как взвешенную комбинацию значений в небольшой окрестности пикселя. Ранние слои сети обычно выделяют простые структуры, а глубокие — более сложные формы и семантические признаки.
При классификации пространственное разрешение признаков постепенно уменьшается, а для сегментации его необходимо сохранить или восстановить.
Полностью свёрточные сети
Полностью свёрточная сеть (англ. fully convolutional network, FCN) вместо одного ответа для изображения формирует пространственную карту предсказаний.[1]
Для восстановления исходного размера применяется увеличение разрешения (англ. upsampling) с помощью интерполяции или обучаемой транспонированной свёртки. Интерполяция вычисляет значения новых элементов на основе соседних, а транспонированная свёртка содержит обучаемые параметры.
Кодировщик и декодировщик
Архитектура кодировщик — декодировщик (англ. encoder–decoder) состоит из двух частей. Кодировщик (англ. encoder) уменьшает разрешение и извлекает признаки. При этом растёт рецептивное поле — область исходного изображения, влияющая на конкретный элемент карты признаков.
Декодировщик (англ. decoder) восстанавливает пространственное разрешение и преобразует признаки в карту классов. U-Net использует пропускающие соединения (англ. skip connections), передающие признаки из кодировщика в соответствующие слои декодировщика.[1] Это помогает сохранять мелкие детали и точные границы.
Разреженные свёртки
Разреженная свёртка (англ. dilated convolution или atrous convolution) применяет элементы фильтра с промежутками. Это увеличивает рецептивное поле без дополнительного уменьшения разрешения.
В семействе DeepLab применяется Atrous Spatial Pyramid Pooling, или ASPP: несколько разреженных свёрток с разными коэффициентами выполняются параллельно.[1] Так модель получает признаки разных пространственных масштабов. В DeepLabv3+ этот механизм объединён с декодировщиком, уточняющим границы сегментов.[1]
Механизм внимания и трансформеры
Механизм внимания (англ. attention mechanism) позволяет модели учитывать относительную важность различных частей входных данных. В трансформере (англ. transformer) самовнимание (англ. self-attention) сопоставляет элементы изображения друг с другом и моделирует зависимости между удалёнными областями.
Это полезно, когда класс пикселя зависит не только от локальной окрестности, но и от структуры всего объекта или изображения. Например, SegFormer сочетает иерархический трансформер-кодировщик с простым декодировщиком.[1]
Фундаментальные модели
Фундаментальные модели (англ. foundation models) обучаются на больших и разнообразных наборах данных и предназначаются для переноса между множеством задач. В сегментации такая модель может получать подсказку в виде точки, прямоугольника или предварительной маски и выделять соответствующий объект.[1]
Такие модели могут ускорять разметку и создание прототипов, однако их качество необходимо отдельно проверять на целевых данных.
Обучение моделей
Обучение с учителем
При обучении с учителем модель получает пары, состоящие из изображения и эталонной маски. Модель строит предсказание, после чего вычисляется функция потерь (англ. loss function), показывающая отличие от разметки.
С помощью обратного распространения ошибки вычисляются производные функции потерь по параметрам модели. Затем оптимизатор, например вариант градиентного спуска, изменяет параметры в направлении уменьшения ошибки.
Перекрёстная энтропия
Для многоклассовой сегментации часто используется перекрёстная энтропия (англ. cross-entropy loss):
где равно единице, если пиксель
относится к классу
, и нулю в остальных случаях.
Если модель присваивает правильному классу высокую вероятность, значение потери мало. Низкая вероятность правильного класса приводит к большой ошибке. При дисбалансе классов используется взвешенная перекрёстная энтропия, увеличивающая вклад редких или важных классов.
Функция потерь Dice
Коэффициент Сёренсена — Дайса (англ. Sørensen–Dice coefficient) измеряет перекрытие двух областей:
Если области полностью совпадают, коэффициент равен единице. Если они не пересекаются, он равен нулю.
Для обучения используется дифференцируемая функция потерь Dice (англ. Dice loss):
где — предсказанная вероятность,
— истинная бинарная метка, а
предотвращает деление на ноль. Dice loss напрямую поощряет перекрытие областей и часто полезна при сильном дисбалансе классов.
Фокальная функция потерь
Фокальная функция потерь (англ. focal loss) уменьшает вклад простых, уже правильно классифицируемых примеров и увеличивает относительный вклад сложных.[1]
Она применяется, когда большая часть пикселей принадлежит легко распознаваемому классу, а редкие классы имеют особое значение. На практике несколько функций потерь могут объединяться:
где и
задают вклад каждой составляющей.
Метрики качества
Intersection over Union
Одной из основных метрик сегментации является коэффициент Жаккара, также называемый Intersection over Union, или IoU:
Числитель показывает площадь пересечения предсказанной и эталонной областей, а знаменатель — площадь их объединения. IoU равен единице при полном совпадении масок и нулю при отсутствии пересечения.
Для многоклассовой сегментации IoU вычисляется отдельно для каждого класса, после чего находится среднее:
Эта метрика называется mean Intersection over Union, или mIoU.
Коэффициент Dice
Коэффициент Dice также используется как метрика качества. Он связан с IoU:
Обе метрики измеряют перекрытие областей, но имеют разные числовые шкалы.
Пиксельная точность
Пиксельная точность (англ. pixel accuracy) — доля пикселей, которым модель назначила правильный класс:
где — число правильно классифицированных пикселей, а
— общее число пикселей.
При дисбалансе классов эта метрика может вводить в заблуждение. Например, если большую часть изображения занимает фон, модель может получить высокую точность, почти всегда предсказывая только фон. Поэтому пиксельную точность обычно используют вместе с IoU, Dice и метриками отдельных классов.
Precision и recall
Precision показывает, какая доля пикселей, отнесённых моделью к целевому классу, действительно принадлежит этому классу:
где — число правильно найденных пикселей класса, а
— число ложных срабатываний.
Recall показывает, какая доля истинных пикселей класса была найдена:
где — число пропущенных пикселей класса. Высокая precision означает небольшое число ложных срабатываний, а высокая recall — небольшое число пропусков.
Метрики границ и экземпляров
Если важна точность контуров, используются метрики границ (англ. boundary metrics), сравнивающие положение предсказанного и эталонного контуров.
Для сегментации экземпляров часто применяется средняя точность (англ. average precision, AP). Предсказанная маска считается совпавшей с эталонной, если их IoU превышает заданный порог.
Для паноптической сегментации используется Panoptic Quality, объединяющая качество обнаружения экземпляров и точность их масок.[1]
Данные и разметка
Для обучения с учителем требуются изображения и соответствующие им маски. Пиксельная разметка обычно требует больше времени, чем присвоение одной метки всему изображению.
Распространённые способы хранения разметки:
- растровая карта целочисленных меток;
- отдельная бинарная маска для каждого класса;
- отдельная маска для каждого экземпляра;
- многоугольники, преобразуемые в растровые маски;
- кодирование серий одинаковых значений (англ. run-length encoding, RLE);
- контуры, точки и другие разреженные аннотации.
При подготовке данных необходимо определить единые правила разметки границ, перекрывающихся объектов, частично видимых областей и неопределённых пикселей.
Обучающая, валидационная и тестовая выборки должны быть разделены так, чтобы близкие или почти одинаковые изображения не попадали в разные части набора. Иначе возникает утечка данных, завышающая оценку качества.
Аугментация данных
Аугментация данных (англ. data augmentation) — создание дополнительных обучающих примеров путём преобразования существующих данных.
К геометрическим преобразованиям относятся отражение, поворот, масштабирование, сдвиг и случайная обрезка. Они должны одинаково применяться к изображению и его маске. Изменение яркости, контраста или цвета применяется только к изображению.
При изменении размера категориальной маски обычно используется интерполяция методом ближайшего соседа, поскольку другие методы могут создавать несуществующие промежуточные значения классов.
Практическое построение системы
Разработка системы сегментации обычно включает:
- Определение классов и правил разметки.
- Подготовку обучающей, валидационной и тестовой выборок.
- Выбор архитектуры, функции потерь и метрик.
- Обучение модели и анализ ошибок.
- Проверку на новых данных и оптимизацию вычислений.
При выборе модели учитывают точность масок, качество границ, устойчивость на редких классах, скорость и потребление памяти. При небольшом объёме данных применяют перенос обучения (англ. transfer learning) и аугментацию.
Основные трудности
К основным трудностям относятся:
- Дисбаланс классов: крупные области могут преобладать над редкими объектами.
- Неоднозначные границы: контуры могут быть размытыми или зависеть от правил разметки.
- Мелкие объекты: уменьшение разрешения приводит к потере небольших и тонких структур.
- Сдвиг распределения (англ. distribution shift): качество снижается на данных, отличающихся от обучающих.
- Вычислительная стоимость: высокое разрешение повышает требования к памяти и скорости вычислений.
Для решения этих проблем применяют взвешенные функции потерь, многомасштабные признаки, аугментацию, перенос обучения и проверку модели на разнообразных данных.
Применение
Сегментация изображений применяется в задачах, где необходимо:
- отделить интересующую область от фона;
- определить точную форму объектов;
- построить смысловую карту изображения;
- разделить отдельные экземпляры объектов;
- вычислить площадь, длину или число областей;
- оценить взаимное расположение объектов;
- подготовить данные для последующего распознавания;
- выполнить автоматическое или интерактивное редактирование;
- преобразовать визуальные данные в структурированное представление.
Сегментация может использоваться самостоятельно или как часть более крупной системы компьютерного зрения.
См. также
- Компьютерное зрение
- Обработка изображений
- Распознавание образов
- Классификация изображений
- Обнаружение объектов
- Свёрточная нейронная сеть
- Трансформер (архитектура глубокого обучения)
- Математическая морфология
- Суперпиксель
- Условное случайное поле
- Аугментация данных
- Перенос обучения

