Как ответить
Порог 0.5 в детекции объектов встречается в двух разных смыслах: как confidence threshold (минимальная уверенность модели, чтобы сохранить предсказание) и как IoU threshold (минимальное пересечение с истинным объектом, чтобы считать детекцию правильной). Чаще всего, когда говорят про метрики, имеют в виду второй — IoU=0.5, который зашит в стандартную метрику mAP@0.5.
Confidence threshold — это фильтр на выходе модели. Детектор (например, YOLO или Faster R-CNN) выдаёт для каждого bounding box число от 0 до 1 — вероятность, что там объект нужного класса. Если поставить порог 0.5, все боксы с уверенностью ниже просто отбрасываются. Это прямо влияет на количество false positive и false negative. Чем ниже порог, тем выше recall (больше объектов найдёте), но падает precision (больше мусора). Чем выше — наоборот. На практике порог подбирают под конкретную задачу: например, для системы распознавания лиц на проходной лучше взять 0.9, чтобы не было ложных срабатываний, а для поиска пешеходов в умном городе можно опустить до 0.3, чтобы не пропустить никого.
IoU threshold (Intersection over Union) используется при оценке качества модели. Чтобы понять, правильная детекция или нет, считают пересечение предсказанного бокса с истинным (ground truth) и делят на объединение. Если IoU ≥ 0.5 — предсказание считается true positive (TP). Если < 0.5 — false positive (FP). Если для истинного объекта нет ни одного предсказания с IoU ≥ 0.5 — это false negative (FN). Именно на основе TP/FP/FN потом считают precision, recall и строят метрику mAP.
Метрика mAP@0.5 (mean Average Precision при IoU=0.5) считается так:
- Для каждого confidence threshold (перебираем все уникальные значения уверенности отсортированных предсказаний) получаем пару (precision, recall).
- Строим PR-кривую — зависимость precision от recall.
- Интерполируем: для каждого recall берём максимальный precision при любом recall ≥ текущего.
- Усредняем precision по 11 или 101 точкам recall (или считаем площадь под кривой).
- Повторяем для каждого класса и усредняем — получаем mAP.
Выбор порога 0.5 — компромисс: он допускает неточную локализацию. Если вам нужна высокая точность позиционирования (например, для сегментации дефектов на печатной плате), используют более строгие пороги — 0.75 или даже 0.9. Именно для этого в COCO есть метрика mAP@[0.5:0.95] — среднее по порогам от 0.5 до 0.95 с шагом 0.05, она лучше отражает качество локализации.
Пример для одного изображения: на картинке 2 собаки. Модель выдала 3 бокса с уверенностью >0.5. Для каждого считаем IoU с истинными. Два бокса попали точно (IoU > 0.5) — это TP. Третий бокс лежит на пустом месте (IoU < 0.5 со всеми) — FP. Одна собака не нашлась — FN. Precision = 2/3 ≈ 0.67, Recall = 2/2 = 1.0. Для этого одного порога уверенности это точка на PR-кривой. Повторяем для других порогов — строим всю кривую.
На практике понимание обоих порогов помогает осмысленно настраивать модель под задачу: confidence threshold — для фильтрации результатов при инференсе, IoU threshold — для объективной оценки качества на валидации.