Sobes.tech
Назад к вопросам
Middle
10

Какие метрики используются для сегментации и детекции объектов?

Компании, где спрашивали
ДомкликДомклик

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Для детекции объектов обычно называют IoU, precision, recall, F1 и mAP. Для сегментации — IoU по классам, Dice/F1 и mean IoU. Важно понимать, что для детекции качество оценивают не только по классу, но и по точности локализации bounding box или mask.

Определение:

Метрики для детекции и сегментации измеряют, насколько предсказания модели совпадают с разметкой по классу и по геометрии объекта.

Для детекции основная идея — сравнить предсказанный и истинный bounding box:

  • IoU (Intersection over Union) — площадь пересечения делённая на площадь объединения двух областей.
  • Precision — доля корректных срабатываний среди всех предсказанных объектов.
  • Recall — доля найденных объектов среди всех объектов в разметке.
  • F1-score — баланс precision и recall.
  • mAP (mean Average Precision) — средняя точность по классам, часто считается при разных порогах IoU.

Для сегментации используются похожие метрики, но сравниваются маски:

  • IoU / Jaccard для масок.
  • Dice coefficient — особенно популярен в медицинской и бинарной сегментации.
  • Pixel accuracy — доля правильно классифицированных пикселей, но может быть обманчивой при сильном дисбалансе классов.
  • mIoU — средний IoU по классам, одна из самых распространённых метрик для semantic segmentation.

Пример использования:

Допустим, модель нашла на изображении человека и машину. Для каждого объекта предсказан bounding box, и нужно понять, насколько они совпадают с разметкой.

def iou(box1, box2):
    # box = [x1, y1, x2, y2]
    x_left = max(box1[0], box2[0])
    y_top = max(box1[1], box2[1])
    x_right = min(box1[2], box2[2])
    y_bottom = min(box1[3], box2[3])

    inter_w = max(0, x_right - x_left)
    inter_h = max(0, y_bottom - y_top)
    intersection = inter_w * inter_h

    area1 = (box1[2] - box1[0]) * (box1[3] - box1[1])
    area2 = (box2[2] - box2[0]) * (box2[3] - box2[1])
    union = area1 + area2 - intersection

    return intersection / union if union > 0 else 0.0

Если IoU >= 0.5, предсказание часто считают корректным детектом.
Для сегментации вместо box сравнивают две маски пиксель за пикселем и считают IoU или Dice.

Пояснение кода:

  1. Берутся координаты двух прямоугольников.
  2. Находится область пересечения.
  3. Считаются площади обоих прямоугольников.
  4. Вычисляется объединение: area1 + area2 - intersection.
  5. Возвращается intersection / union — это и есть IoU.

В практической оценке модели:

  • для детекции сначала сопоставляют предсказанные боксы с эталонными по IoU и классу;
  • затем считают TP/FP/FN, на их основе precision/recall;
  • после этого строят AP по каждому классу и усредняют в mAP;
  • для сегментации аналогично считают overlap между масками, чаще через IoU и Dice.

Ключевые моменты:

  • IoU — базовая метрика и для детекции, и для сегментации.
  • Для детекции важно учитывать и класс, и локализацию объекта.
  • mAP — стандартная итоговая метрика для object detection.
  • Для сегментации часто используют IoU/mIoU и Dice.
  • Pixel accuracy полезна, но плохо работает при дисбалансе классов.
  • Порог IoU сильно влияет на итоговую оценку детектора: чем он выше, тем строже проверка.