当前位置:   article > 正文

GitHub YOLOv5 开源代码项目系列讲解(四)------训练相关参数解释_githubyolov5

githubyolov5

GitHub YOLOv5 开源代码项目系列讲解(四)------训练相关参数解释_闭关修炼——暂退的博客-CSDN博客

目 录

1 总述

2 参数详解

2.1 --weights

2.2 --cfg

2.3 --data

2.4 --hyp

2.5 --epochs

2.6 --batch-size

2.7 --img-size

2.8 --rect

2.9 --resume

2.10 --nosave

2.11 --notest

​2.12 --noautoanchor

2.13 --evolve

2.14 --bucket

2.15 --cache-images

2.16 --image-weights

2.17 --device

2.18 --multi-scale

2.19 --single-cls

2.20 --adam

2.21 --sync-bn

2.22 --local_rank

2.23 --workers

2.24 --project

2.25 --entity

2.26 --name

2.27 --exist-ok

2.28 --quad

2.29 --linear-lr

2.30 --label-smoothing

2.31 --upload_dataset

2.32 --bbox_interval

2.33 --save_period

2.34 --artifact_alias

3 训练结果展示

1 总述
利用 yolov5 进行训练神经网络用到的是开源项目源码中的 train.py。

我们可对其 main 函数的红框部分进行调整参数。

2 参数详解
2.1 --weights

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


可以用于指定一个训练好的模型路径,用这个模型初始化模型中一些参数(首先需要提前下载或运行程序时会自动下载)

default 默认为空,意义是用程序的参数权重进行初始化,而不用已经训练好的模型进行初始化。

default 值可设置为:

Yolov5s.pt
Yolov5m.pt
Yolov5l.pt
Yolov5x.pt
2.2 --cfg

  1. parser.add_argument('--cfg', type=str, default='models/yolov5s.yaml', help='model.yaml path')
  2. cfg 为 configuration(设置)的缩写,用于进行模型的配置。

default 用于选择 model 文件。

其设置值可在此文件夹中找到:

2.3 --data

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


用于指定训练数据集。

其设置值可在此文件夹中找到:

2.4 --hyp

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


用于设置超参数(一般用不到)。

其设置值可在此文件夹中找到,源码中提供了两个文件:

hyp.finetune.yaml:设置了一些训练 VOC 数据集时用到的超参数
hyp.scratch.yaml:设置了一些训练 COCO 数据集时用到的超参数


2.5 --epochs

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


用于设置训练的轮数。

源码中 default 值为 300,训练轮次则显示为 0~299。

2.6 --batch-size

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


用于设置一次跑多少的数据输入到网络当中。不设置时默认为16。

2.7 --img-size

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


用于分别设置训练集和测试集的大小。

两个数字前者为训练集大小,后者为测试集大小。

2.8 --rect

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


用于设置矩阵的训练方式。

作用是减去一些不必要信息,加速模型推理过程。

2.9 --resume

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


用于设置是否在最近训练的一个模型基础上继续训练。

default 值默认是 false,当想要 default 为 true 时必须指定在哪个模型上继续训练。指定的模型路径按字符串形式赋值给 default。

2.10 --nosave

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


生效后只保存最后一次 pt 文件。

2.11 --notest

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


生效后只在最后一次进行测试。

此类参数被激活的条件是填入到 Edit Configuration --> Parameters 中,若有多个被激活参数,中间用空格隔开即可。

2.12 --noautoanchor

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


用于设置在目标检测任务中是否采用锚点 / 锚框。

遍历输入图像上所有可能的像素框,然后选出正确的目标框,并对位置和大小进行调整就可以完成目标检测任务。

默认开启,用这种方式来简化模型训练过程。

2.13 --evolve

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


生效后对超参数进行净化。

作用是寻找最优超参数的方式,方法是利用遗传算法自动搜索超参数。

默人不开启。

2.14 --bucket

parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')


这个参数是 yolov5 作者将一些东西放在谷歌云盘,可以进行下载。

2.15 --cache-images

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


生效后将对图片进行缓存,以便更好地进行训练。

2.16 --image-weights
parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')
生效后对于那些训练不好的图片,会在下一轮中增加一些权重。

2.17 --device
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
用于设置运行 pytorch 框架的使用设备,是用 GPU cuda,还是 cpu,适用于设置这些内容的。

2.18 --multi-scale
parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')
用于对图片尺度进行变换。

2.19 --single-cls
parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')
用于设定训练数据集是单类别还是多类别。

默认为 false,意味着是多类别。

2.20 --adam
parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')
生效后作为优化器来使用。

填入到 Edit Configuration --> Parameters 中即为 true ,意味着要用此优化器;否则为 false,为 false 时用的是随机梯度下降(SGD)优化算法。

2.21 --sync-bn
parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')
生效后进行多 GPU 进行分布式训练。

2.22 --local_rank
parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')
DistributedDataParallel 单机多卡训练,一般不改动。

2.23 --workers
parser.add_argument('--workers', type=int, default=0, help='maximum number of dataloader workers')
这里强烈建议 default 设置为 0。

2.24 --project
parser.add_argument('--project', default='runs/train', help='save to project/name')
用于指定训练好的模型的保存路径。

2.25 --entity
parser.add_argument('--entity', default=None, help='W&B entity')
wandb 库对应的东西,作用不大,不必考虑。

这里补充一点:

关闭 wandb 的方法是:在源码 tree 下找到 util --> wandb_logging --> wandb_utils.py 文件,在 18 行左右的位置之后,加一句 “wandb = None”,即可关闭。(因为 wandb 库需要另外安装,而且其作用不大,这里提供一种忽略方法)

2.26 --name
parser.add_argument('--name', default='exp', help='save to project/name')
用于设定保存的模型文件名。

2.27 --exist-ok
parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
用于设定预测结果的保存存在位置情况。

当不激活时为 false,在新命名的文件夹下保存。

当激活时为 true,在 name 指定文件夹下保存,源码中保存在 exp 文件夹下

对应示例图片在 《GitHub YOLOv5 开源代码项目系列讲解(三)------预测相关参数解释》 博文 2.17 部分可以找到。

2.28 --quad
parser.add_argument('--quad', action='store_true', help='quad dataloader')
解释为 quad 数据加载的相关设置。

简单理解,生效后可以在比前面 “--img-size” 部分设置的训练测试数据集更大的数据集上训练。

好处是在比默认 640 大的数据集上训练效果更好
副作用是在 640 大小的数据集上训练效果可能会差一些
2.29 --linear-lr
parser.add_argument('--linear-lr', action='store_true', help='linear LR')
用于对学习速率进行调整

默认为 false,含义是通过余弦函数来降低学习率。

注:当我们使用梯度下降算法来优化目标函数的时候,当越来越接近Loss值的全局最小值时,学习率应该变得更小来使得模型尽可能接近这一点,而余弦退火(Cosine annealing)可以通过余弦函数来降低学习率。

生效之后则转变为通过线性处理来降低学习率。

2.30 --label-smoothing
parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')
用于对标签进行平滑处理。

作用是防止在分类算法中过拟合情况的产生。

2.31 --upload_dataset
parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table')
wandb 库对应的东西,作用不大,不必考虑。

2.32 --bbox_interval
parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B')
这又是一个与 wandb 库相关的参数设置,作用不大,忽略。

2.33 --save_period
parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch')
用于记录训练日志信息,int 型,默认为 -1。

2.34 --artifact_alias
parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used')
这一行参数表达的是想实现但还未实现的一个内容,忽略即可。亲测注释掉整个程序也可运行。

3 训练结果展示


保存位置

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

闽ICP备14008679号