ENIGMA AI
ENIGMA AI

Как в задаче детекции объектов определить, является ли предсказание модели истинно положительным (True Positive) или ложноположительным (False Positive)?

встречается 1× Machine Learning middle algorithms

Как ответить

Чтобы определить, является ли предсказание модели истинно положительным (TP) или ложноположительным (FP), нужно сравнить предсказанный bounding box с ground truth (размеченным эталоном) и применить порог по метрике Intersection over Union (IoU). Если IoU между предсказанием и эталоном больше или равен порогу (обычно 0.5), и при этом класс совпадает, то это TP. Если IoU ниже порога или класс не совпадает — FP. Если на один объект приходится несколько предсказаний, только одно с максимальным IoU считается TP, остальные — FP (это называется non-maximum suppression).

Подробнее процесс выглядит так:

  • На этапе валидации у нас есть список ground truth (объекты с координатами и классами) и список предсказаний модели.
  • Для каждого предсказания вычисляем IoU со всеми ground truth того же класса. IoU = площадь пересечения / площадь объединения боксов.
  • Выбираем ground truth с максимальным IoU. Если этот IoU >= порога (например, 0.5) и класс совпадает — предсказание считается TP. Если IoU < порога или класс не совпадает — FP.
  • Если один ground truth уже сопоставлен с TP, другие предсказания для того же объекта (с IoU >= порога) считаются FP — это избыточные детекции.
  • Для подсчёта метрик (precision, recall) также учитываются false negative (FN) — ground truth, для которого не нашлось ни одного TP.

Пример на псевдокоде:

for pred in predictions:
    best_iou = 0
    best_gt = None
    for gt in ground_truths:
        if pred.class != gt.class:
            continue
        iou = compute_iou(pred.box, gt.box)
        if iou > best_iou:
            best_iou = iou
            best_gt = gt
    if best_iou >= threshold and not best_gt.matched:
        pred.label = 'TP'
        best_gt.matched = True
    else:
        pred.label = 'FP'

На практике порог IoU часто варьируют (0.5, 0.75, 0.95) и усредняют метрики — так получается mAP (mean Average Precision). Если порог слишком низкий, много FP проскочит; если слишком высокий — много TP станет FN. Выбор порога зависит от задачи: для детекции пешеходов нужен высокий порог (чтобы избежать ложных срабатываний), для медицинской визуализации — ниже (чтобы не пропустить находки).

Ключевые тезисы

  • Используем IoU (Intersection over Union) между предсказанием и ground truth.
  • Порог IoU обычно 0.5; при IoU >= порога и совпадении класса — TP, иначе FP.
  • Один ground truth может быть сопоставлен только с одним TP; остальные предсказания для того же объекта — FP.
  • Учитываем false negative (FN) — ground truth без TP.
  • На практике метрики считают при разных порогах IoU (mAP@[0.5:0.95]).

Что спросят дальше

  • — Как изменится precision и recall, если увеличить порог IoU с 0.5 до 0.75?
  • — Что делать, если модель выдаёт несколько перекрывающихся предсказаний одного класса на один объект?
  • — Как посчитать mAP, если в задаче несколько классов?

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение