diff --git a/README.md b/README.md
index 6dba20e4..9c083dd9 100755
--- a/README.md
+++ b/README.md
@@ -139,39 +139,39 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights'
# mAP
```bash
-python3 test.py --weights ... --cfg ...
+$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt
```
- mAP@0.5 run at `--iou-thr 0.5`, mAP@0.5...0.95 run at `--iou-thr 0.7`
-- YOLOv3-SPP ultralytics is `ultralytics68.pt` with `yolov3-spp.cfg`
- Darknet results: https://arxiv.org/abs/1804.02767
|Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5
--- | --- | --- | ---
-YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.6** |29.1
51.8
52.3
**55.4**
-YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.2
33.9
**39.1** |33.0
55.4
56.9
**59.6**
-YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
32.7
35.6
**40.6** |34.9
57.7
59.5
**61.4**
-YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**41.1** |35.4
58.2
60.7
**61.7**
+YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**36.3** |29.1
51.8
52.3
**55.5**
+YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**39.8** |33.0
55.4
56.9
**59.6**
+YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**41.3** |34.9
57.7
59.5
**61.3**
+YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**41.7** |35.4
58.2
60.7
**61.5**
```bash
-$ python3 test.py --img-size 608 --iou-thr 0.6 --weights ultralytics68.pt --cfg yolov3-spp.cfg
+$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608
-Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, task='test', weights='ultralytics68.pt')
-Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB)
- Class Images Targets P R mAP@0.5 F1: 100% 157/157 [03:30<00:00, 1.16it/s]
- all 5e+03 3.51e+04 0.0353 0.891 0.606 0.0673
- Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.409
+Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='last54.pt')
+Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB)
+
+ Class Images Targets P R mAP@0.5 F1: 100% 157/157 [04:25<00:00, 1.04it/s]
+ all 5e+03 3.51e+04 0.0467 0.886 0.607 0.0875
+ Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.415
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.615
- Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.437
- Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.242
- Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.448
- Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.519
- Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.337
- Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.557
- Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.612
- Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.438
+ Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.443
+ Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.245
+ Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.458
+ Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.531
+ Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.341
+ Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.559
+ Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.611
+ Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.441
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.658
- Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.746
+ Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.748
```
# Reproduce Our Results
diff --git a/detect.py b/detect.py
index d3eff739..ca6a3873 100644
--- a/detect.py
+++ b/detect.py
@@ -159,7 +159,7 @@ if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path')
parser.add_argument('--names', type=str, default='data/coco.names', help='*.names path')
- parser.add_argument('--weights', type=str, default='weights/ultralytics68.pt', help='path to weights file')
+ parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='weights path')
parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam
parser.add_argument('--output', type=str, default='output', help='output folder') # output folder
parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)')
diff --git a/models.py b/models.py
index edc3bf15..65f95450 100755
--- a/models.py
+++ b/models.py
@@ -434,7 +434,8 @@ def attempt_download(weights):
'darknet53.conv.74': '1WUVBid-XuoUBmvzBVUCBl_ELrzqwA8dJ',
'yolov3-tiny.conv.15': '1Bw0kCpplxUqyRYAJr9RY9SGnOJbo9nEj',
'ultralytics49.pt': '158g62Vs14E3aj7oPVPuEnNZMKFNgGyNq',
- 'ultralytics68.pt': '1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG'}
+ 'ultralytics68.pt': '1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG',
+ 'yolov3-spp-ultralytics.pt': '1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4'}
file = Path(weights).name
if file in d:
diff --git a/test.py b/test.py
index a5cec3b4..e1a80967 100644
--- a/test.py
+++ b/test.py
@@ -210,7 +210,7 @@ if __name__ == '__main__':
parser = argparse.ArgumentParser(prog='test.py')
parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path')
parser.add_argument('--data', type=str, default='data/coco2014.data', help='*.data path')
- parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file')
+ parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='weights path')
parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch')
parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)')
parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold')
diff --git a/train.py b/train.py
index abf547b5..cb17b946 100644
--- a/train.py
+++ b/train.py
@@ -406,7 +406,7 @@ if __name__ == '__main__':
parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters')
parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')
parser.add_argument('--cache-images', action='store_true', help='cache images for faster training')
- parser.add_argument('--weights', type=str, default='weights/ultralytics68.pt', help='initial weights')
+ parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='initial weights path')
parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # default, uCE, uBCE
parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied')
parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)')
diff --git a/utils/utils.py b/utils/utils.py
index 85dd3658..f877a7ce 100755
--- a/utils/utils.py
+++ b/utils/utils.py
@@ -369,7 +369,7 @@ def compute_loss(p, targets, model, giou_flag=True): # predictions, targets, mo
tcls, tbox, indices, anchor_vec = build_targets(model, targets)
h = model.hyp # hyperparameters
arc = model.arc # # (default, uCE, uBCE) detection architectures
- red = 'sum' # Loss reduction (sum or mean)
+ red = 'mean' # Loss reduction (sum or mean)
# Define criteria
BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction=red)