Syntidata
Главная / Блог / Компьютерное зрение / Метрики детекции: mAP, IoU, precision и recall без путаницы

Метрики детекции: mAP, IoU, precision и recall без путаницы

Компьютерное зрение

Метрики детекции часто пересказывают формулами, но редко объясняют, что за ними стоит. Разбираем IoU, precision, recall, AP и mAP на понятных примерах и показываем, как по ним принимать решения.

Метрики детекции: mAP, IoU, precision и recall без путаницы

Зачем вообще нужны метрики детекции

Классификатору достаточно одного вопроса: угадал класс или нет. Детектор отвечает сразу на три вопроса: что это за объект, где он находится и насколько модель в нём уверена. Поэтому обычная точность (accuracy) здесь не работает: на типичном кадре фона в тысячи раз больше, чем объектов, и модель, которая ничего не находит, формально «права» почти везде.

Для детекции придумали набор метрик, который учитывает и класс, и положение рамки, и уверенность. Проблема в том, что эти метрики зависят от нескольких настроек: порога перекрытия, порога уверенности, способа усреднения по классам. Две команды могут назвать свои модели «mAP 0.62» и сравнивать несравнимое. В Syntidata мы каждый раз фиксируем протокол оценки до начала обучения, и ниже — те определения, которыми пользуемся сами.

Если вы ещё не знакомы с самой задачей, начните со статьи Детекция объектов: от задачи к рабочей модели, а здесь сосредоточимся на оценке.

IoU: как измерить, попала ли рамка

IoU (Intersection over Union) — это отношение площади пересечения предсказанной и эталонной рамок к площади их объединения. Значение лежит от 0 до 1: ноль означает, что рамки не пересекаются, единица — что они совпали идеально.

Несколько ориентиров, которые полезно держать в голове:

  • IoU около 0.5 — рамка «в целом на объекте», но может заметно сдвинуться или быть слишком большой;
  • IoU около 0.75 — рамка хорошо ложится на объект, ошибка в несколько процентов от размера;
  • IoU выше 0.9 — почти идеальное совпадение, на практике достижимо только для крупных объектов с чёткими границами.

Важная особенность: IoU очень чувствителен к размеру. Для объекта в 10 пикселей сдвиг рамки на один пиксель уже снижает IoU до 0.8 и ниже. Для объекта в 200 пикселей тот же сдвиг почти незаметен. Поэтому на мелких объектах метрики при высоких порогах IoU всегда ниже, и это не обязательно признак плохой модели. Даже эталонная ручная разметка у двух разных людей редко даёт IoU выше 0.9 на мелких предметах.

Что такое порог IoU

Чтобы решить, считать ли предсказание верным, задают порог IoU. Если IoU предсказания с эталоном выше порога и класс совпал, предсказание называют true positive (TP). Если нет, это false positive (FP). Эталонный объект, который никто не нашёл, называется false negative (FN).

Самый частый порог — 0.5. Более строгий вариант — усреднение по порогам от 0.5 до 0.95 с шагом 0.05. Выбор порога должен соответствовать задаче: для подсчёта товаров на полке достаточно 0.5, для захвата деталей манипулятором нужна рамка гораздо точнее.

Precision и recall: две стороны одной монеты

После того как определены TP, FP и FN, считаются две базовые метрики.

Precision (точность) — доля верных срабатываний среди всех срабатываний модели: TP / (TP + FP). Она отвечает на вопрос: «Если модель что-то нашла, насколько можно ей верить?»

Recall (полнота) — доля найденных объектов среди всех реально существующих: TP / (TP + FN). Она отвечает на вопрос: «Сколько из того, что есть на кадре, модель вообще заметила?»

Эти метрики конфликтуют. Снизьте порог уверенности, и модель начнёт отмечать больше объектов: recall вырастет, но появятся ложные срабатывания, и precision упадёт. Повысьте порог, и картина обратная. Поэтому говорить «precision 0.95» без указания порога уверенности бессмысленно.

Какую метрику ставить в приоритет

Выбор зависит от цены ошибки:

  • контроль качества на конвейере, где пропуск дефекта опаснее ложной тревоги, — приоритет recall;
  • автоматическое списание товара или оплата по распознаванию, где ложное срабатывание стоит денег, — приоритет precision;
  • подсчёт объектов для отчётности — важен баланс, и часто смотрят на F1, то есть среднее гармоническое precision и recall.

Пример из практики: для задачи контроля комплектности упаковки заказчик сначала требовал «точность 99 процентов». После разбора выяснилось, что реальная проблема — пропуски недостающих деталей. Мы сместили приоритет на recall и добавили ручную проверку спорных случаев, что обошлось дешевле, чем гнаться за идеальной precision.

Кривая precision-recall и AP

Чтобы не зависеть от одного порога уверенности, строят кривую precision-recall. Для этого предсказания одного класса сортируют по уверенности от высокой к низкой и последовательно «открывают» по одному, пересчитывая precision и recall после каждого шага. Получается кривая: в начале precision высокая, а recall низкий, к концу recall растёт, precision падает.

AP (Average Precision) — это площадь под такой кривой. Чем ближе кривая к правому верхнему углу, тем выше AP. Идеальный детектор получает AP равный 1: он находит все объекты и не делает ложных срабатываний. AP считается отдельно для каждого класса при заданном пороге IoU.

Есть несколько способов численного интегрирования кривой: по 11 точкам, по всем точкам с монотонной огибающей, по 101 точке. Разница между ними обычно не превышает пары процентов, но для честного сравнения реализация должна быть одной и той же. Если вы сравниваете свои результаты с чужими, проверьте, какой именно пакет использовался для расчёта.

mAP: что скрывается за одной цифрой

mAP (mean Average Precision) — это среднее AP по всем классам. В разных источниках встречаются обозначения, которые легко перепутать:

ОбозначениеЧто означает
[email protected]AP усреднён по классам, порог IoU равен 0.5
[email protected]то же при строгом пороге IoU 0.75
[email protected]:0.95среднее по порогам IoU от 0.5 до 0.95 с шагом 0.05
mAP small / medium / largeусреднение отдельно по мелким, средним и крупным объектам

Одно и то же обучение может дать [email protected] равный 0.85 и [email protected]:0.95 равный 0.58. Это не противоречие: вторая метрика строже и штрафует неточные рамки. Когда в отчёте написано просто «mAP», всегда уточняйте, о чём идёт речь.

Три ловушки среднего

Первая ловушка: среднее по классам скрывает слабые классы. Если у вас десять классов и один из них показывает AP около 0.2, общий mAP всё равно может выглядеть прилично. Всегда смотрите на AP по классам, а не только на итоговую цифру.

Вторая ловушка: дисбаланс в валидационной выборке. Класс, у которого в наборе пять примеров, даёт очень шумную оценку, и один пропущенный объект меняет AP на десятки процентов.

Третья ловушка: смешивание размеров. Модель может блестяще работать на крупных объектах и проваливаться на мелких, а общий mAP это замажет. Разбивка по размеру обязательна, если в продакшене будут мелкие объекты.

Как строить честную оценку

Метрики хороши ровно настолько, насколько хороша выборка, на которой их считают. Несколько правил, которые мы закладываем в каждый проект.

  1. Валидационная выборка не должна пересекаться с обучающей ни по кадрам, ни по сценам. Соседние кадры одного видеоролика — это утечка.
  2. Выборка должна отражать реальные условия эксплуатации: освещение, фон, ракурсы, степень загрязнения объектов.
  3. Для каждого класса нужно не менее нескольких десятков примеров, иначе оценка шумная.
  4. Эталонная разметка проверяется отдельно: ошибки в ней портят метрики сильнее, чем ошибки модели.
  5. Протокол (порог IoU, порог уверенности, версия пакета оценки) записывается и не меняется между экспериментами.

Если модель обучается на синтетических датасетах, валидацию на синтетике считать нельзя: она покажет завышенные цифры. Контрольная выборка должна состоять из реальных изображений, снятых в условиях, максимально близких к боевым. Подробнее о проверке качества самого датасета — в статье Как проверить качество синтетического датасета.

От метрик к решениям

Метрика — не цель, а инструмент диагностики. Вот как мы читаем типичные картины.

Низкий recall, высокая precision

Модель осторожна и пропускает объекты. Обычно причины две: недостаточно разнообразные обучающие примеры или слишком высокий порог уверенности. Первым делом снижаем порог и смотрим кривую. Если recall не растёт, расширяем датасет в ту сторону, где модель слепа: другие ракурсы, освещение, частичные перекрытия.

Высокая recall, низкая precision

Модель видит объекты там, где их нет. Часто это путаница между похожими классами или срабатывания на фоне. Помогают отрицательные примеры (кадры без объектов), более жёсткий порог и добавление в обучение «трудных» фоновых сцен.

Хороший [email protected], плохой [email protected]:0.95

Модель находит объекты, но рамки неточные. Проверьте качество разметки: если эталонные рамки у разных разметчиков заметно отличаются, модель не может научиться точности. В синтетических данных эта проблема отсутствует по построению, ведь рамки считаются из геометрии сцены, подробнее об этом — в разделе про разметку масками и рамками.

Метрики хорошие, в продакшене плохо

Классическая история: на валидации 0.9, а на реальном потоке всё разваливается. Почти всегда это означает, что валидационная выборка не похожа на боевые данные. Лечится не тюнингом модели, а пересбором выборки и анализом ошибок на реальных кадрах.

Практический чек-лист перед тем, как показывать цифры

  • Указан порог IoU и способ усреднения.
  • Приведены AP по каждому классу, а не только общий mAP.
  • Есть разбивка по размерам объектов.
  • Указан порог уверенности для precision и recall.
  • Валидация сделана на реальных данных, не пересекающихся с обучением.
  • Просмотрены сами ошибки: десять минут разглядывания пропусков и ложных срабатываний дают больше, чем неделя подбора гиперпараметров.

Одна цифра mAP хороша для таблицы в отчёте, но не для принятия решения. Решение принимают по кривой precision-recall, по ошибкам на конкретных кадрах и по цене каждого типа ошибки в вашем бизнесе.

Если вы собираете датасет под новую задачу и хотите заранее договориться о протоколе оценки, напишите нам на [email protected]. Мы поможем определить метрики, подготовить контрольную выборку и показать, как вырастут показатели при увеличении объёма данных; тестовый датасет предоставляется по запросу.


Читайте также