From 8af70386e87c843dfb66f9a8d0798dee474f2ae4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Feb 2019 23:50:23 +0100 Subject: [PATCH] updates --- test.py | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index 02512e5c..c8c95023 100644 --- a/test.py +++ b/test.py @@ -37,7 +37,7 @@ def test( # dataloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path), batch_size=batch_size) # pytorch dataloader = LoadImagesAndLabels(test_path, batch_size=batch_size, img_size=img_size) - mean_mAP, mean_R, mean_P = 0.0, 0.0, 0.0 + mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class = [], [], [], [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) @@ -47,10 +47,10 @@ def test( # Compute average precision for each sample for sample_i, (labels, detections) in enumerate(zip(targets, output)): - correct = [] + seen += 1 if detections is None: - # If there are no detections but there are labels mask as zero AP + # If there are labels but no detections mark as zero AP if labels.size(0) != 0: mAPs.append(0), mR.append(0), mP.append(0) continue @@ -60,6 +60,7 @@ def test( detections = detections[np.argsort(-detections[:, 4])] # If no labels add number of detections as incorrect + correct = [] if labels.size(0) == 0: # correct.extend([0 for _ in range(len(detections))]) mAPs.append(0), mR.append(0), mP.append(0) @@ -86,7 +87,9 @@ def test( correct.append(0) # Compute Average Precision (AP) per class - AP, AP_class, R, P = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], + AP, AP_class, R, P = ap_per_class(tp=correct, + conf=detections[:, 4], + pred_cls=detections[:, 6], target_cls=target_cls) # Accumulate AP per class @@ -104,7 +107,7 @@ def test( mean_P = np.mean(mP) # Print image mAP and running mean mAP - print(('%11s%11s' + '%11.3g' * 3) % (len(mAPs), dataloader.nF, mean_P, mean_R, mean_mAP)) + print(('%11s%11s' + '%11.3g' * 3) % (seen, dataloader.nF, mean_P, mean_R, mean_mAP)) # Print mAP per class print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') @@ -141,3 +144,27 @@ if __name__ == '__main__': opt.conf_thres, opt.nms_thres ) + +# Image Total P R mAP # YOLOv3 320 +# 32 5000 0.66 0.597 0.591 +# 64 5000 0.664 0.62 0.604 +# 96 5000 0.653 0.627 0.614 +# 128 5000 0.639 0.623 0.607 +# 160 5000 0.642 0.63 0.616 +# 192 5000 0.651 0.636 0.621 + +# Image Total P R mAP # YOLOv3 416 +# 32 5000 0.635 0.581 0.57 +# 64 5000 0.63 0.591 0.578 +# 96 5000 0.661 0.632 0.622 +# 128 5000 0.659 0.632 0.623 +# 160 5000 0.665 0.64 0.633 +# 192 5000 0.66 0.637 0.63 + +# Image Total P R mAP # YOLOv3 608 +# 32 5000 0.653 0.606 0.591 +# 64 5000 0.653 0.635 0.625 +# 96 5000 0.655 0.642 0.633 +# 128 5000 0.667 0.651 0.642 +# 160 5000 0.663 0.645 0.637 +# 192 5000 0.663 0.643 0.634