Компьютерное зрение
Материал из MachineLearning.
Danis Sabirov (Обсуждение | вклад)
(Новая: {{Шаблон:Философия ИИ/Статья создана с помощью ИИ|модель=Claude 3.5 Sonnet / Gemini Pro|проверка=Укажите_ваше_имя}} _...)
К следующему изменению →
Версия 12:48, 15 июня 2026
Шаблон:Философия ИИ/Статья создана с помощью ИИ
Сегментация изображений
Сегментация изображений (англ. image segmentation) — одна из фундаментальных задач компьютерного зрения, заключающаяся в разделении цифрового изображения на несколько сегментов (множеств пикселей, также известных как суперпиксели) с целью упрощения и/или изменения представления изображения для его последующего анализа. С точки зрения статистического обучения, задача сегментации представляет собой задачу пространственно-координированной попиксельной классификации или регрессии.
1. Постановка задачи
Пусть задано исходное изображение, представленное в виде трёхмерного тензора <math>X \in \mathbb{R}^{H \times W \times C}</math>, где <math>H</math> — высота изображения (число строк пикселей), <math>W</math> — ширина изображения (число столбцов пикселей), а <math>C</math> — количество каналов (например, <math>C=3</math> для цветового пространства RGB или <math>C=1</math> для полутоновых изображений).
Определим дискретную пространственную сетку пикселей как множество пар индексов:
- <math>\Omega = \{1, \dots, H\} \times \{1, \dots, W\}, \quad (i, j) \in \Omega</math>
Каждому пикселю с координатами <math>(i, j)</math> соответствует вектор признаков <math>\mathbf{x}_{ij} \in \mathbb{R}^C</math>. В зависимости от постановки задачи, задано конечное множество меток классов <math>\mathcal{Y} = \{1, \dots, K\}</math>, где <math>K</math> — количество целевых категорий, включая, если необходимо, класс «фон» (background).
Целью обучения является построение отображения (алгоритма классификации) <math>f: \mathbb{R}^{H \times W \times C} \to \mathcal{Y}^{H \times W}</math>, которое сопоставляет исходному тензору <math>X</math> матрицу истинных ответов (маску сегментации) <math>Y \in \mathcal{Y}^{H \times W}</math>. Таким образом, для каждого отдельного пикселя принимается решение:
- <math>\hat{y}_{ij} = f(X)_{ij}, \quad \hat{y}_{ij} \in \mathcal{Y}</math>
2. Разновидности сегментации
В современном компьютерном зрении принято строгое разделение задачи на три подтипа в зависимости от структуры множества <math>\mathcal{Y}</math> и требований к идентифицируемым объектам:
- Семантическая сегментация (Semantic Segmentation): Попиксельная классификация, при которой все пиксели, принадлежащие к объектам одного и того же класса (например, «автомобиль»), помечаются идентичным индексом <math>y_{ij}</math>. Индивидуальные границы отдельных экземпляров объектов внутри одного класса не разделяются.
- Экземплярная сегментация (Instance Segmentation): Задача, совмещающая детекцию объектов и сегментацию. Алгоритм должен не только определить класс объекта, но и локализовать каждый экземпляр (instance) отдельно. Множество меток для изображения динамически расширяется: <math>\mathcal{Y} = \{(c_1, id_1), (c_2, id_2), \dots\}</math>, где <math>c</math> — класс, а <math>id</math> — уникальный идентификатор конкретного физического объекта. Пиксели фона при этом могут игнорироваться.
- Паноптическая сегментация (Panoptic Segmentation): Синтез семантической и экземплярной сегментации (Kirillov et al., 2019). Все множество классов разделяется на подмножества <math>\mathcal{Y}_{things}</math> (исчисляемые объекты, имеющие четкие границы: люди, машины) и <math>\mathcal{Y}_{stuff}</math> (аморфные фоновые регионы и текстуры: небо, трава, дорога). Для <math>\mathcal{Y}_{things}</math> применяется экземплярный подход, для <math>\mathcal{Y}_{stuff}</math> — семантический, при этом каждый пиксель изображения обязан получить ровно одну уникальную метку.
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). Тензоры признаков из энкодера конкатенируются с соответствующими по разрешению тензорами декодера до выполнения свёртки:
- <math>Z_{dec}^{(l)} = \text{Concat}\left(Z_{enc}^{(l)}, \ \text{Up}\left(Z_{dec}^{(l+1)}\right)\right)</math>
Это решает проблему потери низкоуровневых пространственных признаков (координат, точных границ), которая неизбежно происходит при сильном сжатии в энкодере.
Семейство DeepLab и разреженная свёртка
Предложено группой исследователей из Google (Chen et al., 2014–2017). Вместо сильного уменьшения разрешения с последующим восстановлением, авторы применили разреженную (а trous / dilated) свёртку. Свёрточное ядро расширяется за счет введения параметра разреженности (dilation rate) <math>r</math>. Для одномерного сигнала свёртка с ядром <math>w</math> длины <math>K</math> приобретает вид:
- <math>y[i] = \sum_{k=1}^{K} x[i + r \cdot k] \cdot w[k]</math>
При <math>r=1</math> операция эквивалентна стандартной свёртке. Использование <math>r > 1</math> позволяет экспоненциально увеличивать рецептивное поле (receptive field) нейрона без увеличения числа обучаемых параметров и потери пространственного разрешения. Дополнительно введён модуль ASPP (Atrous Spatial Pyramid Pooling), извлекающий признаки на разных масштабах за счет параллельных разреженных свёрток с разными значениями <math>r</math>.

