Толковый словарь по нейросетям и искусственному интеллекту
Сегментация изображений
Категория термина
Сегментация изображений — это процесс разбиения изображения на отдельные области (сегменты), которые обладают схожими визуальными свойствами (цвет, текстура, форма, глубина и др.). Цель — локализовать и выделить объекты или области интереса на изображении с пиксельной точностью.
В отличие от задач классификации (определить, что изображено) и детектирования объектов (определить, где находится объект с помощью рамки), сегментация отвечает на вопрос: где именно (на уровне каждого пикселя) находятся объекты и фоны.
🔍 Виды сегментации:
| Вид сегментации | Описание |
|---|---|
| Semantic Segmentation (семантическая) | Каждый пиксель помечается как принадлежащий к определённому классу (напр., "дорога", "человек", "дерево") без различия между экземплярами |
| Instance Segmentation (экземплярная) | Каждый пиксель помечается не только классом, но и принадлежностью к конкретному объекту (напр., «человек 1», «человек 2») |
| Panoptic Segmentation (паноптическая) | Объединяет семантическую и экземплярную сегментацию в одном подходе |
📷 Примеры применения:
- 🚗 Автопилоты в автомобилях — распознавание дорог, разметки, пешеходов
- 🧠 Медицина — сегментация органов или опухолей на МРТ/КТ
- 🛰️ Обработка спутниковых снимков — выделение водоёмов, лесов, городов
- 📱 Эффекты AR — отделение человека от фона
- 🛍️ Ритейл — анализ поведения покупателей на видео
🧠 Алгоритмы и модели:
| Метод / Архитектура | Описание |
|---|---|
| U-Net | Сверточная нейросеть с симметричной encoder-decoder архитектурой, популярна в медицине |
| FCN (Fully Convolutional Network) | Первая архитектура, адаптированная для сегментации, без fully connected слоёв |
| Mask R-CNN | Расширение Faster R-CNN для instance segmentation |
| DeepLab (v1-v3+) | Использует пространственные пирамидальные модули и атриальные свёртки |
| SegFormer, Segment Anything (SAM) | Новые state-of-the-art модели от Meta, Google и других исследователей |
🧪 Пример использования на PyTorch (U-Net):
pythonimport torch
import torch.nn as nn
import torchvision.transforms as T
from torchvision.models.segmentation import fcn_resnet50# Загружаем модель (предобученную на COCO)
model = fcn_resnet50(pretrained=True)
model.eval()# Пример изображения
from PIL import Image
img = Image.open("road.jpg")
transform = T.Compose([T.Resize((256, 256)), T.ToTensor()])
input_tensor = transform(img).unsqueeze(0)# Предсказание
with torch.no_grad():
output = model(input_tensor)['out']
prediction = output.argmax(1).squeeze().numpy()
📊 Метрики качества:
| Метрика | Назначение |
|---|---|
| IoU (Intersection over Union) | Главная метрика — насколько пересекаются истинные и предсказанные пиксели |
| Dice coefficient (F1-score) | Похожа на IoU, особенно популярна в медицине |
| Pixel Accuracy | Доля правильно классифицированных пикселей |
| Mean IoU | Среднее значение IoU по всем классам |
⚠️ Проблемы и вызовы:
- Неоднозначность границ между объектами
- Большое количество мелких классов (пример: травинки, тени, отражения)
- Требование к большим размеченным датасетам (аннотирование пикселей — трудоёмко)
- Влияние разрешения изображения на точность
📦 Популярные датасеты:
- COCO — включает аннотации для instance segmentation
- Cityscapes — сегментация городских сцен (дороги, пешеходы и т.д.)
- ADE20K — более 150 классов объектов в интерьере и экстерьере
- Pascal VOC — один из классических датасетов для сегментации
- LUNA, BRATS — медицинские изображения
🧭 Вывод:
Сегментация изображений — это ключевая задача в компьютерном зрении, позволяющая моделям понимать не только что изображено, но и где именно. Она требует высокой точности, особенно в чувствительных областях (например, медицине и беспилотниках). Современные глубокие нейросети способны достигать впечатляющих результатов, особенно при наличии качественных данных и продуманной архитектуры.