Как рассчитать mAP для задачи обнаружения для PASCAL VOC Challenge?

22

Как рассчитать mAP (среднее значение точности) для задачи обнаружения для таблиц лидеров Vascal Pascal? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4

Там сказано - на странице 11 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf

Средняя точность (AP). Для задачи VOC2007 интерполированная средняя точность (Salton and Mcgill 1986) использовалась для оценки как классификации, так и обнаружения. Для заданной задачи и класса кривая точности / отзыва вычисляется из ранжированного результата метода. Напомним, определяется как доля всех положительных примеров, ранжированных выше данного ранга. Точность - это доля всех примеров выше того ранга, которые относятся к положительному классу. AP суммирует форму кривой точности / отзыва и определяется как средняя точность для набора из одиннадцати одинаково разнесенных уровней отзыва [0,0.1, ..., 1]: AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)

Точность на каждом уровне возврата r интерполируется путем взятия максимальной точности, измеренной для метода, для которого соответствующий отзыв превышает r:, pinterp(r) = max p(r˜)где p (r˜) - измеренная точность при вызове ˜r.

О mAP: http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision


Значит ли это, что:

  1. Мы рассчитываем точность и вспомним :

    • А) Для многих разныхIoU > {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1} мы рассчитываем истинные / ложные положительные / отрицательные значения

    Где True positive = Number_of_detection with IoU > {0, 0.1,..., 1}, как сказано здесь: /datascience//a/16813/37736 и тогда мы рассчитаем:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)


  • Б) Или для множества различных порогов алгоритмов обнаружения мы вычисляем:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)

    Где, True positive = Number_of_detection with IoU > 0.5как здесь сказано: /programming//a/43168882/1558037


  • В) или для множества различных порогов алгоритмов обнаружения мы вычисляем:

    Precision = Intersect / Detected_box

    Recall = Intersect / Object

    Как показано здесь? https://en.wikipedia.org/wiki/Precision_and_recall введите описание изображения здесь


  1. Затем мы строим кривую Precision-Recall , как показано здесь: введите описание изображения здесь

  1. Затем мы вычисляем AP (среднюю точность) как среднее из 11 значенийPrecision в точках, где Recall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, т.е.AP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)

(Как правило, для каждой точки, например 0,3, мы получаем MAX Precision for Recall <= 0,3 вместо значения Precision в этой точке Recall = 0,3)


  1. И когда мы вычисляем AP только для 1-го класса объекта на всех изображениях - тогда мы получаем AP (среднюю точность) для этого класса, например, только для air.

Таким образом, AP является интегралом (область под кривой): /stats//a/157019/111998

Но когда мы вычисляем AP для всех классов объектов на всех изображениях - тогда мы получаем mAP (среднюю среднюю точность) для набора данных всех изображений, например, 88.6для R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4


Вопросов:

  1. Правильно ли это, а если нет, то как рассчитать mAP для Pascal VOC Challenge?
  2. И какая из 3 формул (A, B или C) является правильной для расчета точности и отзыва в пункте 1?

Короткий ответ:

  • mAP = AVG (AP для каждого класса объектов)
  • AP = AVG (точность для каждого из 11 повторных вызовов {точность = 0, 0,1, ..., 1})
  • PR-кривая = точность и повторный вызов (для каждого порогового значения, которое находится в ограниченных ячейках прогнозов)
  • Точность = TP / (TP + FP)
  • Напомним = TP / (TP + FN)
  • TP = количество обнаружений с IoU> 0,5
  • FP = количество обнаружений с IoU <= 0,5 или обнаружено более одного раза
  • FN = количество объектов, которые не обнаружены или обнаружены с IoU <= 0,5
Alex
источник

Ответы:

15

Чтобы ответить на ваши вопросы:

  1. Да, ваш подход правильный
  2. Для A, B и C правильный ответ - B.

Объяснение заключается в следующем: чтобы рассчитать среднюю точность (mAP) в контексте обнаружения объектов, необходимо вычислить среднюю точность (AP) для каждого класса, а затем вычислить среднее значение для всех классов. Ключевым моментом здесь является вычисление точки доступа для каждого класса. В общем, для вычисления точности (P) и повторного вызова (R) вы должны определить, что такое: истинные положительные значения (TP), ложные положительные значения (FP), истинные отрицательные (TN) и ложные Отрицательный (FN). В настройке «Обнаружение объектов вызова Паскаля ЛОС» есть следующие:

  • TP: ограничивающие рамки (BB), что пересечение по объединению (IoU) с истинной землей (GT) выше 0,5
  • FP: BB, что IoU с GT ниже 0,5, также BB, у которого есть IoU с GT, который уже был обнаружен.
  • TN: нет истинного негатива, ожидается, что изображение содержит хотя бы один объект
  • FN: эти изображения были методом, который не смог произвести BB

Теперь у каждого предсказанного ВВ есть значение достоверности для данного класса. Таким образом, метод оценки сортирует прогнозы по убыванию степени достоверности и вычисляет P = TP / (TP + FP) и R = TP / (TP + FN) для каждого возможного ранга k = 1 до числа прогнозов. Итак, теперь у вас есть (P, R) для каждого ранга, эти P и R являются «необработанной» кривой Precision-Recall. Чтобы вычислить интерполированную кривую PR для каждого значения R, выберите максимальное значение P, соответствующее R '> = R.

Существует два разных способа отбора точек кривой PR в соответствии с документом vo devkit . Для VOC Challenge до 2010 года мы выбираем максимальный P, полученный для любого R '> = R, которому R принадлежит 0, 0,1, ..., 1 (одиннадцать пунктов). AP - это средняя точность на каждом из порогов повторного вызова. Для VOC Challenge 2010 и после этого мы по-прежнему выбираем максимальный P для любого R '> = R, в то время как R принадлежит всем уникальным значениям отзыва (включая 0 и 1). AP - это размер области под кривой PR. Обратите внимание, что в случае, если у вас нет значения P с повторным вызовом выше некоторых пороговых значений, значение точности равно 0.

Например, рассмотрим следующий вывод метода, заданного классом «Самолет»:

BB  | confidence | GT
----------------------
BB1 |  0.9       | 1
----------------------
BB2 |  0.9       | 1
----------------------
BB3 |  0.7       | 0
----------------------
BB4 |  0.7       | 0
----------------------
BB5 |  0.7       | 1
----------------------
BB6 |  0.7       | 0
----------------------
BB7 |  0.7       | 0
----------------------
BB8 |  0.7       | 1
----------------------
BB9 |  0.7       | 1
----------------------

Кроме того, не обнаружено ограничивающих рамок на двух изображениях, поэтому у нас FN = 2. В предыдущей таблице есть упорядоченный ранг по доверительной величине предсказаний метода GT = 1, значит, TP и GT = 0 FP. Таким образом, TP = 5 (BB1, BB2, BB5, BB8 и BB9), FP = 5. Для случая ранга = 3 точность падает, потому что BB1 уже был обнаружен, поэтому даже если объект действительно присутствует, он считается как FP. ,

rank=1  precision=1.00 and recall=0.14
----------
rank=2  precision=1.00 and recall=0.29
----------
rank=3  precision=0.66 and recall=0.29
----------
rank=4  precision=0.50 and recall=0.29
----------
rank=5  precision=0.40 and recall=0.29
----------
rank=6  precision=0.50 and recall=0.43
----------
rank=7  precision=0.43 and recall=0.43
----------
rank=8  precision=0.38 and recall=0.43
----------
rank=9  precision=0.44 and recall=0.57
----------
rank=10 precision=0.50 and recall=0.71
----------

Учитывая предыдущие результаты: Если мы использовали путь до voc2010, интерполированные значения точности составляют 1, 1, 1, 0,5, 0,5, 0,5, 0,5, 0,5, 0, 0, 0. Тогда AP = 5,5 / 11 = 0,5 для класс "Самолеты". Иначе, если мы использовали способ начиная с voc2010, интерполированные значения Precision равны 1, 1, 1, 0,5, 0,5, 0,5, 0 для семи уникальных повторных вызовов, которые равны 0, 0,14, 0,29, 0,43, 0,57, 0,71, 1. Затем AP = (0,14-0) * 1 + (0,29-0,14) * 1 + (0,43-0,29) * 0,5 + (0,57-0,43) * 0,5 + (0,71-0,57) * 0,5 + (1-0,71) * 0 = 0,5 для класс "Самолеты".

Повторите для каждого класса, и затем у вас есть (MAP).

Более подробную информацию можно найти по следующим ссылкам 1 , 2 . Также вам следует проверить статью «Классы визуальных объектов PASCAL: ретроспектива» для более подробного объяснения.

feynman410
источник
1
Пожалуйста! Да, вы должны вычислять по всем изображениям. И GT равен 1, если IoU> 0,5. Последний FN будет 3 для 3 не обнаруженных объектов
feynman410
1
FN - количество изображений, для которых не был сделан прогноз, FP - количество обнаружений с IoU <= 0,5 или обнаруженных более одного раза. Смотрите этот псевдокод stats.stackexchange.com/a/263758/140597
feynman410
1
Извините, ваше право - количество не обнаруженных объектов.
feynman410
1
@ feynman410 я запутался, подскажите пожалуйста, где вы помещаете в таблицу объекты, которые не были обнаружены, но должны быть? в конце таблицы? (потому что для них нет очков)
Мартин Бришиак,
1
Таким образом, «Precision» и «Recall» вычисляются отдельно для каждого класса - для вычисления AP на класс. Правильно? Таким образом, они рассчитываются отдельно для каждого изображения и затем усредняются, или они рассчитываются по общему количеству обнаружений на всех изображениях?
что-то