defap_per_class(tp, conf, pred_cls, target_cls):""" Compute the average precision, given the recall and precision curves.
Source: https://github.com/rafaelpadilla/Object-Detection-Metrics.
# Arguments
tp: True positives (nparray, nx1 or nx10).
conf: Objectness value from 0-1 (nparray).
pred_cls: Predicted object classes (nparray).
target_cls: True object classes (nparray).
# Returns
The average precision as computed in py-faster-rcnn.
"""'''
tp : [bt*300, 10]
conf : [bt*300, ]
pred_cls : [bt*300, ]
target_cls : [num_gt,]
'''# Sort by objectness
i = np.argsort(-conf)
tp, conf, pred_cls = tp[i], conf[i], pred_cls[i]# Find unique classes
unique_classes = np.unique(target_cls)# Create Precision-Recall curve and compute AP for each class
pr_score =0.1# score to evaluate P and R https://github.com/ultralytics/yolov3/issues/898
s =[unique_classes.shape[0], tp.shape[1]]# number class, number iou thresholds (i.e. 10 for mAP0.5...0.95)
ap, p, r = np.zeros(s), np.zeros(s), np.zeros(s)
<