yolov8训练进阶:新增配置参数

续yolov8训练进阶:自定义训练脚本,从配置文件载入训练超参数_CodingInCV的博客-CSDN博客
尽管yolov8有很多参数可以设置,但难免我们训练过程中会需要增加自己的参数,如新的数据增强、自定义的一些条件。那么在yolov8中如何实现呢?上文中提到如果我们强行传入新的参数,yolov8训练将报错,因为训练代码里会检查传入的关键字是否存在于默认参数中。所以为了能够传入新的参数,我们首先要将新的关键字加入到默认参数文件中。

增加新参数

默认的参数文件位于yolo/cfg/default.yaml,我们在其中新增一个start_epoch参数,用来指定从哪个epoch开始训练:

# Train settings -------------------------------------------------------------------------------------------------------
model:  # path to model file, i.e. yolov8n.pt, yolov8n.yaml
data:  # path to data file, i.e. coco128.yaml
epochs: 100  # number of epochs to train for
start_epoch: 0  # start epoch
patience: 50  # epochs to wait for no observable improvement for early stopping of training
batch: 16  # number of images per batch (-1 for AutoBatch)
...

使用新参数

为了能够使用新的参数,我们首先需要知道这些参数读取后在哪里使用。
前一篇文章我们提到了训练器继承自yolo/engine/trainer.py中的BaseTrainer,通过查看BaseTrainer的构造函数:

def __init__(self, cfg=DEFAULT_CFG, overrides=None, _callbacks=None):
        """
        Initializes the BaseTrainer class.

        Args:
            cfg (str, optional): Path to a configuration file. Defaults to DEFAULT_CFG.
            overrides (dict, optional): Configuration overrides. Defaults to None.
        """
        self.args = get_cfg(cfg, overrides)
        self.device = select_device(self.args.device, self.args.batch)
        self.check_resume()
        ...

显然,参数在self.args中,所以我们可以从args中取出我们定义的参数:

self.start_epoch = self.args.get("start_epoch", 0)

再使用self.start_epoch去控制我们的训练或者数据读取。定义其他的参数同理。

结语

通过新增参数,我们可以对yolov8的训练和数据读取根据需要进行修改。

你可能感兴趣的:(yolov7/8系列解读与实战,YOLO,目标检测,yolov8,深度学习,计算机视觉)