Найти в Дзене

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

Оглавление

Мы привыкли, что компьютерное зрение может найти лицо на фото или номер машины. Но представьте, что нужно не просто найти объект, а вырезать его по точной форме. Пиксель за пикселем, как ножницами.

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

Сегментация в компьютерном и машинном зрении.
Сегментация в компьютерном и машинном зрении.

Зачем вообще нужна сегментация?

Допустим, у нас есть фотография улицы. Там машины, пешеходы, разметка, дома, деревья.

Если использовать классический детектор объектов, он обведёт прямоугольниками людей, машины, велосипеды. Примерно.

Но это недостаточно для:

  • автопилота, который должен чётко знать границы дороги и пешехода,
  • хирурга, который смотрит на МРТ-снимок мозга,
  • дрона, который отличает виноград от сорняков.

Во всех этих случаях нужны точные формы, не просто коробки.

Сегментация позволяет компьютеру понять, где заканчивается человек и начинается фон. Где точно проходит кромка поля. Где граница между органом и опухолью.

--

Если вы хотите узнать как автоматизировать процессы, снизить брак с помощью компьютерного машинного зрения, напишите мне в телеграм: https://t.me/dvdiamanto

--

Какие бывают виды сегментации

1. Семантическая сегментация (Semantic Segmentation)

Каждому пикселю присваивается метка: небо, дорога, человек, дерево и т.д.

Все пиксели одного класса окрашиваются в один цвет. Главное —
тип объекта, не его индивидуальность.

2. Сегментация экземпляров (Instance Segmentation)

Здесь важно различать конкретные объекты: три человека — это три отдельных маски, а не просто "все люди".

3. Паноптическая сегментация (Panoptic Segmentation)

Объединяет две предыдущие: и тип, и экземпляр. То есть: "это дерево 1", "это дерево 2", "это земля".

Еще одно представление того как машинное или компьютерное зрение сегментирует объекты.
Еще одно представление того как машинное или компьютерное зрение сегментирует объекты.

Как это работает технически (простыми словами)

Всё строится на нейросетях — в первую очередь сверточных (CNN). Они "смотрят" на изображение слоями: сначала находят края и узоры, потом объекты, потом — границы.

Сеть превращает картинку в набор вероятностей — для каждого пикселя: насколько вероятно, что он относится к тому или иному классу. Затем эта карта переводится в цветную маску.

Популярные архитектуры:

  • U-Net — простой и мощный вариант, особенно популярен в медицине
  • Mask R-CNN — расширение Faster R-CNN с точной сегментацией объектов
  • DeepLab (v3, v3+) — лучше справляется с масштабами объектов и сложным фоном
  • SAM (Segment Anything Model) — модель от Meta, умеющая выделять любые объекты с минимальными подсказками

Реальные примеры использования

📍 Медицина

Разметка опухолей, сосудов, лёгких, сетчатки. Точная сегментация органов перед операцией.

Пример: модель U-Net обучена выделять опухоль мозга на МРТ-снимке.

📍 Беспилотники

Дорога, тротуар, машина, человек, велосипед — всё должно быть размечено до пикселя.

Пример: DeepLab используется в автопилоте, чтобы отличить дорогу от обочины.

📍 Сельское хозяйство

Выделение отдельных растений, выявление больных участков, подсчёт плодов.

Пример: дрон облетает поле, сегментирует листья кукурузы и находит повреждённые участки.

📍 AR и виртуальная реальность

Разделение человека и фона в реальном времени, наложение эффектов.

Пример: нейросеть выделяет тело пользователя на видео и заменяет фон без зелёного экрана.

📍 Робототехника

Робот должен понимать форму предмета, чтобы взять его. Не просто "вот кружка", а "вот её границы".

Пример: манипулятор на заводе сегментирует детали на конвейере.

Компьютерное зрение сегментируем объекты на изображении.
Компьютерное зрение сегментируем объекты на изображении.

--

Если вы хотите узнать как автоматизировать процессы, снизить брак с помощью компьютерного машинного зрения, напишите мне в телеграм: https://t.me/dvdiamanto

--

Как обучают такие модели

Обучение требует размеченных данных. Это — узкое место.

Если для классификации нужно просто подписать фото ("это кошка"), то для сегментации нужно подписать каждый пиксель.

Иногда это делают вручную. Иногда — с помощью полуавтоматических инструментов.

Для сложных задач (например, в медицине) приходится привлекать специалистов.

Хорошо известные датасеты:

  • Cityscapes — городской ландшафт, используется в обучении автопилотов
  • Pascal VOC / COCO — объекты в реальных сценах
  • LIDC-IDRI — снимки лёгких с аннотацией опухолей

А в чём сложности?

  • Тонкая разметка — дорога и тротуар могут быть почти одного цвета
  • Масштаб объектов — человек рядом и вдали должны быть найдены одинаково точно
  • Освещение и тени — мешают точному разделению
  • Реальное время — многие модели слишком тяжелы для быстрой работы на телефоне или дроне

Сегментация в Python: простой пример

Для начала можно попробовать OpenCV + предобученную модель. Или использовать PyTorch / TensorFlow с U-Net.

Вот фрагмент кода:

import torch
from torchvision import transforms
from PIL import Image

# Загружаем изображение
image = Image.open('input.jpg')
transform = transforms.ToTensor()
input_tensor = transform(image).unsqueeze(0)

# Загружаем предобученную модель
model = torchvision.models.segmentation.deeplabv3_resnet101(pretrained=True).eval()
output = model(input_tensor)['out'][0]

# Получаем маску сегментации
mask = output.argmax(0).byte().cpu().numpy(

Куда движется сегментация дальше?

Сегодня появляются всё более универсальные модели:

  • SAM (Segment Anything) — сегментирует всё, что угодно, даже без обучения под конкретную задачу
  • CLIPSeg — сегментирует объекты по текстовому описанию: "все собаки на фото"
  • Zero-shot и Few-shot сегментация — модели, которые учатся на лету с минимумом примеров

Идея в том, чтобы дать компьютеру зрение уровня человека, где не нужно объяснять, что такое "собака на пляже" — он сам поймёт, где она.

Заключение

Сегментация — это не просто про цвета на маске. Это путь к тому, чтобы компьютер понимал, а не просто видел.

С точной сегментацией можно строить умные города, лечить сложные болезни, создавать автономных роботов и развивать дополненную реальность.

Это одна из самых сложных, но и самых захватывающих областей компьютерного зрения.

--

Если вы хотите узнать как автоматизировать процессы, снизить брак с помощью компьютерного машинного зрения, напишите мне в телеграм: https://t.me/dvdiamanto