• 跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)


    1. 一些可用的参考链接

    2. 开始训练yolov7

    yolov7-tiny
    参数量:6023106
    GFLOPs:13.2

    1. 先进入官网下载yolov7-main代码(直接下载的master根目录代码)
    2. 直接点击下载yolov7-tiny.pt,有12MB
      如果是要在AutoDL中训练,则需要再下载Arial.ttf字体后上传到yolov7-main根目录
    3. 先跟着以下训练命令创建或者配置好一些文件,再回来复制这里面的训练命令,粘贴进终端开始训练

    先放上我的训练命令,然后讲解设置到的重要参数的含义

    建议:以下参数可以直接通过更改train.pydefault值来设置,通过default值来设置的好处是:
    1)直接运行train.py即可,不用每次都来重复设置这些值
    2)避免以后回顾代码时忘记了自己参数是怎么设置的
    3)忘记在哪里看到了,说是在pycharm中直接运行py文件会比在终端设置参数来运行的训练速度快一些;如果是在AutoDL上训练那就没啥影响,因为是必须在终端中用命令来运行的。但是我觉得因为前2点原因还是直接先在py中设置好default值比较方便

    python train.py --weights yolov7-tiny.pt --cfg cfg/training/yolov7-tiny.yaml --data data/mydata.yaml --hyp data/hyp.scratch.p5.yaml --epochs 300 --batch-size 32 --workers 16 --name yolov7-tiny
    
    • 1

    其他的重要参数:

    • --adam:命令行中直接加上--adam则表示使用Adam优化器,否则默认使用SGD(如果是自制数据集,建议使用Adam[其实这个策略也是学到的,忘记从哪儿学到的了,可自行尝试一下]。训练yolov5时我对比了一下,使用SGD时loss值变化比较平缓,相反Adam会比较波动。但是采用Adam训练结束之后,各项指标值比如map0.5、FPS等会高一些)

    • --img-size:设置将图像缩放至img-size统一尺寸,再喂入数据网络训练(默认是[640, 640],通常数据集采用这个尺寸就行了。如果是大分辨率图像且采用更大的网络,可适当调大img-size,保持是32的倍数就好。img-size值越大,占用显存就越多,训练速度就更慢,对显卡的要求就越高)

    • --rect:命令行中直接加上--rect则表示开启矩形推理(可以试试不开启和开启这个参数,然后对比训练结果。兴许开启之后会效果好一些)

    • --resume:命令行中加上--resume True则表示进行断点训练(需要开启这个命令通常是因为【训练突然中断or还想继续训练】,有需要的话可参考我这个博客进行更改👉yolov5ds-断点训练、继续训练、先终止训练并调整最终epoch(yolov5同样适用)

    剩下的参数,可以参见我分享出来的训练参数解释链接


    开始配置文件!!!sorry,前调太长了哈哈哈

    2.1 --weights

    --weights:用于指明预训练权重文件位置(如果不需要预训练权重,则使default值为空即''即可,或者终端中命令参数写成--weights ''

    本篇文章是要使用yolov7-tiny,所以用到了yolov7-tiny.pt预训练权重。点击下载yolov7-tiny.pt

    2.2 --cfg

    --cfg:用于指明模型的配置文件(这个要指明training文件夹下的yolov7-tiny,注意是training下的yaml,不是deploy下的,写成这样:--cfg cfg/training/yolov7-tiny.yaml

    2.3 --data

    --data:用来指明自己的配置数据来源,建议将data文件夹下的coco.yaml复制另存为mydata.yaml。命令中写成--data data/mydata.yaml

    注意:数据集不用必须存放到当前项目中,只要在mydata.yaml文件中的trainvaltest指明的txt文件包含了相应任务的图像绝对路径即可。(或者是直接在这里写上文件夹地址也可以,最好是绝对路径。images和labels排布如下所示)

    如果已经存在如下的datasets数据集分布,则可以去我博客【脚本】生成已划分好训练集、验证集、测试集的数据集对应的train.txt、val.txt、test.txt【包含图像的绝对地址】调用代码生成所需txt文件:

    datasets
    ├─images
    │  ├─test
    │  ├─train
    │  └─val
    ├─labels
       ├─test
       ├─train
       └─val
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.4 --hyp

    --hyp:超参数配置文件,我使用的是默认的data/hyp.scratch.p5.yaml文件(我将这个里面的数据增强给关掉了,yolov5中的在线数据增强我也关掉了,因为有人说过:自制的数据集本来复杂度就不够,开启在线数据增强的话,很容易训练效果不好,造成过拟合。但是我看还有一个超参数文件是data/hyp.scratch.tiny.yaml,不知道是不是专门用于tiny效果会好点,正在实验中[结果就是,这个tiny.yaml的超参数配置没有p5.yaml的效果好,map0.5降了2个点。还是就是用默认的超参数设置吧]

    关闭在线数据增强的方式就是,将15行以下的值全部改为0

    2.5 --epochs

    --epochs:训练的轮数,默认为300(如果是自制数据集,类别不多且图像张数不多、复杂度也不是太多的话,设置200~300肯定是够的了)

    2.6 --batch-size

    --batch-size:设置一次性选用多少张图像进行训练(下图引自手把手调参最新 YOLOv7 模型 训练部分 - 最新版本(二)

    (通常是8、16、32、64,这取决于自己的GPU内存有多大,大的话就可以设置多点,小的话设置成1、2、4、6、24等,最好是2的倍数。通常论文里面设置成的32、64)

    2.7 --workers

    --workers:训练时使用的CPU线程数。如果是在windows上训练,一定要设置成0,不然会出错;如果是Linux系统,通常设置成8、16(设置得越大,训练可能会快点)

    2.8 --name

    --name:设置结果保存文件夹的名称,默认是exp(建议使用这个参数,指明本次实验结果是训练什么模型,以免后续再回顾实验结果时搞不清楚,写成--name yolov7-tiny

  • 相关阅读:
    小蓝的钥匙(蓝桥杯错排)
    【虚幻引擎UE】UE4/UE5 GIS相关插件推荐及使用介绍
    hbase操作学习
    给定n个结点m条边的简单无向图,判断该图是否存在鱼形状的子图:有一个环,其中有一个结点有另外两条边,连向不在环内的两个结点。若有,输出子图的连边
    Java ArrayList扩容底层原理深挖
    docker数据卷命令演示
    项目运维工作的心得总结
    Python语言—爬虫之旅
    cap理论、base 定理、分布式事务的理解与相互关系
    Docker 镜像的缓存特性
  • 原文地址:https://blog.csdn.net/LWD19981223/article/details/127883655