تنفيذ الورق-YOLOV7: يحدد أكياس الفجاة القابلة للتدريب على أحدث طراز للكشف عن الكائنات في الوقت الفعلي
السيدة كوكو
نموذج | حجم الاختبار | اختبار AP | اختبار AP 50 | AP 75 اختبار | دفعة 1 إطارًا في الثانية | الدفعة 32 متوسط الوقت |
---|---|---|---|---|---|---|
Yolov7 | 640 | 51.4 ٪ | 69.7 ٪ | 55.9 ٪ | 161 إطارًا في الثانية | 2.8 مللي ثانية |
Yolov7-x | 640 | 53.1 ٪ | 71.2 ٪ | 57.8 ٪ | 114 إطارًا في الثانية | 4.3 MS |
Yolov7-W6 | 1280 | 54.9 ٪ | 72.6 ٪ | 60.1 ٪ | 84 إطارًا في الثانية | 7.6 مللي ثانية |
Yolov7-E6 | 1280 | 56.0 ٪ | 73.5 ٪ | 61.2 ٪ | 56 إطارًا في الثانية | 12.3 مللي ثانية |
Yolov7-D6 | 1280 | 56.6 ٪ | 74.0 ٪ | 61.8 ٪ | 44 إطارًا في الثانية | 15.0 مللي ثانية |
Yolov7-E6e | 1280 | 56.8 ٪ | 74.4 ٪ | 62.1 ٪ | 36 إطارًا في الثانية | 18.7 مللي ثانية |
بيئة Docker (موصى بها)
# create the docker container, you can change the share memory size if you have more.
nvidia-docker run --name yolov7 -it -v your_coco_path/:/coco/ -v your_code_path/:/yolov7 --shm-size=64g nvcr.io/nvidia/pytorch:21.08-py3
# apt install required packages
apt update
apt install -y zip htop screen libgl1-mesa-glx
# pip install required packages
pip install seaborn thop
# go to code folder
cd /yolov7
yolov7.pt
yolov7x.pt
yolov7-w6.pt
yolov7-e6.pt
yolov7-d6.pt
yolov7-e6e.pt
python test.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.65 --device 0 --weights yolov7.pt --name yolov7_640_val
سوف تحصل على النتائج:
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.51206
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.69730
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.55521
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.35247
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.55937
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.66693
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.38453
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.63765
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.68772
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.53766
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.73549
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.83868
لقياس الدقة ، قم بتنزيل coco-annotations for pycocotools إلى ./coco/annotations/instances_val2017.json
إعداد البيانات
bash scripts/get_coco.sh
train2017.cache
و val2017.cache
Files ، و Redownload Labelsتدريب وحدات معالجة الرسومات الواحدة
# train p5 models
python train.py --workers 8 --device 0 --batch-size 32 --data data/coco.yaml --img 640 640 --cfg cfg/training/yolov7.yaml --weights ' ' --name yolov7 --hyp data/hyp.scratch.p5.yaml
# train p6 models
python train_aux.py --workers 8 --device 0 --batch-size 16 --data data/coco.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6.yaml --weights ' ' --name yolov7-w6 --hyp data/hyp.scratch.p6.yaml
التدريب متعدد GPU
# train p5 models
python -m torch.distributed.launch --nproc_per_node 4 --master_port 9527 train.py --workers 8 --device 0,1,2,3 --sync-bn --batch-size 128 --data data/coco.yaml --img 640 640 --cfg cfg/training/yolov7.yaml --weights ' ' --name yolov7 --hyp data/hyp.scratch.p5.yaml
# train p6 models
python -m torch.distributed.launch --nproc_per_node 8 --master_port 9527 train_aux.py --workers 8 --device 0,1,2,3,4,5,6,7 --sync-bn --batch-size 128 --data data/coco.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6.yaml --weights ' ' --name yolov7-w6 --hyp data/hyp.scratch.p6.yaml
yolov7_training.pt
yolov7x_training.pt
yolov7-w6_training.pt
yolov7-e6_training.pt
yolov7-d6_training.pt
yolov7-e6e_training.pt
وحدات معالجة الرسومات GPU واحدة لمجموعة البيانات المخصصة
# finetune p5 models
python train.py --workers 8 --device 0 --batch-size 32 --data data/custom.yaml --img 640 640 --cfg cfg/training/yolov7-custom.yaml --weights ' yolov7_training.pt ' --name yolov7-custom --hyp data/hyp.scratch.custom.yaml
# finetune p6 models
python train_aux.py --workers 8 --device 0 --batch-size 16 --data data/custom.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6-custom.yaml --weights ' yolov7-w6_training.pt ' --name yolov7-w6-custom --hyp data/hyp.scratch.custom.yaml
انظر reparameterization.ipynb
على الفيديو:
python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source yourvideo.mp4
على الصورة:
python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg
Pytorch إلى Coreml (والاستدلال على MacOS/iOS)
Pytorch إلى Onnx مع NMS (والاستدلال)
python export.py --weights yolov7-tiny.pt --grid --end2end --simplify
--topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640 --max-wh 640
Pytorch إلى Tensorrt مع NMS (والاستدلال)
wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-tiny.pt
python export.py --weights ./yolov7-tiny.pt --grid --end2end --simplify --topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640
git clone https://github.com/Linaom1214/tensorrt-python.git
python ./tensorrt-python/export.py -o yolov7-tiny.onnx -e yolov7-tiny-nms.trt -p fp16
Pytorch to Tensorrt بطريقة أخرى
wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-tiny.pt
python export.py --weights yolov7-tiny.pt --grid --include-nms
git clone https://github.com/Linaom1214/tensorrt-python.git
python ./tensorrt-python/export.py -o yolov7-tiny.onnx -e yolov7-tiny-nms.trt -p fp16
# Or use trtexec to convert ONNX to TensorRT engine
/usr/src/tensorrt/bin/trtexec --onnx=yolov7-tiny.onnx --saveEngine=yolov7-tiny-nms.trt --fp16
تم اختباره مع: Python 3.7.13 ، Pytorch 1.12.0+Cu113
code
yolov7-w6-pose.pt
انظر keypoint.ipynb.
code
yolov7-mask.pt
انظر مثيل.
code
yolov7-seg.pt
yolov7 على سبيل المثال تجزئة (Yolor + Yolov5 + Yolact)
نموذج | حجم الاختبار | صندوق AP | AP 50 مربع | AP 75 مربع | قناع AP | AP 50 قناع | قناع AP 75 |
---|---|---|---|---|---|---|---|
Yolov7-seg | 640 | 51.4 ٪ | 69.4 ٪ | 55.8 ٪ | 41.5 ٪ | 65.5 ٪ | 43.7 ٪ |
code
yolov7-u6.pt
yolov7 مع رأس تل فصل (yolor + yolov5 + yolov6)
نموذج | حجم الاختبار | AP Val | AP 50 فال | AP 75 فال |
---|---|---|---|---|
Yolov7-U6 | 640 | 52.6 ٪ | 69.7 ٪ | 57.3 ٪ |
@inproceedings{wang2023yolov7,
title={{YOLOv7}: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors},
author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2023}
}
@article{wang2023designing,
title={Designing Network Design Strategies Through Gradient Path Analysis},
author={Wang, Chien-Yao and Liao, Hong-Yuan Mark and Yeh, I-Hau},
journal={Journal of Information Science and Engineering},
year={2023}
}
yolov7-semantic & yolov7-panoptic & yolov7-caption
yolov7-semantic & yolov7-detection & yolov7-depth (مع NTUT)
yolov7-3d-detection & yolov7-lidar & yolov7-road (مع NTUT)