赞
踩
YOLO系列目标检测算法以其高效和实时性在计算机视觉领域赢得了广泛的赞誉。YOLOv7作为这一系列算法的最新迭代版本,是由YOLO系列原作者及其团队研发的一款高性能目标检测模型,继承了YOLO家族一贯的优良特性,并在此基础上实现了显著的性能提升和技术创新。
YOLOv7引入了模型重参数化技术,通过重新组织网络结构和优化参数,有效减少了模型的计算负担,同时保持了较高的检测精度。
创新性地提出了扩展的高效层聚合网络(E-ELAN),该结构通过巧妙的设计,增强了不同尺度特征图之间的信息交互和融合能力,进一步提升了模型在各种尺寸目标上的检测性能。
YOLOv7在保证高检测精度的同时,延续了YOLO系列的快速响应特性,使得模型在实时应用中更具优势,无论是嵌入式设备还是高性能服务器上都能展现出优越的表现。
继续优化YOLOv3以来引入的Neck结构,强化特征金字塔构建,增强多尺度特征融合,有助于模型在复杂场景下精确识别各类大小和姿态的目标。
采用了先进的训练策略和技巧,如正则化手段、数据增强、损失函数优化等,以提高模型泛化能力和鲁棒性。
YOLOv7不仅可用于传统的二维目标检测,而且还可以通过扩展应用于三维目标检测、人体姿态估计等领域。此外,其轻量级版本尤其适合资源有限的边缘计算设备,推动了目标检测技术在物联网、自动驾驶、无人机导航等场景的实际应用。
结论
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
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
数据准备
bash scripts/get_coco.sh
下载 MS COCO 数据集图像(训练、评估、测试)和标签。如果您以前使用过其他版本的 YOLO,我们强烈建议您删除和文件,然后重新下载标签train2017.cacheval2017.cache
单 GPU 训练
- # 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
自定义数据集的单 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
在视频中:
python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source yourvideo.mp4
Pytorch 到 CoreML(以及 MacOS/iOS 上的推理) 使用 NMS(和推理)将 Pytorch 到 ONNX
- 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 的另一种方式
扩大
与: Python 3.7.13, Pytorch 1.12.0+cu113 测试
- @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}
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。