Детекция и сегментация объектов
Детекция и сегментация - проверка словаря плотных задач: IoU, mAP, NMS, focal loss. И одного различения, на котором горят: semantic против instance сегментации.
// Вопрос-детектор: «как посчитать людей на фото семантической сегментацией?» Правильный ответ - никак.
Детекция: боксы, IoU и mAP
Детекция = класс + bounding box для каждого объекта. Двухстадийные (Faster R-CNN: пропозалы → уточнение) исторически точнее, одностадийные (YOLO, RetinaNet) быстрее - сегодня трейдоф сузился, YOLO-класс закрывает большинство прод-задач.
IoU - пересечение/объединение боксов: мера совпадения предсказания с истиной и порог для засчитывания TP (true positive). mAP - средняя точность по классам и порогам IoU - стандартная метрика; accuracy тут не значит ничего.
// Anchor-based против anchor-free: сетка боксов-заготовок против прямого предсказания центров и расстояний - вторые проще и постепенно вытесняют первые.
- IoU
- intersection over union - совпадение боксов/масок
- mAP
- средняя AP (average precision) по классам и порогам IoU - метрика детекции
- CNN
- convolutional neural network
NMS и три вида сегментации
Детектор выдаёт кучу перекрывающихся боксов одного объекта. NMS (non-maximum suppression) жадно оставляет самый уверенный и гасит пересекающиеся с ним выше порога IoU. Порог - ручка: занизил - съел соседние объекты, завысил - дубли.
Сегментация: semantic - класс каждому пикселю, экземпляры слиты («все люди - один класс»); instance - отдельная маска каждому объекту (Mask R-CNN); panoptic - объединение обоих.
// U-Net - стандарт плотной сегментации: энкодер-декодер со skip-связями с ранних слоёв, возвращающими декодеру пространственные детали.
- NMS
- подавление дублей боксов по IoU с самым уверенным
- semantic / instance
- класс пикселям (слитно) / маска каждому экземпляру
Дисбаланс фон/объект
Главная боль плотных задач: 99% пикселей или анкоров - фон. Обычная кросс-энтропия учится отвечать «фон» и довольна собой.
Лечения: focal loss глушит вклад лёгких негативов (фокус на трудном), dice/IoU-лоссы оптимизируют перекрытие напрямую, взвешивание классов - грубый но рабочий вариант.
// Выбор лосса под метрику: оптимизируешь IoU - бери лосс, который про IoU, а не про попиксельную точность.
- focal loss
- гасит лёгкие негативы - лечит дисбаланс фон/объект
- dice loss
- оптимизация перекрытия масок напрямую
Как отвечать: «Чем semantic сегментация отличается от instance и как их оценивать?»
Semantic присваивает класс каждому пикселю, но не различает экземпляры: три человека - одно слитное пятно «человек», посчитать их нельзя. Instance даёт отдельную маску каждому объекту это Mask R-CNN и семейство; panoptic объединяет оба взгляда. Оценка тоже разная: semantic - mean IoU по классам, instance - mAP по маскам с порогами IoU, как в детекции. Практическое правило выбора: нужно «где какая поверхность» - semantic; нужно «сколько и какие объекты» - instance.
Различение через задачу «посчитать объекты», правильные метрики каждому виду и правило выбора.
На чём валят
- −Оценивать детектор accuracy'ю - нужна mAP с порогами IoU.
- −Забыть NMS или поставить порог наобум - дубли боксов либо съеденные соседи.
- −«Посчитать людей» semantic-сегментацией - экземпляры слиты, нужна instance.
- −Кросс-энтропия без борьбы с дисбалансом - модель предсказывает фон и довольна.
Проверьте себя
Пять вопросов из банка по этой подтеме. Всего их 13, остальные разбираются в тренажёре.
- Зачем в детекции нужен NMS (non-maximum suppression)?A)Чтобы принудительно увеличить итоговое число рамок в выдаче детектора ради повышения его полноты на мелких объектах, покрывая каждый объект множеством перекрывающихся рамокB)Чтобы убрать из обучающей выборки изображения, на которых объекты сильно перекрывают друг другаC)Убрать дублирующие сильно перекрывающиеся рамки одного объекта, оставив по каждому объекту одну — с наибольшим скоромD)Чтобы перевести предсказанные прямоугольные рамки в пиксельную маску сегментации того же самого объекта на кадре
показать ответ и разбор
+C)Убрать дублирующие сильно перекрывающиеся рамки одного объекта, оставив по каждому объекту одну — с наибольшим скором// разбор: Детектор обычно выдаёт по объекту множество близких рамок с разными скорами. NMS сортирует их по уверенности и жадно оставляет лучшую, подавляя все, что сильно перекрываются с ней по IoU выше порога, — так на каждый объект остаётся одна рамка. Без NMS выдача завалена дубликатами. Это постобработка боксов, а не увеличение их числа и не переход к маске.
- One-stage детекторы (YOLO, SSD) против two-stage (Faster R-CNN) — в чём основной трейдофф?A)One-stage во всём превосходит two-stage, поэтому two-stage-детекторы сегодня не используютB)Разницы между ними нет никакой: это просто два разных исторических названия одной и той же архитектуры детектораC)One-stage — рамки за один проход, быстрее (realtime); two-stage сначала region proposals, точнее на мелкихD)Two-stage работает на видео, а one-stage — на отдельных статичных изображениях без движения в кадре
показать ответ и разбор
+C)One-stage — рамки за один проход, быстрее (realtime); two-stage сначала region proposals, точнее на мелких// разбор: Two-stage (Faster R-CNN) сначала генерирует region proposals, затем классифицирует и уточняет каждый — точнее, особенно на мелких и плотных объектах, но медленнее. One-stage (YOLO, SSD) предсказывает классы и рамки напрямую по сетке за один проход — заметно быстрее, годится для realtime, ценой некоторой точности. Выбор диктуется требованием к скорости против точности, а не типом входа.
- Что такое anchor boxes (якоря) в детекторах вроде SSD и Faster R-CNN?A)Готовые точные рамки объектов прямо из разметки, которые модель просто копирует на инференсеB)Заранее заданные шаблоны рамок разных размеров и пропорций, относительно которых модель предсказывает поправкиC)Одна рамка на весь кадр, внутри которой лежат все объекты изображения сразуD)Специальные пиксели-якоря, по которым изображение геометрически выравнивается перед подачей в сеть
показать ответ и разбор
+B)Заранее заданные шаблоны рамок разных размеров и пропорций, относительно которых модель предсказывает поправки// разбор: Якоря — набор заранее заданных прямоугольников разных масштабов и пропорций, расставленных по позициям карты признаков. Для каждого якоря модель предсказывает не абсолютную рамку, а поправку (смещение и масштаб) и вероятность класса — так локализация сводится к регрессии относительно опор, что проще, чем предсказывать рамки «с нуля». Якоря — не разметка и не пиксели выравнивания.
- Что такое mAP (mean Average Precision) в детекции объектов?A)Доля кадров, где детектор нашёл хотя бы один объект, усреднённая по всему тестовому наборуB)Средняя скорость работы детектора в кадрах в секунду, усреднённая по всем классам объектов и по разным разрешениям входаC)Отношение числа верных рамок к общему числу пикселей изображения, в среднем по датасетуD)Средняя по классам площадь под кривой precision-recall (AP), при заданном пороге IoU совпадения
показать ответ и разбор
+D)Средняя по классам площадь под кривой precision-recall (AP), при заданном пороге IoU совпадения// разбор: Рамку считают верной, если IoU с эталоном выше порога (например, 0.5); варьируя порог уверенности, строят кривую precision-recall и берут площадь под ней — Average Precision. mAP — среднее AP по классам (в COCO ещё и по набору порогов IoU). Так метрика учитывает точность, полноту и качество локализации разом. Это не доля кадров, не скорость и не отношение к пикселям.
- Чем instance segmentation отличается от semantic segmentation?A)Semantic красит каждый пиксель классом, а instance ещё и разделяет отдельные объекты одного классаB)Instance работает с одним объектом в кадре, а semantic — со всеми классами, поэтому instance для многолюдных сцен не годитсяC)Semantic выдаёт прямоугольные рамки объектов, а instance — лишь один общий класс на весь кадрD)Между ними нет разницы: это два разных названия одной и той же попиксельной разметки кадра
показать ответ и разбор
+A)Semantic красит каждый пиксель классом, а instance ещё и разделяет отдельные объекты одного класса// разбор: Semantic segmentation присваивает класс каждому пикселю, но не различает два объекта одного класса (три человека — единое пятно «человек»). Instance segmentation дополнительно разделяет экземпляры (человек №1, №2, №3), выдавая маску на каждый объект. Panoptic объединяет оба взгляда. Рамки — это детекция; здесь речь о попиксельных масках, а разница именно в разделении экземпляров.
дальше
Теорию прочитали. Навык ставится повторением
В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.