ScaledYOLOv4
1.0.0
Dies ist die Implementierung von "scaled-yolov4: scaling cross boeth partiell netzwerk" unter Verwendung von Pytorch Framwork.
| Modell | Testgröße | AP -Test | AP 50 Test | AP 75 Test | APs Test | AP M -Test | AP L -Test | Batch1 -Durchsatz |
|---|---|---|---|---|---|---|---|---|
| Yolov4-p5 | 896 | 51,4% | 69,9% | 56,3% | 33,1% | 55,4% | 62,4% | 41 fps |
| Yolov4-p5 | Tta | 52,5% | 70,3% | 58,0% | 36,0% | 52,4% | 62,3% | - - |
| Yolov4-p6 | 1280 | 54,3% | 72,3% | 59,5% | 36,6% | 58,2% | 65,5% | 30 fps |
| Yolov4-p6 | Tta | 54,9% | 72,6% | 60,2% | 37,4% | 58,8% | 66,7% | - - |
| Yolov4-p7 | 1536 | 55,4% | 73,3% | 60,7% | 38,1% | 59,5% | 67,4% | 15 fps |
| Yolov4-p7 | Tta | 55,8% | 73,2% | 61,2% | 38,8% | 60,1% | 68,2% | - - |
| Modell | Testgröße | AP val | AP 50 Val | AP 75 Val | AP S Val | Ap m val | Ap l val | Gewichte |
|---|---|---|---|---|---|---|---|---|
| Yolov4-p5 | 896 | 51,2% | 69,8% | 56,2% | 35,0% | 56,2% | 64,0% | yolov4-p5.pt |
| Yolov4-p5 | Tta | 52,5% | 70,2% | 57,8% | 38,5% | 57,2% | 64,0% | - - |
| Yolov4-p5 (+bof) | 896 | 51,7% | 70,3% | 56,7% | 35,9% | 56,7% | 64,3% | yolov4-p5_.pt |
| Yolov4-p5 (+bof) | Tta | 52,8% | 70,6% | 58,3% | 38,8% | 57,4% | 64,4% | - - |
| Yolov4-p6 | 1280 | 53,9% | 72,0% | 59,0% | 39,3% | 58,3% | 66,6% | yolov4-p6.pt |
| Yolov4-p6 | Tta | 54,4% | 72,3% | 59,6% | 39,8% | 58,9% | 67,6% | - - |
| Yolov4-p6 (+bof) | 1280 | 54,4% | 72,7% | 59,5% | 39,5% | 58,9% | 67,3% | yolov4-p6_.pt |
| Yolov4-p6 (+bof) | Tta | 54,8% | 72,6% | 60,0% | 40,6% | 59,1% | 68,2% | - - |
| Yolov4-p6 (+bof*) | 1280 | 54,7% | 72,9% | 60,0% | 39,4% | 59,2% | 68,3% | |
| Yolov4-p6 (+bof*) | Tta | 55,3% | 73,2% | 60,8% | 40,5% | 59,9% | 69,4% | - - |
| Yolov4-p7 | 1536 | 55,0% | 72,9% | 60,2% | 39,8% | 59,9% | 68,4% | yolov4-p7.pt |
| Yolov4-p7 | Tta | 55,5% | 72,9% | 60,8% | 41,1% | 60,3% | 68,9% | - - |
| Modell | Testgröße | AP val | AP 50 Val | AP 75 Val | AP S Val | Ap m val | Ap l val |
|---|---|---|---|---|---|---|---|
| Yolov4-p6-Einhaltung | 1280 | 54,3% | 72,3% | 59,6% | 38,7% | 58,9% | 66,6% |
# create the docker container, you can change the share memory size if you have more.
nvidia-docker run --name yolov4_csp -it -v your_coco_path/:/coco/ -v your_code_path/:/yolo --shm-size=64g nvcr.io/nvidia/pytorch:20.06-py3
# install mish-cuda, if you use different pytorch version, you could try https://github.com/thomasbrandon/mish-cuda
cd /
git clone https://github.com/JunnYu/mish-cuda
cd mish-cuda
python setup.py build install
# go to code folder
cd /yolo
# download {yolov4-p5.pt, yolov4-p6.pt, yolov4-p7.pt} and put them in /yolo/weights/ folder.
python test.py --img 896 --conf 0.001 --batch 8 --device 0 --data coco.yaml --weights weights/yolov4-p5.pt
python test.py --img 1280 --conf 0.001 --batch 8 --device 0 --data coco.yaml --weights weights/yolov4-p6.pt
python test.py --img 1536 --conf 0.001 --batch 8 --device 0 --data coco.yaml --weights weights/yolov4-p7.pt
Sie erhalten die folgenden Ergebnisse:
# yolov4-p5
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.51244
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.69771
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.56180
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.35021
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.56247
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.63983
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.38530
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.64048
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.69801
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.55487
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.74368
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.82826
# yolov4-p6
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.53857
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.72015
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.59025
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.39285
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.58283
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.66580
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.39552
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.66504
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.72141
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.59193
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.75844
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.83981
# yolov4-p7
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.55046
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.72925
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.60224
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.39836
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.59854
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.68405
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.40256
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.66929
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.72943
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.59943
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.76873
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.84460
Wir verwenden mehrere GPUs für das Training. {Yolov4-p5, yolov4-p6, yolov4-p7} Verwenden Sie die Eingabeauflösung {896, 1280, 1536} für das Training.
# yolov4-p5
python -m torch.distributed.launch --nproc_per_node 4 train.py --batch-size 64 --img 896 896 --data coco.yaml --cfg yolov4-p5.yaml --weights '' --sync-bn --device 0,1,2,3 --name yolov4-p5
python -m torch.distributed.launch --nproc_per_node 4 train.py --batch-size 64 --img 896 896 --data coco.yaml --cfg yolov4-p5.yaml --weights 'runs/exp0_yolov4-p5/weights/last_298.pt' --sync-bn --device 0,1,2,3 --name yolov4-p5-tune --hyp 'data/hyp.finetune.yaml' --epochs 450 --resume
Wenn Ihr Trainingsprozess einlädt, ist dies aufgrund von Insekten des Python. Nur Ctrl+C um das Training zu stoppen und das Training wieder aufzunehmen von:
# yolov4-p5
python -m torch.distributed.launch --nproc_per_node 4 train.py --batch-size 64 --img 896 896 --data coco.yaml --cfg yolov4-p5.yaml --weights 'runs/exp0_yolov4-p5/weights/last.pt' --sync-bn --device 0,1,2,3 --name yolov4-p5 --resume
@InProceedings{Wang_2021_CVPR,
author = {Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
title = {{Scaled-YOLOv4}: Scaling Cross Stage Partial Network},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2021},
pages = {13029-13038}
}