This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

bboxPrecisionRecall

Compute bounding box precision and recall against ground truth

Syntax

[precision,recall] = bboxPrecisionRecall(bboxes,groundTruthBboxes)
[precision,recall] = bboxPrecisionRecall(bboxes,groundTruthBboxes,threshold)

Description

example

[precision,recall] = bboxPrecisionRecall(bboxes,groundTruthBboxes) measures the accuracy of bounding box overlap between bboxes and groundTruthBboxes. Precision is a ratio of true positive instances to all positive instances of objects in the detector, based on the ground truth. Recall is a ratio of true positive instances to the sum of true positives and false negatives in the detector, based on the ground truth.

If the bounding box is associated with a class label, precision and recall contain metrics for each class. If the bounding box is also associated with a confidence score for ranking, use the evaluateDetectionPrecision function.

[precision,recall] = bboxPrecisionRecall(bboxes,groundTruthBboxes,threshold) specifies the overlap threshold for assigning a given box to a ground truth box.

Examples

collapse all

Create two ground truth boxes.

groundTruthBoxes = [2 2 10 20; 80 80 30 40];

Create three boxes for evaluation.

boundingBoxes = [4 4 10 20; 50 50 30 10; 90 90 40 50];

Plot the boxes.

figure
hold on
for i=1:2
    rectangle('Position',groundTruthBoxes(i,:),'EdgeColor','r');
end
for i=1:3
    rectangle('Position',boundingBoxes(i,:),'EdgeColor','b');
end   

Evaluate the overlap accuracy against the ground truth data.

[precision,recall] = bboxPrecisionRecall(boundingBoxes,groundTruthBoxes)
precision = 0.3333
recall = 0.5000

Define class names.

classNames = ["A","B","C"];

Create bounding boxes for evaluation.

predictedLabels = {...
    categorical("A",classNames); ...
    categorical(["C";"B"],classNames)};
bboxes = {...
    [10 10 20 30]; ...
    [60 18 20 10; 120 120 5 10]};
boundingBoxes = table(bboxes,predictedLabels,'VariableNames',...
    {'PredictedBoxes','PredictedLabels'});

Create ground truth boxes.

A = {[10 10 20 28]; []};
B = {[]; [118 120 5 10]};
C = {[]; [59 19 20 10]};
groundTruthData = table(A,B,C);

Evaluate overlap accuracy against ground truth data.

[precision,recall] = bboxPrecisionRecall(boundingBoxes,groundTruthData)
precision = 3×1

     1
     0
     1

recall = 3×1

     1
     0
     1

Input Arguments

collapse all

Bounding boxes, specified as one of the following. M is the number of bounding boxes.

  • For single-class bounding boxes, bboxes can be an M-by-4 matrix, or a table with M rows and one column. Each row of the matrix or element in the table represents a bounding box, specified in the format [x y width height], where x and y correspond to the upper left corner of the bounding box.

  • For multi-class bounding boxes, bboxes is a table with M rows and two columns. Each element in the first column represents a bounding box, specified in the format [x y width height]. The second column contains the predicted label for each box. The label must be a categorical type defined by the variable (column) names of the groundTruthBboxes table.

Data Types: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Ground truth bounding boxes, specified as one of the following. M is the number of ground truth bounding boxes.

  • For single-class bounding boxes, groundTruthBboxes can be an M-by-4 matrix, or a table with M rows and one column. Each row of the matrix or element in the table represents a bounding box, specified in the format [x y width height], where x and y correspond to the upper left corner of the bounding box.

  • For multi-class bounding boxes, groundTruthBboxes is a table with M rows and multiple columns. Each column represents a different class, and the column name specifies the class label. Each element in the table has the format [x y width height].

Data Types: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Overlap threshold for assigned a detection to a ground truth box, specified as a numeric scalar. The overlap ratio is computed as the intersection over union.

Output Arguments

collapse all

Precision values from each detection, returned as a numeric scalar for single-class bounding boxes. For multi-class bounding boxes, precision is returned as a numeric vector consisting of metrics for each class. The class order follows the same column order as the groundTruthBboxes table.

Recall values from each detection, returned as a numeric scalar for single-class bounding boxes. For multi-class bounding boxes, recall is returned as a numeric vector consisting of metrics for each class. The class order follows the same column order as the groundTruthBboxes table.

Introduced in R2018a