сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · Computer Vision

Детекция и сегментация объектов

Зачем это спрашивают

Детекция и сегментация - проверка словаря плотных задач: 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, остальные разбираются в тренажёре.

  1. #detection_segmentation1 / 5
    Зачем в детекции нужен NMS (non-maximum suppression)?
    A)Чтобы принудительно увеличить итоговое число рамок в выдаче детектора ради повышения его полноты на мелких объектах, покрывая каждый объект множеством перекрывающихся рамок
    B)Чтобы убрать из обучающей выборки изображения, на которых объекты сильно перекрывают друг друга
    C)Убрать дублирующие сильно перекрывающиеся рамки одного объекта, оставив по каждому объекту одну — с наибольшим скором
    D)Чтобы перевести предсказанные прямоугольные рамки в пиксельную маску сегментации того же самого объекта на кадре
    показать ответ и разбор
    +C)Убрать дублирующие сильно перекрывающиеся рамки одного объекта, оставив по каждому объекту одну — с наибольшим скором

    // разбор: Детектор обычно выдаёт по объекту множество близких рамок с разными скорами. NMS сортирует их по уверенности и жадно оставляет лучшую, подавляя все, что сильно перекрываются с ней по IoU выше порога, — так на каждый объект остаётся одна рамка. Без NMS выдача завалена дубликатами. Это постобработка боксов, а не увеличение их числа и не переход к маске.

  2. #detection_segmentation2 / 5
    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, ценой некоторой точности. Выбор диктуется требованием к скорости против точности, а не типом входа.

  3. #detection_segmentation3 / 5
    Что такое anchor boxes (якоря) в детекторах вроде SSD и Faster R-CNN?
    A)Готовые точные рамки объектов прямо из разметки, которые модель просто копирует на инференсе
    B)Заранее заданные шаблоны рамок разных размеров и пропорций, относительно которых модель предсказывает поправки
    C)Одна рамка на весь кадр, внутри которой лежат все объекты изображения сразу
    D)Специальные пиксели-якоря, по которым изображение геометрически выравнивается перед подачей в сеть
    показать ответ и разбор
    +B)Заранее заданные шаблоны рамок разных размеров и пропорций, относительно которых модель предсказывает поправки

    // разбор: Якоря — набор заранее заданных прямоугольников разных масштабов и пропорций, расставленных по позициям карты признаков. Для каждого якоря модель предсказывает не абсолютную рамку, а поправку (смещение и масштаб) и вероятность класса — так локализация сводится к регрессии относительно опор, что проще, чем предсказывать рамки «с нуля». Якоря — не разметка и не пиксели выравнивания.

  4. #detection_segmentation4 / 5
    Что такое 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). Так метрика учитывает точность, полноту и качество локализации разом. Это не доля кадров, не скорость и не отношение к пикселям.

  5. #detection_segmentation5 / 5
    Чем 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 объединяет оба взгляда. Рамки — это детекция; здесь речь о попиксельных масках, а разница именно в разделении экземпляров.

дальше

Теорию прочитали. Навык ставится повторением

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