วิธีการคำนวณ mAP สำหรับภารกิจตรวจจับสำหรับ PASCAL VOC Challenge?


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 และ Mcgill 1986) ถูกใช้เพื่อประเมินทั้งการจำแนกและการตรวจจับ สำหรับงานและคลาสที่กำหนดเส้นโค้งความแม่นยำ / การเรียกคืนถูกคำนวณจากเอาต์พุตอันดับของวิธีการ การเรียกคืนถูกกำหนดให้เป็นสัดส่วนของตัวอย่างเชิงบวกทั้งหมดที่จัดอันดับอยู่เหนืออันดับที่กำหนด ความแม่นยำคือสัดส่วนของตัวอย่างทั้งหมดข้างต้นที่อยู่ในระดับบวก AP สรุปรูปร่างของเส้นโค้งความแม่นยำ / การเรียกคืนและถูกกำหนดเป็นความแม่นยำเฉลี่ยที่ชุดของสิบเอ็ดระดับการเรียกคืนที่เว้นระยะเท่ากัน 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 of Precision for Recall <= 0.3 แทนที่จะเป็นค่าความแม่นยำ ณ จุดนี้ 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-curve = ความแม่นยำและการเรียกคืน (สำหรับแต่ละเกณฑ์ที่อยู่ในกล่องการคาดการณ์)
  • ความแม่นยำ = 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) คุณต้องกำหนดว่า: True Positives (TP), False Positives (FP), True Negative (TN) และ False ลบ (FN) ในการตั้งค่าการตรวจจับวัตถุของ Pascal VOC Challenge มีดังต่อไปนี้:

  • TP: Bounding Boxes (BB) ที่จุดตัดเหนือสหภาพ (IoU) ที่มีค่าความจริงพื้นดิน (GT) สูงกว่า 0.5
  • FP: BB ที่ IoU กับ GT ต่ำกว่า 0.5 และ BB ที่มี IoU พร้อม GT ที่ตรวจพบแล้ว
  • TN: ไม่มีลบจริงภาพคาดว่าจะมีวัตถุอย่างน้อยหนึ่ง
  • FN: ภาพเหล่านั้นเป็นวิธีที่ล้มเหลวในการสร้าง BB

ตอนนี้ BB ที่ทำนายไว้แต่ละอันมีค่าความมั่นใจสำหรับชั้นเรียนที่กำหนด ดังนั้นวิธีการให้คะแนนจะเรียงลำดับการทำนายเพื่อลดความเชื่อมั่นและคำนวณ P = TP / (TP + FP) และ R = TP / (TP + FN) สำหรับแต่ละอันดับที่เป็นไปได้ k = 1 ขึ้นกับจำนวนการทำนาย ดังนั้นตอนนี้คุณมี (P, R) สำหรับแต่ละอันดับที่ P และ R เป็นเส้นโค้ง Precision-Recall ที่ "ดิบ" ในการคำนวณเส้นโค้ง PR แบบสอดแทรกค่า foreach ของ R คุณเลือก P สูงสุดที่มีค่า R '> = R ที่สอดคล้องกัน

มีสองวิธีที่แตกต่างกันเพื่อจุดโค้งตัวอย่างประชาสัมพันธ์เป็นไปตามVOC devkit doc สำหรับ 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 สำหรับกรณีของ rank = 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, 1, 0.5, 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.71 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: A ย้อนหลังสำหรับคำอธิบายรายละเอียดเพิ่มเติม


1
ยินดีต้อนรับคุณ! ใช่คุณควรคำนวณในทุกภาพ และ GT คือ 1 ถ้า IoU> 0.5 FN ล่าสุดจะเป็น 3 สำหรับวัตถุที่ตรวจไม่พบ 3 ตัว
feynman410

1
FN คือจำนวนภาพที่ไม่ได้คาดการณ์ไว้ FP คือจำนวนการตรวจจับที่มี IoU <= 0.5 หรือตรวจพบมากกว่าหนึ่งครั้ง ดู pseudocode stats.stackexchange.com/a/263758/140597
feynman410

1
ขออภัยทางขวาของคุณคือไม่พบวัตถุตัวเลข
feynman410

1
@ feynman410 ฉันสับสนคุณช่วยบอกเราหน่อยได้มั้ยว่าคุณวางที่ไหนในวัตถุตารางที่ไม่ถูกตรวจพบ แต่ควรเป็นอย่างไร ท้ายตาราง? (เพราะไม่มีคะแนนสำหรับพวกเขา)
Martin Brišiak

1
ดังนั้น "ความแม่นยำ" และ "การเรียกคืน" จึงถูกคำนวณแยกต่างหากสำหรับแต่ละคลาส - เพื่อคำนวณ AP ต่อคลาส ขวา? ดังนั้นพวกเขาจึงคำนวณแยกกันในแต่ละภาพแล้วเฉลี่ยหรือพวกเขาคำนวณมากกว่าการตรวจจับทั้งหมดในภาพทั้งหมดหรือไม่
SomethingSomething

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.