Як обчислити mAP для завдання виявлення для виклику PASCAL VOC?


22

Як обчислити mAP (середню середню точність) для завдання виявлення для лідерів Pascal VOC? 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. Ми обчислюємо точність та відкликання :

    • A) Для багатьох різнихIoU > {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1} обчислюємо значення True / False Positive / Negative

    Де 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)


  • B) Або для багатьох різних порогових алгоритмів виявлення ми обчислюємо:

    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


  • C) Або для багатьох різних порогових алгоритмів виявлення ми обчислюємо:

    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 точності для нагадування <= 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. Це правильно, а якщо це не так, то як обчислити карту для 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

Відповіді:


15

Щоб відповісти на ваші запитання:

  1. Так, ваш підхід правильний
  2. Правильна відповідь з A, B і C - це B.

Пояснення таке: Для обчислення середньої середньої точності (mAP) в контексті виявлення об'єктів необхідно обчислити середню точність (AP) для кожного класу, а потім обчислити середнє значення для всіх класів. Ключовим тут є обчислення AP для кожного класу, загалом для обчислення точності (P) та Recall (R) ви повинні визначити, що таке: справжні позитивні (TP), помилкові позитивні (FP), істинні негативні (TN) та хибні Негативний (FN). У налаштуванні Визначення об'єктів виклику Pascal VOC:

  • ТР: чи обмежувальні коробки (ВВ), що перетин між з'єднанням (ІО) із земною істиною (ГТ) вище 0,5
  • FP: BB, що IoU з GT нижче 0,5, а також BB, які мають IoU з GT, який вже був виявлений.
  • ТН: немає істинних негативних результатів, очікується, що зображення містить хоча б один об'єкт
  • FN: ці образи були методом не вдалося створити BB

Тепер кожен прогнозований BB має значення довіри для даного класу. Таким чином, метод оцінювання сортує прогнози для зменшення порядку довіри та обчислює P = TP / (TP + FP) і R = TP / (TP + FN) для кожного можливого ранжування k = 1 до кількості прогнозів. Отже, тепер у вас є (P, R) для кожного рангу, P і R - "сира" крива точності-нагадування. Для обчислення інтерпольованого значення PR-кривої кривої PR вибираєте максимум P, який має відповідне R '> = R.

Існує два різних способи вибірки точок кривої PR відповідно до voc devkit doc . Для виклику VOC до 2010 року ми вибираємо максимум P, отриманий для будь-якого R '> = R, якому R належить 0, 0,1, ..., 1 (одинадцять балів). Тоді AP - це середня точність при кожному порозі відкликання. Для VOC Challenge 2010 і пізніше ми все одно вибираємо максимальний P для будь-якого R '> = R, тоді як R належить до всіх унікальних значень виклику (включають 0 і 1). Тоді AP - це розмір площі під кривою PR. Зауважте, що у випадку, якщо у вас немає значення P з Recall вище деяких порогових значень, значення Precision дорівнює 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. У випадку ran = 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, інтерпольовані значення точності складають 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 Visual Object Classes: Retrospective для більш детального пояснення.


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
Тож «Точність» та «Відкликання» обчислюються окремо для кожного класу - для того, щоб обчислити AP на клас. Правильно? Тож чи обчислюються вони окремо на кожному зображенні, а потім усереднюються, чи обчислюються за загальним виявленням на всіх зображеннях?
Щось щось щось

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.