目标检测训练

功能介绍:目标检测训练是利用标注好的数据来训练模型,使其能够准确地检测图像中的目标物体。通过调整训练参数,可以优化模型的性能,提高检测的准确性和效率。

前置条件:建议在待标注的数据集根目录下增加一个<数据集名称>.yaml的配置文件,配置内容如下:

操作步骤

  1. 进入训练界面:在平台主界面中,找到并点击目标检测训练功能入口,进入训练界面。界面主要分为设置区和命令区。

  2. 设置训练参数 - 第一区域

  • 迭代次数(epochs)

    :默认值为 100,可调整范围是 10 - 1000。迭代次数表示模型对整个数据集进行遍历的次数,适当增加迭代次数可以提高模型的学习效果,但也会增加训练时间。

  • 批量大小(batch_size)

    :默认值为 16,可调整范围是 16 - 16 * 16。批量大小指的是在一次迭代中同时处理的样本数量,合适的批量大小可以提高内存利用率和训练速度。

  • 图像大小(imgsz)

    :默认值为 640,所有输入模型的图像都将被调整为该尺寸,图像大小会影响模型的准确度和计算复杂度。

  • 等待轮数(patience)

    :默认值为 100,可通过输入框输入自定义数字。等待轮数表示在验证指标没有改善的情况下,模型继续训练的轮数,之后将提前停止训练,以防止过拟合。

  • 初始学习率(lr0)

    :默认值为 0.01,可通过输入框输入自定义数字。学习率控制着模型参数更新的步长,对模型的收敛速度和性能有重要影响。

  • 设置训练参数 - 第二区域

    • 是否保存模型权重(save)

      :默认值为 True,可进行选择。启用该选项后,模型在训练过程中会保存检查点和最终的模型权重,方便后续恢复训练或进行模型部署。

    • 保存模型权重周期(save_period)

      :默认值为 - 1,可通过输入框输入自定义数字。该参数表示保存模型检查点的频率,以轮数为单位,值为 - 1 时禁用此功能。

    • 训练设备(device)

      :默认值为 cpu(目前只支持cpu,GPU模式尚未测试)。用于指定模型训练所使用的计算设备,选择合适的设备可以显著提高训练速度。

    • 工作线程数(workers)

      :默认值为 8,可通过输入框输入自定义数字。工作线程数影响数据预处理和输入模型的速度,在多 GPU 设置中尤其重要。

    • 优化器类型(optimizer)

      :默认值为 'AdamW',可选择 Auto、SGD、Adam、AdamW、NAdam、RAdam、RMSProp 等选项。优化器用于调整模型的权重,以最小化损失函数,不同的优化器具有不同的特点和适用场景。

  • 设置训练参数 - 第三区域:“模型名称(model)” 默认值为空,点击“选择模型文件”按钮,在弹出的文件选择对话框中选择预训练模型(.pt 文件),选择后文件路径将显示在相应的输入框中。预训练模型默认放在dataset的model目录下

  • 设置训练参数 - 第四区域:“数据集路径(data)” 默认值为空,点击“数据集路径”按钮,在弹出的文件选择对话框中选择数据集配置文件(.yaml 文件),选择后文件路径将显示在相应的输入框中。这里的yaml文件要新建

  • 开始训练:设置好所有训练参数后,点击命令区的“训练”按钮。系统会收集设置区的所有输入值后,开始训练。训练过程中,控制台的输出信息会同步显示在控制台区的控制台中。训练结束后,系统会根据控制台输出和 YOLO 训练产生的变量,计算各训练指标,并将这些指标显示在控制台区的训练图表中。

  • 后置过程:在控制台区的窗口的最后两行中找到Results saved to 的目录,在资源管理器打开,并找到其子目录weights,将best.pt拷贝到models目录下,并将文件名改名为数据集的名称,为将来预测做准备

    训练完成最终的界面见下面:

    目标检测训练界面函数、类及方法的功能

    • TrainingUI

      :继承自QWidget,用于创建目标检测图像训练的用户界面。

    方法
    1. __init__

      :初始化TrainingUI类的实例,设置窗口标题、大小和界面风格,调用ui_init方法初始化界面。

    2. ui_init

      :创建主垂直布局,分别调用create_control_areacreate_setting_areacreate_command_area方法创建控制台区、设置区和命令区,并将它们添加到主布局中。

    3. create_control_area

      :创建控制台区的组框,添加控制台和训练图表到水平布局中,并返回该组框。

    4. create_setting_area

      :创建设置区的组框,设置多个训练参数的输入控件,包括迭代次数、批量大小、图像大小等,分三个区域布局,并返回该组框。

    5. create_command_area

      :创建命令区的组框,添加训练按钮和关闭按钮到水平布局中,并返回该组框。

    6. select_model

      :弹出文件选择对话框,让用户选择模型文件(.pt.yaml),并将选择的文件路径显示在界面上。

    7. select_data

      :弹出文件选择对话框,让用户选择数据集配置文件(.yaml),并将选择的文件路径显示在界面上。

    8. start_training

      :启动一个新线程来调用train_model方法,避免训练过程中界面假死。

    9. train_model

      :获取设置区的所有输入值,检查模型和数据集路径是否选择,若选择则加载模型并开始训练,将训练过程信息输出到控制台

    目标检测训练界面代码层级关系

    TrainingUI
    ├── __init__
    │   └── ui_init
    │       ├── create_control_area
    │       ├── create_setting_area
    │       └── create_command_area
    ├── select_model
    ├── select_data
    ├── start_training
    │   └── train_model

    需要注意的是内存资源不足,在控制台会报:

    训练出错,返回码: 3221225477

    最后欢迎关注公众号:python与大数据分析

    图片

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐