Độ chính xác trung bình trong phát hiện đối tượng


8

Tôi khá bối rối về cách tôi có thể tính toán các giá trị AP hoặc mAP vì dường như có khá nhiều phương pháp khác nhau. Tôi đặc biệt muốn nhận các giá trị AP / mAP để phát hiện đối tượng.

Tất cả những gì tôi biết chắc chắn là:

Nhớ lại = TP / (TP + FN), Chính xác = TP / (TP + FP)

Ví dụ: nếu tôi chỉ có 1 lớp để đánh giá và nói 500 hình ảnh thử nghiệm. Mỗi hình ảnh thử nghiệm có thể có số lượng dự đoán khác nhau (đề xuất hộp giới hạn) nhưng mỗi hình ảnh chỉ có một hộp giới hạn mặt đất.

Hình 1: [lớp, xác suất, x1, y1, x2, y2], [lớp, xác suất, x3, y3, x4, y4], [lớp, xác suất, x5, y5, x6, y6], [lớp, xác suất, x7, y7, x8, y8], ...

Hình 2: [lớp, xác suất, x1, y1, x2, y2], [lớp, xác suất, x3, y3, x4, y4], ...

. . . (và như thế)

* chỉ là một ví dụ, tôi đã làm điều này

Tôi biết rằng để có được TP, chúng ta phải tìm IOU của từng dự đoán và đếm những cái trên ngưỡng đã chọn, chẳng hạn như 0,5 (nếu chúng ta có nhiều dự đoán với IOU trên ngưỡng, chúng ta chỉ đếm một lần và xử lý các dự đoán khác như FP?).

Đây là nơi nó đánh đố tôi:

  1. TP + FP = # dự đoán được thực hiện cho mỗi hình ảnh?

  2. Vì tất cả các hình ảnh thử nghiệm không có tiêu cực, TP + FN = 500?

  3. Nó được tính trên mỗi hình ảnh, hoặc mỗi lớp?

  4. Ai đó có thể cho tôi biết hướng dẫn từng bước để có được AP / mAP dựa trên ví dụ của tôi không? Tôi thấy phần mơ hồ nhất là liệu chúng ta làm điều đó trên mỗi hình ảnh hay mỗi lớp (tức là 500 hình ảnh cùng một lúc).

Hầu hết các hướng dẫn / giấy tờ tôi tìm thấy đều rất nhắm đến việc truy xuất thông tin. Sẽ đánh giá cao một số trợ giúp trong việc này.

* Lưu ý: Tôi đang thử nghiệm nó trên một số tập dữ liệu tùy chỉnh. Tôi biết PASCAL VOC có một số mã để làm điều đó, nhưng tôi muốn tự viết mã, tùy chỉnh theo dữ liệu của riêng tôi.


Kho github của tôi có giải thích về IOU, Precision, Recall, Average Precision và mAP. Nó cũng có một mã để đánh giá bất kỳ máy dò đối tượng.
Rafael Padilla

Câu trả lời:


7

Tôi nghĩ rằng câu trả lời được chấp nhận chỉ đạo sai cách tính mAP. Bởi vì ngay cả đối với mỗi lớp, AP là sản phẩm trung bình. Trong câu trả lời của tôi, tôi vẫn sẽ bao gồm việc giải thích IOU vì vậy những người mới bắt đầu sẽ không có sự khó khăn để hiểu nó.

Đối với một nhiệm vụ phát hiện đối tượng nhất định, người tham gia sẽ gửi danh sách các hộp giới hạn với độ tin cậy (xác suất dự đoán) của mỗi lớp. Để được coi là một phát hiện hợp lệ, tỷ lệ diện tích chồng giữa hộp giới hạn dự đoán và giới hạn thực đối với diện tích tổng thể phải vượt quá 0,5. Công thức tương ứng sẽ là: mộtobpbt

mộto= =Mộtremột(bpbt)Mộtremột(bpbt)

Sau khi chúng tôi chọn ra một danh sách các hộp giới hạn dự đoán hợp lệ , sau đó chúng tôi sẽ đánh giá mỗi lớp là một vấn đề hai lớp một cách độc lập. Vì vậy, đối với một quá trình đánh giá điển hình của lớp 'con người'. Trước tiên chúng tôi có thể liệt kê các hộp giới hạn này như sau:MM

Chỉ số của đối tượng, niềm tin, sự thật mặt đất

Giới hạn hộp 1, 0,8, 1

Giới hạn hộp 1, 0,7, 1

Giới hạn hộp 2, 0,1, 0

Giới hạn hộp 3, 0,9, 1

Và sau đó, bạn cần xếp hạng chúng theo sự tự tin từ cao đến thấp. Sau đó, bạn chỉ cần tính toán đường cong PR như bình thường và tìm ra 11 kết quả chính xác được nội suy tại 11 điểm thu hồi này tương đương với [0, 0,1, ..., 1]. (Các phương pháp tính toán chi tiết có ở đây ) đối với nhiều lần phát hiện một hộp giới hạn, ví dụ hộp giới hạn 1 trong ví dụ của tôi, nhiều nhất chúng ta sẽ tính nó là đúng một lần và tất cả các trường hợp khác là Sai. Sau đó, bạn lặp qua 20 lớp và tính trung bình của chúng. Sau đó, bạn nhận được mAP của bạn.

Và ngoài ra, bây giờ chúng tôi xoắn phương pháp này một chút để tìm mAP của chúng tôi. Thay vì sử dụng 10 điểm thu hồi, chúng tôi sẽ sử dụng số K thực sự của lớp cụ thể và tính toán tiền tố nội suy. tức là [0,1 / K, 2 / K ...]


thật là một lời giải thích đơn giản tuyệt vời
Amitai

6

Đây là cách PASCOL-VOC 2012 và MS-COCO tính toán mAP, mã giả như sau:

For each single class of object,

iterate through entire list of predictions for all images

TP = [0] * number of predictions
NP = [0] * number of predictions

for i, prediction in enumerate(predictions): # sorted by prediction confidence, descended

    try to find the ground truth with same class and largest IoU:

        if IoU > threshold(0.5 in PASCOL VOC 2012)

            if ground truth has not been assigned yet:

                assign this ground truth to the prediction
                TP[i] = 1      

        else: # corresponding ground truth has been assigned or IoU < threshold
            FP[i] = 1

    not find:
        FP[i] = 1

then calculate FN = number of unassigned ground truth

Precision = TP/(TP+FP)
Recall = TP/(TP+FN)

Để có được AP, đầu tiên phải làm mịn đường cong PR, sau đó tính diện tích dưới đường cong. Để có được mAP, lặp lại các bước trên cho tất cả các lớp và tính trung bình cho chúng.

Tài liệu tham khảo:

Phiên bản Python của Số liệu đánh giá PASCOL VOC 2012: https://github.com/Cartucho/mAP

Bộ công cụ PASCOL VOC 2012 gốc (trong MATLAB): https://github.com/Cartucho/mAP

MSCOCO gốc: http://cocodataset.org/#detection-eval


Điều gì xảy ra nếu hộp dự đoán chồng lấp hai đối tượng groundtruth, đối tượng nào bạn kiểm tra sự trùng lặp?
Tò mò

1
AP = TP/(TP+FP)không chính xác Thay vào đó , Precision = TP/(TP+FP).
Franck Dernoncourt

Điều này là hoàn toàn sai. Độ chính xác trung bình được tính theo cách này thay vào đó: Medium.com/@jonathan_hui/ Kẻ
Tò mò

3

Bài giảng "Đánh giá 12: độ chính xác trung bình trung bình" của Victor Lavrenko chứa một slide giải thích rất rõ ràng Độ chính xác trung bình (AP) và Độ chính xác trung bình (mAP) là gì đối với trường hợp truy xuất tài liệu:

nhập mô tả hình ảnh ở đây

Để áp dụng slide để phát hiện đối tượng: tài liệu có liên quan = hộp giới hạn dự đoán có IoU bằng hoặc trên một số ngưỡng (thường là 0,5).

IoU = Giao lộ trên Union, xem hình ảnh bên dưới để biết định nghĩa trực quan:

nhập mô tả hình ảnh ở đây

Ví dụ về tính toán IoU trên một bức tranh thực tế:

nhập mô tả hình ảnh ở đây

( nguồn hình ảnh )

FYI: Trung bình chính xác trung bình so với xếp hạng đối ứng trung bình


0

Mặc dù @ User1915 đã tự mình tìm thấy câu trả lời, tôi muốn để lại điều gì đó cho những ai quan tâm.

Dưới đây là câu trả lời của tôi cho các câu hỏi trên:

Q1: TP + FP = # dự đoán được thực hiện cho mỗi hình ảnh?

Đúng. ( Vì số lượng TP bị giới hạn, bạn càng dự đoán nhiều, bạn càng nhận được độ chính xác thấp. )

Câu 2: Vì tất cả các hình ảnh thử nghiệm không có tiêu cực, TP + FN = 500?

Đúng. ( Vì chỉ có một hộp sự thật mặt đất cho mỗi hình ảnh )

Câu 3: Nó được tính trên mỗi hình ảnh, hoặc mỗi lớp?

Mỗi lớp.

Q4: Ai đó có thể cho tôi biết hướng dẫn từng bước để nhận AP / mAP dựa trên ví dụ của tôi không? Tôi thấy phần mơ hồ nhất là liệu chúng ta làm điều đó trên mỗi hình ảnh hay mỗi lớp (tức là 500 hình ảnh cùng một lúc).

Xem bài viết của @ User1915 ở trên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.