• Github每日精选(第13期):实时目标检测网络YOLOv7


    YOLOv7真的是非常强大和硬核, 在 5 FPS 到 160 FPS 范围内的速度和准确度都超过了所有已知的目标检测器,这是目前来说,最好的额目标检测技术了。

    在这里插入图片描述

    github的地址在这里。如果做的是机器学习方面的研究可以参考相关的代码。

    在机器学习领域中,技术的发展非常的快,有的时候前一代的技术还没有被消化,下一代的技术又出来了。

    就像目标检测一样,之前美团出的YOLO6还没有来得及看,YOLOv7又出来了。

    YOLOv7YOLOv4 同处于一个团队,YOLOv4 在github的地址在这里

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    测试

    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
     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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    训练

    数据准备

    ash scripts/get_coco.sh
    
    • 1

    下载 MS COCO 数据集图像(train、val、test)和标签。如果您之前使用过不同版本的YOLO,我们强烈建议您删除train2017.cache和val2017.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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    多 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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    迁移学习

    自定义数据集的单 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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    深入

    视频上:

    python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source yourvideo.mp4
    
    • 1

    图上:

    python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg
    
    • 1

    在这里插入图片描述

    导出

    从 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
    
    • 1
    • 2

    从 Pytorch 到 TensorRT

    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
    
    • 1
    • 2
    • 3
    • 4

    Pytorch 到 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    Django学习记录08——图表及文件上传案例
    请讲一讲JS中的 for...in 与 for...of (上)
    pcba完整新工艺流程来了
    国产麒麟V10桌面操作系统上运行WinForm程序
    详解Postman使用
    Git相关配置及问题解决
    leetcode简单题21 N.104 二叉树的最大深度 rust描述
    【0】数学的魅力
    request模块中,常见的状态码返回含义
    QML 如何显示文本?Text可以有多少功能?
  • 原文地址:https://blog.csdn.net/weixin_40425640/article/details/125977885