Как ответить
Чтобы определить, является ли предсказание модели истинно положительным (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. Выбор порога зависит от задачи: для детекции пешеходов нужен высокий порог (чтобы избежать ложных срабатываний), для медицинской визуализации — ниже (чтобы не пропустить находки).