Какие метрики используются для сегментации и детекции объектов
Что проверяют
Знаете ли вы, как устроен mAP на самом деле, а не только его название, и почему для сегментации не годится pixel accuracy. Следом обычно спрашивают, чем mAP в COCO отличается от mAP@0.5 и что меняется, если поднять порог IoU.
Как отвечать
Детекция:
- IoU: площадь пересечения предсказанной и истинной рамки, делённая на площадь объединения. По порогу IoU предсказание засчитывается как TP или FP, повторные предсказания на уже найденный объект считаются FP;
- precision и recall: считаются при каждом пороге уверенности модели, отсюда кривая precision-recall;
- AP и mAP: AP это площадь под этой кривой для одного класса, mAP это среднее AP по классам;
- COCO mAP: AP, усреднённый ещё и по десяти порогам IoU от 0,50 до 0,95 с шагом 0,05. Отдельно смотрят AP50, AP75 и AP для маленьких, средних и больших объектов. mAP@0.5 в стиле PASCAL VOC заметно мягче.
Сегментация:
- mIoU: IoU по пикселям для каждого класса, усреднённый по классам. Основная метрика семантической сегментации;
- Dice:
2|A∩B| / (|A|+|B|), по сути F1 на пикселях, популярен в медицине. С IoU связан монотонно:Dice = 2·IoU / (1 + IoU); - mask AP: для instance-сегментации тот же COCO AP, но IoU считается по маскам;
- PQ: panoptic quality для паноптической сегментации, произведение качества сегментации и качества распознавания.
Считают через pycocotools или torchmetrics (MeanAveragePrecision, JaccardIndex), чтобы цифры были сопоставимы с публикациями.
Где спотыкаются
Отчитываются pixel accuracy. Если фон занимает 95% кадра, модель, которая везде рисует фон, получает 95% и не находит ничего.
Сравнивают mAP из разных протоколов. 0,6 по VOC и 0,4 по COCO вполне могут описывать одну и ту же модель.
Путают mAP и рабочий порог. mAP усредняет по всем порогам уверенности, а в проде модель работает на одном, поэтому для запуска порог выбирают отдельно и смотрят precision и recall именно на нём.