参数详解:yolov7模型 训练部分(train.py)

cfg→training下面的yolov7配置文件具体见原作者的博客yolov7.yaml文件详解_yolov7 yaml-CSDN博客

二是data文件下的数据相关配置文件和超参数配置文件

三、train参数详解

1、weights(权重)

parser.add_argument('--weights', type=str, default='yolov7.pt', help='initial weights path')

网络权重,默认是'yolov7.pt'可根据需求设置不同尺寸大小的权重

2、cfg(权重的一些重要信息文件)

parser.add_argument('--cfg', type=str, default='yolov7.yaml', help='model.yaml path')

        指定模型配置文件路径的;源码里面提供了几个配置文件,配置文件里面指定了一些参数信息和backbone的结构信息。

3、data(数据)

parser.add_argument('--data', type=str, default='datasets/Drozy/data_Drozy.yaml', help='data.yaml path')

4、hyp(超参数)

parser.add_argument('--hyp', type=str, default='data/hyp.scratch.tiny.yaml', help='hyperparameters path')

        里面包含了超参数的信息

5、 epochs(训练的代数)

parser.add_argument('--epochs', type=int, default=300)

6、batch-size

parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')

        每批次的输入数据量;default=-1将时自动调节batchsize大小,default=16,代表一次输入16张图片进行训练。

7、img-size

parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')

        8的倍数:不满足是会自动向上最小调整

8、rect矩形训练???

parser.add_argument('--rect', action='store_true', help='rectangular training')

        图像是否采用矩形的方式去训练模型,采用矩阵推理的话就不要求送入的训练的图片是正方形了——默认好像是否##########################

9、resume(断点训练)

parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')

断点续训:即是否在之前训练的一个模型基础上继续训练,default 值默认是 false

假如你想进行断点训练,那就先将default=True

随后输入

python train.py --resume runs/train/exp_yolov7-tiny-2/weights/last.pt    

10、nosave

        不使用,不管

parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')

        是否保存最后一轮的pt文件,我们默认保存的是best.pt和last.pt

11、notest

不使用,不管

parser.add_argument('--notest', action='store_true', help='only test final epoch')

12、noautoanchor自动锚框

parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')

最好使用,默认开启

是否禁用自动锚框;默认是开启的,可以简化训练过程

在这里解释一下anchor

人工标注的边框(bounding box,有时简写bbox 或者 box)是人告诉机器的正确答案叫ground truth bounding box,简写 gt bbox或者gt box,表示已知正确的意思。
程序生成的一堆box,想要预测正确的gt box,这些生成的box叫anchor。

在这里介绍两个指标

bpr(best possible recall)
aat(anchors above threshold)

当配置文件中的anchor计算bpr(best possible recall)小于0.98时才会重新计算anchor。
best possible recall最大值1,如果bpr小于0.98,程序会根据数据集的label自动学习anchor的尺寸

13、evolve

parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters')

        超参数进化,模型提供的默认参数是通过在COCO数据集上使用超参数进化得来的(由于超参数进化会耗费大量的资源和时间,如果默认参数训练出来的结果能满足你的使用,使用默认参数也是不错的选择)默认不开启

14、bucket
parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')
谷歌云盘;通过这个参数可以下载谷歌云盘上的一些东西。

15、cache-images缓存图片到内存

parser.add_argument('--cache-images', action='store_true', help='cache images for faster training')

        是否提前缓存图片到缓存,以加快训练速度,默认为False

在train.py中修改,一劳永逸:添加 const='ram'

# const='ram'缓存到内存
parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"')

16、image-weights加权训练图像,解决样本图片不平衡问题

parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')

        是否启用加权训练图像默认为Flase,主要为了解决样本图片不平衡问题;开启后会对上一轮训练不好的图片,在下一轮中增加权重。

17、device

parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')

多gpu训练修改##########

18、multi-scale多尺度训练

parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')

        采用多尺度训练默认是False,设置几种不同的图片输入尺度,训练时每隔一定的ierations随机选取一种尺度训练。——未尝试

19、single-cls

parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')

不动它
设定训练的数据集是单类别还是多类别,默认为多类别。

20、adam优化器

parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')

使用它——默认Flase???
启用#####代码》》》

21、sync-bn

parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')

同步Batch Normalization,是否跨多设备进行Batch Normalization
多GPU使用?未使用

22、local_rank

parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')

DDP参数,请勿修改

使用DDP进行单机多卡训练时,通过多进程在多个GPU上复制模型,每个GPU都由一个进程控制,同时需要将参数local_rank传递给进程,用于表示当前进程使用的是哪一个GPU。
详情见:PyTorch单机多卡训练(DDP-DistributedDataParallel的使用)备忘记录_ddp多卡训练-CSDN博客

23、workers

parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers')

        workers指数据装载时cpu所使用的线程数,默认为8。和batch--size的区别,batch--size是指训练一组放入多少张照片,消耗的是GPU
windows一般为0

24、project

parser.add_argument('--project', default='runs/train', help='save to project/name')

训练模型存放的路径

25、entity

parser.add_argument('--entity', default=None, help='W&B entity')

wandb 库的使用

26、name

parser.add_argument('--name', default='exp', help='save to project/name')

        用于设定保存的模型文件名

27、exist-ok

parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')

用于设定预测结果的保存存在位置情况,
一般为true。
当为 false,在新命名的文件夹下保存;
当为 true,在 name 指定文件夹下保存,源码中保存在 exp 文件夹下

一般不动

28、quad

parser.add_argument('--quad', action='store_true', help='quad dataloader')

简单理解,生效后可以在比前面 “--img-size” 部分设置的训练测试数据集更大的数据集上训练。
好处是在比默认 640 大的数据集上训练效果更好,副作用是在 640 大小的数据集上训练效果可能会差一些

29、linear-lr

parser.add_argument('--linear-lr', action='store_true', help='linear LR')

用于对学习速率进行调整,默认为 false,含义是通过余弦函数来降低学习率

30、label-smoothing

parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')

用于对标签进行平滑处理。作用是防止在分类算法中过拟合情况的产生。

31、upload_dataset

parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table')

wandb 库对应的东西,不必考虑

32、bbox_interval

parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B')

wandb 库对应的东西,不必考虑

33、save_period

parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch')

用于记录每个epoch训练日志信息,int 型,默认为 -1

34、artifact_alias

parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used')

可能以后更新的参数

35、freeze

parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone of yolov7=50, first3=0 1 2')

“冻结”层指的是该层不参加网络训练,yolov7的冻结层是50层


版权声明:本文为CSDN博主「把爱留给SCI」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43397302/article/details/126732241

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
train.pyYOLOv5项目中的一个关键文件,用于训练模型。在train.py中,有几个重要的函数和配置信息。 首先是parse_opt函数,该函数用于解析命令行参数,包括模型的配置文件、数据集的路径、训练参数等等。\[3\] 接下来是main函数,该函数用于打印关键词和安装环境,判断是否进行断点训练和分布式训练,以及是否进行进化训练/遗传算法调参。\[3\] train函数是训练模型的核心函数,其中包含了一系列的配置信息和操作。首先是基本配置信息,包括模型的选择、损失函数的选择、训练的epoch数等等。然后是模型的加载和断点训练的设置,可以从之前的训练中继续训练模型。接着是冻结训练和冻结层设置,可以选择是否冻结部分层进行训练。还有图片大小和batch size的设置,以及优化器的选择和分组优化设置。此外,还包括学习率的设置、指数移动平均(EMA)的使用、归一化和单机多卡训练的配置。数据加载和anchor调整也是train函数中的一部分。最后,train函数包括了训练的配置,如多尺度训练和热身训练,以及训练结束后的打印信息和结果保存。\[3\] 除了上述函数外,还有run函数用于运行整个训练过程。全部代码都有详细的注释和使用教程,方便用户理解和使用。\[3\] 综上所述,train.pyYOLOv5项目中用于训练模型的关键文件,其中包含了各种配置信息和函数,用于控制训练过程和保存结果。\[3\] #### 引用[.reference_title] - *1* *2* [yolov5代码解读--train.py](https://blog.csdn.net/weixin_43337201/article/details/109389044)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [yolov5——train.py代码【注释、详解、使用教程】](https://blog.csdn.net/CharmsLUO/article/details/123542598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值