Сегментация изображений
Кратко
Сегментация изображений (image segmentation) — разбиение изображения на области с попиксельной точностью: каждому пикселю присваивается метка. Если детекция обводит объект прямоугольной рамкой, то сегментация вырезает его точный силуэт. Это самый детальный уровень понимания сцены в компьютерном зрении.
Для чего используется
- медицина: локализация опухолей, измерение тканей, планирование операций;
- беспилотный транспорт: попиксельная разметка дороги, обочин, пешеходов;
- анализ спутниковых снимков: выделение дорог, зданий, посевов;
- зрение роботов: точные границы предмета нужны, чтобы его захватить;
- видеонаблюдение и обработка видео.
Как работает
Три постановки задачи:
- семантическая сегментация — класс каждого пикселя; отдельные экземпляры не различаются (все автомобили — одна маска «автомобиль»);
- экземплярная (instance) — каждый экземпляр объекта получает свою маску;
- паноптическая (panoptic) — совмещает обе: у каждого пикселя и класс, и номер экземпляра.
До нейросетей работали классические методы: пороговая бинаризация (метод Оцу), кластеризация (k-средних, mean shift), выделение границ по перепадам яркости, наращивание областей. В 2015 году state of the art в семантической сегментации перешёл к свёрточным сетям.
Типовая нейросетевая архитектура — энкодер-декодер. Эталон — U-Net (Ronneberger et al., MICCAI 2015): сжимающий путь захватывает контекст (что на изображении), симметричный расширяющий путь восстанавливает точную локализацию (где именно), а skip-связи передают детали с ранних слоёв напрямую в декодер. U-Net обучается end-to-end на малом числе размеченных изображений за счёт агрессивной аугментации; сегментация кадра 512×512 занимала меньше секунды уже на GPU 2015 года.
Экземплярную сегментацию решает Mask R-CNN (He et al., ICCV 2017): к детектору Faster R-CNN добавлена параллельная ветвь, предсказывающая попиксельную маску для каждой найденной рамки, — накладные расходы небольшие, скорость около 5 кадров/с.
Новый этап — фундаментальные модели. Segment Anything Model (SAM, Meta AI, 2023) сегментирует по запросу: пользователь указывает точку или рамку, модель выделяет объект. SAM переносится zero-shot на новые типы изображений, и его качество часто сравнимо с моделями, обученными под конкретную задачу, или выше.
Основные компоненты
- энкодер — свёрточная или трансформерная сеть, сжимающая изображение в признаки;
- декодер — восстанавливает попиксельную карту меток из признаков;
- skip-связи — передают детали высокого разрешения в декодер (U-Net);
- ветвь масок — в экземплярных методах поверх детектора (Mask R-CNN);
- эталонные датасеты — MS COCO: 2,5 млн экземпляров с попиксельными масками.
Примеры
- U-Net (2015) — создан для биомедицины (нейронные структуры в электронной микроскопии, трекинг клеток), выиграл ISBI cell tracking challenge 2015 с большим отрывом; сегодня — базовая архитектура сегментации во многих областях.
- Mask R-CNN (2017) — превзошёл все одиночные модели во всех трёх треках COCO 2016 (сегментация, детекция, ключевые точки); код открыт (Detectron).
- SAM (2023) — обучен на датасете SA-1B: 1 млрд масок на 11 млн лицензированных изображений, крупнейший датасет сегментации на момент выхода.
Связанные темы
Источники
- Wikipedia — Image segmentation — определение, типы, классические методы, применения.
- U-Net (Ronneberger et al., MICCAI 2015) — архитектура энкодер-декодер со skip-связями.
- Mask R-CNN (He et al., ICCV 2017) — экземплярная сегментация поверх Faster R-CNN.
- Segment Anything (Kirillov et al., 2023) — сегментация по запросу, датасет SA-1B.
- Microsoft COCO (Lin et al., ECCV 2014) — эталонный датасет масок.