当前位置:   article > 正文

YOLOv7:一种快速准确的目标检测算法新进展

yolov7

YOLO系列目标检测算法以其高效和实时性在计算机视觉领域赢得了广泛的赞誉。YOLOv7作为这一系列算法的最新迭代版本,是由YOLO系列原作者及其团队研发的一款高性能目标检测模型,继承了YOLO家族一贯的优良特性,并在此基础上实现了显著的性能提升和技术创新。

核心特点与改进
1. 模型重参数化

 YOLOv7引入了模型重参数化技术,通过重新组织网络结构和优化参数,有效减少了模型的计算负担,同时保持了较高的检测精度。

2. 高效层聚合网络扩展

 创新性地提出了扩展的高效层聚合网络(E-ELAN),该结构通过巧妙的设计,增强了不同尺度特征图之间的信息交互和融合能力,进一步提升了模型在各种尺寸目标上的检测性能。

3. 速度与精度的平衡

  YOLOv7在保证高检测精度的同时,延续了YOLO系列的快速响应特性,使得模型在实时应用中更具优势,无论是嵌入式设备还是高性能服务器上都能展现出优越的表现。

4. Neck结构优化

  继续优化YOLOv3以来引入的Neck结构,强化特征金字塔构建,增强多尺度特征融合,有助于模型在复杂场景下精确识别各类大小和姿态的目标。

5. 训练策略与优化

 采用了先进的训练策略和技巧,如正则化手段、数据增强、损失函数优化等,以提高模型泛化能力和鲁棒性。

应用与拓展

YOLOv7不仅可用于传统的二维目标检测,而且还可以通过扩展应用于三维目标检测、人体姿态估计等领域。此外,其轻量级版本尤其适合资源有限的边缘计算设备,推动了目标检测技术在物联网、自动驾驶、无人机导航等场景的实际应用。

结论

总之,YOLOv7作为目标检测领域的重要成果,凝聚了研究人员对模型效率和性能优化的深刻理解与创新实践。通过一系列关键技术的革新,YOLOv7既保持了YOLO系列固有的实时性和实用性,又在检测精度上达到了新的高度,成为众多计算机视觉应用的理想选择。

性能 

安装 

Docker 环境(推荐)

  1. # create the docker container, you can change the share memory size if you have more.
  2. 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
  3. # apt install required packages
  4. apt update
  5. apt install -y zip htop screen libgl1-mesa-glx
  6. # pip install required packages
  7. pip install seaborn thop
  8. # go to code folder
  9. 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

你会得到结果:

  1. Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.51206
  2. Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.69730
  3. Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.55521
  4. Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.35247
  5. Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.55937
  6. Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.66693
  7. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.38453
  8. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.63765
  9. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.68772
  10. Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.53766
  11. Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.73549
  12. 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 训练

  1. # train p5 models
  2. 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
  3. # train p6 models
  4. 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 训练

  1. # train p5 models
  2. 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
  3. # train p6 models
  4. 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 微调

  1. # finetune p5 models
  2. 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
  3. # finetune p6 models
  4. 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

  1. python export.py --weights yolov7-tiny.pt --grid --end2end --simplify \
  2. --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 测试

姿态估计

实例分段(使用 NTU) 

实例细分 

无锚检测头 

引文 
  1. @inproceedings{wang2023yolov7,
  2. title={{YOLOv7}: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors},
  3. author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
  4. booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  5. year={2023}
  6. }
  1. @article{wang2023designing,
  2. title={Designing Network Design Strategies Through Gradient Path Analysis},
  3. author={Wang, Chien-Yao and Liao, Hong-Yuan Mark and Yeh, I-Hau},
  4. journal={Journal of Information Science and Engineering},
  5. year={2023}
  6. }

传情

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/448648
推荐阅读
相关标签
  

闽ICP备14008679号