Làm cách nào để tính mAP (có nghĩa là Độ chính xác trung bình) cho nhiệm vụ phát hiện cho bảng xếp hạng Pascal VOC? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4
Có nói - tại trang 11 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf
Độ chính xác trung bình (AP). Đối với thử thách VOC2007, độ chính xác trung bình được nội suy (Salton và Mcgill 1986) đã được sử dụng để đánh giá cả phân loại và phát hiện. Đối với một nhiệm vụ và lớp nhất định, đường cong chính xác / thu hồi được tính từ đầu ra được xếp hạng của phương thức. Nhớ lại được định nghĩa là tỷ lệ của tất cả các ví dụ tích cực được xếp hạng trên một thứ hạng nhất định. Độ chính xác là tỷ lệ của tất cả các ví dụ trên xếp hạng đó là từ lớp tích cực. AP tóm tắt hình dạng của đường cong chính xác / thu hồi và được định nghĩa là độ chính xác trung bình tại một tập hợp mười một mức thu hồi cách đều nhau [0,0.1, ..., 1]:
AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)
Độ chính xác ở mỗi mức thu hồi r được nội suy bằng cách lấy độ chính xác tối đa được đo cho phương pháp mà độ thu hồi tương ứng vượt quá r :
pinterp(r) = max p(r˜)
, trong đó p (r˜) là độ chính xác đo được khi thu hồi ˜r
Giới thiệu về mAP: http://0agr.ru/wiki/index.php/Precision_and_Recall#Alusive_Precision
Vậy có nghĩa là:
Chúng tôi tính toán Chính xác và Nhớ lại :
- A) Đối với nhiều loại khác nhau,
IoU
> {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}
chúng tôi tính toán các giá trị Tích cực / Sai dương / Sai
Ở đâu
True positive = Number_of_detection with IoU > {0, 0.1,..., 1}
, như đã nói ở đây: /datascience//a/16813/37736 và sau đó chúng tôi tính toán:Precision = True positive / (True positive + False positive)
Recall = True positive / (True positive + False negative)
- A) Đối với nhiều loại khác nhau,
B) Hoặc cho nhiều ngưỡng thuật toán phát hiện khác nhau, chúng tôi tính toán:
Precision = True positive / (True positive + False positive)
Recall = True positive / (True positive + False negative)
Trong trường hợp
True positive = Number_of_detection with IoU > 0.5
như đã nói ở đây: /programming//a/43168882/1558037
C) Hoặc cho nhiều ngưỡng khác nhau của thuật toán phát hiện, chúng tôi tính toán:
Precision = Intersect / Detected_box
Recall = Intersect / Object
Như được hiển thị ở đây? https://en.wikipedia.org/wiki/Precision_and_recall
- Sau đó, chúng tôi tính AP (độ chính xác trung bình) là trung bình của 11 giá trị
Precision
tại các điểmRecall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}
, nghĩa làAP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)
(Nói chung cho mỗi điểm, ví dụ 0,3, chúng tôi nhận được MAX Độ chính xác cho Thu hồi <= 0,3, thay vì giá trị của Độ chính xác tại điểm này Gọi lại = 0,3)
- Và khi chúng ta tính toán AP chỉ cho 1 lớp đối tượng gì đó trên tất cả các hình ảnh - thì chúng ta sẽ nhận được AP (độ chính xác trung bình) cho lớp này, ví dụ, chỉ cho
air
.
Vì vậy, AP là một tích phân (khu vực dưới đường cong): /stats//a/157019/111998
Nhưng khi chúng tôi tính toán AP cho tất cả các lớp đối tượng trên tất cả các hình ảnh - thì chúng tôi sẽ nhận được mAP (độ chính xác trung bình trung bình) cho tất cả các tập dữ liệu hình ảnh, ví dụ, 88.6
cho R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4
Câu hỏi:
- Có đúng không, và nếu không, thì làm thế nào để tính mAP cho Pascal VOC Challenge?
- Và công thức nào trong 3 công thức (A, B hoặc C) là chính xác để tính Độ chính xác và Nhớ lại, trong đoạn 1?
Câu trả lời ngắn:
- mAP = AVG (AP cho từng lớp đối tượng)
- AP = AVG (Độ chính xác cho mỗi 11 lần thu hồi {precision = 0, 0.1, ..., 1})
- Đường cong PR = Độ chính xác và Thu hồi (đối với mỗi Ngưỡng trong các hộp ràng buộc Dự đoán)
- Độ chính xác = TP / (TP + FP)
- Nhớ lại = TP / (TP + FN)
- TP = số lần phát hiện với IoU> 0,5
- FP = số lần phát hiện với IoU <= 0,5 hoặc được phát hiện nhiều lần
- FN = số lượng đối tượng không được phát hiện hoặc phát hiện với IoU <= 0,5