YOLOv5参数浅层理解(一)
这里写目录标题
‘–weights’
即初始训练的权重文件,用yolo的权重文件有:yolov5s,yolov5m,yolov5l,yolov5x;我使用最大的xl模型来进行了训练
‘–cfg’
即模型训练文件‘.yaml’文件:模型配置文件。
模型配置文件是一个 YAML 文件,其中包含了有关模型架构和训练参数的各种详细信息,其定义了模型的层次结构、损失函数、学习率调度器、数据增强策略等等。这些信息对于训练和推理非常重要,因为它们决定了模型的行为和性能。
‘–data’
即指定一个数据集.yaml配置文件,
- 配置文件里需要写明数据集的位置,数据集的制作应该按照官方要求进行制作
- 配置文件里需要写明类别,需要与已有的数据集一一对应
‘–hyp’
参数用于指定超参数文件的路径,该文件包含了训练 YOLOv5 模型所需的各种超参数(Hyperparameters)。超参数是在训练模型之前需要手动设置的参数,其控制着模型训练的行为和性能。
超参数文件通常是一个 YAML 格式的文本文件,其中包含了一系列超参数的键值对。这些超参数包括但不限于学习率、批次大小、优化器类型、损失函数权重、数据增强参数等。
超参数的各个参数理解详见另外一篇
‘–epochs’
指定训练 YOLOv5 模型时的训练轮数(也称为训练周期)。一个训练轮表示模型使用整个训练数据集进行一次前向传播和反向传播的过程。在每个训练轮中,模型会尝试调整权重以减小损失函数的值,从而提高模型在任务上的性能。
‘–batch-size’
用于指定训练 YOLOv5 模型时每个批次(batch)的样本数量。在深度学习中,批次是一组样本同时输入模型进行训练的,而不是逐个样本训练。设置合适的批次大小可以影响训练的速度和模型的性能。
defualt是16
‘–imgsz’
用于指定输入图像的尺寸大小,即训练 YOLOv5 模型时要使用的图像的宽度和高度。设置输入图像尺寸大小可以影响模型的训练速度和性能。
-
较小的图像尺寸通常可以加快训练速度,但可能会损失一些细节信息。较大的图像尺寸可能会提供更多的信息,但会增加计算成本。
-
更小的图像尺寸通常会导致更快的训练速度,因为模型需要处理更少的像素。这对于快速迭代和原型开发非常有用。
defualt是640
‘–rect’
参数用于控制输入图像是否使用保持原始比例(aspect ratio)的方式进行预处理。
默认为0:表示输入图像将被缩放以适应模型的输入尺寸,但不会保持原始图像的宽高比。这意味着输入图像将被强制拉伸或压缩以适应模型的输入尺寸,可能导致图像在某些情况下出现形变。
当设置为‘1’时:表示输入图像将按照保持原始比例的方式进行缩放,以使图像的长边(宽度或高度,取决于输入尺寸)与模型的输入尺寸匹配,而短边将填充黑边。这样可以保持图像的宽高比,但可能会导致图像的一部分被裁剪或填充黑边。
如果需要防止出现形变,可以设置为1
‘–resume’
参数用于指定从先前的训练中恢复模型的训练。这在继续之前中断的训练过程时非常有用,以便不必从头开始重新训练模型。
注意必须是之前已训练的模型,且有相关的训练时的配置文件,否则无法运行
‘–nosave’
用于控制是否保存训练过程中的模型检查点(checkpoint)。模型检查点是在训练过程中定期保存的模型权重文件,以便在训练中断或完成后可以加载和使用模型。
如果选择了true,将不会保存模型的检查点,意味着训练过程中不会创建保存模型权重的文件(如果你只关心训练过程而不注重保存模型的权重)
默认是关闭的
‘–noval’
用于在训练过程中禁用验证集的使用。验证集通常用于评估模型在训练过程中的性能,以检测过拟合等问题。
在数据集的.yaml文件中有一个验证集的路径设置
**如果设置为true的话:**模型将不会在训练过程中进行验证,这可能会加快训练速度,但也会使其无法在训练过程中评估模型的性能。
‘–noautoanchor’
用于控制是否自动计算锚框(anchor boxes)。锚框是用于检测目标的预定义边界框,有助于模型更好地捕捉不同尺寸和形状的目标。
如果打开的话:将使用默认的锚框设置而不是自动计算,这可以用于我们手动指定锚框的情况
‘–noplots’
用于控制是否禁用绘图。在训练过程中,通常会生成各种图表和可视化工具来监视模型的性能和训练进度。--noplots
参数用于禁用这些图表和可视化工具。
一般不关吧,训练完了还可以看数据
‘–evolve’
进化算法(evolutionary algorithm)超参数优化。进化算法是一种用于寻找模型的最佳超参数组合的方法,它通过逐代进化来改进参数,以找到最佳配置。
如果使用了 --evolve
参数,YOLOv5 将使用进化算法来优化超参数。这将导致 YOLOv5 启动一个超参数搜索过程,通过评估不同超参数组合的性能来找到最佳配置。
通常情况下需要手动调整超参数来寻找最佳配置
‘–bucket’
用于指定存储桶(bucket)的名称。存储桶通常用于存储训练数据、模型权重、日志和其他与训练相关的文件。这个选项允许我们将训练过程中生成的文件上传到指定的存储桶中。
一般在云环境当中进行训练和数据管理非常有用
‘–cache’
用于控制是否启用数据集缓存。数据集缓存是一种将数据集加载到内存中的技术,可以提高数据读取速度,从而加快训练过程。
但是一定要确保你的内存足够大,特别是如果数据集很大的情况下
总结
今天主要了解了这几个参数,其具体的原理还在摸索当中,供之后查询使用