Содержание

AP (Average precision) – это популярная метрика измерения точности детекторов объектов таких как Faster R-CNN, SSD и т.д. Average Precision вычисляет среднюю точность для recall в диапазоне от 0 до 1. Звучит сложно, хотя на самом деле это довольно просто, как мы продемонстрируем на примерах ниже. Но прежде надо разобраться с понятиями precision, recall и IoU.

Precision & recall

Precision измеряет, насколько точны ваши предсказания. Например, какой процент ваших предсказаний корректен.

Recall измеряет, насколько хорошо вы находите все положительные образцы. Например, мы можем находить 80% от всех возможных положительных случаев в наших К лучших предсказаниях.

Ниже математическое определение этих понятий:

Например, для определения рака, формулы будут следующими:

IoU (Intersection over union)

IoU измеряет перекрытие между двумя областями. Это используется для определения процента перекрытия предсказанной областью нахождения объекта его реальной области нахождения. Для некоторых наборов данных для IoU предопределяется некий порог (скажем, 0,5), и это используется для классификации предсказания (например, True Positive или False Negative).

Определение IoU

AP

Создадим сверхупрощённый пример для демонстрации расчёта average precision. Предположим, в этом примере набор данных содержит изображения 5 яблок. Мы консолидируем все предсказания и сортируем их по убыванию предсказанного уровня уверенности. Вторая колонка консолидированного отчёта отображает корректность предсказания. Для данного примера предсказание считается корректным, если IoU >= 0,5.

Возьмём строку с индексом 3 и продемонстрируем расчёт показателей precision и recall.

Precision – это пропорция 2/3 = 0.67.

Recall – это пропорция 2/5 = 0.4.

Recall растёт по мере того, как мы движемся вниз по индексу. Однако, precision рисуется зигзагом – значение падает вместе с false positives, и растёт с true positives.

Отобразим зависимость между precision и recall, чтобы увидеть зигзаг.

Кривая precision-recall

Общее определение Average Precision можно сформулировать как поиск области под кривой precision-recall.

Precision и recall всегда лежат в интервале от 0 до 1. Следовательно, и AP лежит в том же интервале. Перед тем как определять AP, часто производится сглаживание зигзага.

Графически, для каждого значения recall замещается значение precision его максимальным значением до момента поворота тренда.

Таким образом, оранжевая линия трансформируется в зелёную, и кривая начинает убывать монотонно вместо зигзагообразного тренда. Рассчитанная AP будет менее подвержена небольшим вариациям. Математически, мы замещаем значение precision для значения recall ȓ максимальным значением precision для любого значения recall ≥ ȓ.

Интерполированная AP

PASCAL VOC – популярный набор данных для детекции объектов. Для связанного соревнования, предсказание считается успешным, если IoU >= 0,5. Также если по какой-то причине один и тот же объект был детектирован несколько раз, только первая детекция считается положительной, в то время как остальные относятся к отрицательным.

В Pascal VOC2008 рассчитывается усреднение для 11-точечной интерполированной AP.

Прежде всего, мы определяем возможные значения recall в интервале от 0 до 1 как 11 точек – 0; 0,1; 0,2; …; 0,9; 1,0. Затем мы рассчитываем для каждой точки среднее от максимального значения precision.

В примере выше, AP = (5 × 1.0 + 4 × 0.57 + 2 × 0.5)/11

Ниже более точное математическое определение.

Когда APᵣ становится экстремально малым, можно сделать предположение о сведении оставшихся значений к 0, то есть мы не обязательно делаем прогнозы, пока отзыв не достигнет 100%. Если возможные максимальные уровни точности упадут до незначительного уровня, мы можем остановиться. Для 20 различных классов в PASCAL VOC мы вычисляем AP для каждого класса, а также предоставляем среднее значение для этих 20 результатов AP.

Согласно оригинальному исследованию, причина использовать 11 интерполированных точек в расчёте AP следующая:

The intention in interpolating the precision/recall curve in this way is to reduce the impact of the “wiggles” in the precision/recall curve, caused by small variations in the ranking of examples.

Однако этот интерполированный метод является приближением, которое страдает двумя проблемами. Во первых, это менее точно. Во вторых, он потерял способность измерять разницу для методов с низким AP. Поэтому после 2008 года для PASCAL VOC принят другой расчет AP.

AP (Area under curve AUC)

Для более поздних соревнований PASCAL VOC,  VOC2010–2012 производит выборку кривой по всем уникальным значениям recall (r₁, r₂,…), когда падает максимальное значение precision. С этим изменением мы измеряем точную площадь под кривой precision-recall после удаления зигзагов.

Не требуется ни приближения, ни интерполяции. Вместо выборки 11 точек, мы выбираем p (rᵢ) всякий раз, когда он падает, и вычисляем AP как сумму прямоугольных блоков.

Это определение называется областью под кривой (AUC). Как показано ниже, поскольку интерполированные точки не покрывают, где точность падает, оба метода будут расходиться.

COCO mAP

Последние исследовательские работы, как правило, дают результаты только для набора данных COCO. В COCO mAP для расчета используется 101-точечное интерполированное определение AP. Для COCO AP – это среднее значение для нескольких IoU (минимальное IoU для рассмотрения положительного совпадения). AP @ [. 5: .95] соответствует среднему AP для IoU от 0,5 до 0,95 с размером шага 0,05. Для соревнования COCO AP – это среднее значение по 10 уровням IoU по 80 категориям (AP @ [. 50: .05: .95]: от 0,5 до 0,95 с размером шага 0,05). Ниже приведены некоторые другие метрики, собранные для набора данных COCO.

Источник

А это результат AP для детектора YOLOv3.

Источник

На рисунке выше AP @ .75 означает AP с IoU = 0,75.

mAP (средняя средняя точность) – это среднее значение AP. В некотором контексте мы вычисляем AP для каждого класса и усредняем их. Но в каком-то контексте они означают одно и то же. Например, в контексте COCO нет разницы между AP и mAP. Вот прямая цитата из COCO:

AP is averaged over all categories. Traditionally, this is called “mean average precision” (mAP). We make no distinction between AP and mAP (and likewise AR and mAR) and assume the difference is clear from context.

В ImageNet используется метод AUC. Таким образом, даже несмотря на то, что все они следуют одному и тому же принципу в измерении AP, точный расчет может варьироваться в зависимости от наборов данных. К счастью, для расчета этого показателя доступно большое количество разнообразных инструментов.