什么网站的注册是动态,wordpress视频全屏,龙岗网站建设流程,广州市 住房建设局网站YOLOv8目标检测(一)_检测流程梳理#xff1a;YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客
YOLOv8目标检测(二)_准备数据集#xff1a;YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客
YOLOv8目标检测(三)_训练模型#xff1a;YOLOv8目标检测(三)_训…YOLOv8目标检测(一)_检测流程梳理YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客
YOLOv8目标检测(二)_准备数据集YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客
YOLOv8目标检测(三)_训练模型YOLOv8目标检测(三)_训练模型_yolo data.yaml-CSDN博客
YOLOv8目标检测(三*)_最佳超参数训练YOLOv8目标检测(三*)_最佳超参数训练_yolo 为什么要选择yolov8m.pt进行训练-CSDN博客
YOLOv8目标检测(四)_图片推理YOLOv8目标检测(四)_图片推理-CSDN博客
YOLOv8目标检测(五)_结果文件(run/detrct/train)详解YOLOv8目标检测(五)_结果文件(run/detrct/train)详解_yolov8 yolov8m.pt可以训练什么-CSDN博客
YOLOv8目标检测(六)_封装API接口YOLOv8目标检测(六)_封装API接口-CSDN博客
YOLOv8目标检测(七)_AB压力测试YOLOv8目标检测(七)_AB压力测试-CSDN博客 官方文档参考超参数调整 -Ultralytics YOLO 文档
为什么要最佳超参数训练
简单来说
进行最佳超参数训练Hyperparameter OptimizationHPO是为了提高模型的性能确保其在目标任务上的表现尽可能优异。
具体原因如下
1.提升模型性能
1更高的准确性通过调优学习率、权重衰减、批量大小等超参数可以显著提高模型的准确性。
2更好的泛化能力合适的超参数能够帮助模型在未见过的数据上表现更好避免过拟合或欠拟合。
2.加快收敛速度
通过选择合适的学习率等超参数模型的训练过程可以更快地收敛从而节省训练时间和计算资源。
3.避免过拟合或欠拟合
超参数如正则化参数、数据增强策略、学习率衰减等会影响模型的复杂度和训练过程优化这些参数有助于找到合适的平衡点。
4.适配特定任务或数据集
每个任务或数据集都有其独特的特点默认的超参数可能不适合特定的应用场景。通过超参数搜索可以为具体的任务定制训练流程。
5.优化资源使用
超参数优化能够找到在性能与计算资源之间的最佳平衡点。例如通过调节批量大小、网络宽度或深度可以降低显存占用同时维持或提升模型性能。
注笔者首先对数据进行了训练集和验证集的切分用验证集数据寻找最佳超参数得到参数后再把全部数据进行训练。
一、修改脚本
1修改model路径
推荐使用yolov8m.pt或者yolov8n.pt等下载好的权重文件。
2修改model.tune参数
微调模型参数。
以下代码作用是加载 YOLOv8 的预训练模型并使用其 tune 方法对指定数据集进行微调。
import warnings
warnings.filterwarnings(ignore)
from ultralytics import YOLOif __name__ __main__:model YOLO(/usr/src/ultralytics/ultralytics/yolov8m.pt) # 需要修改#model.load(yolov8n.pt) # loading pretrain weightsmodel.tune(datar/usr/src/ultralytics/ultralytics/phone.yaml, # 需要修改# 如果任务是其它的找到ultralytics/cfg/default.yaml修改task可以改成detect, segment, classify, pose# cacheFalse,imgsz640,epochs50,# single_clsFalse, # 是否是单类别检测# batch4,# close_mosaic10,# workers0,device0,# optimizerSGD, # resume, # 续训设置last.pt的地址# ampFalse, # 如果出现训练损失为Nan可以关闭ampprojectruns/train,# valFalse, #注释false相当属于valTrueiterations100,nameexp,)model.tune参数详细解释
1data 数据集配置文件的路径是一个 .yaml 文件。 该文件包含训练集和验证集的路径以及类别标签信息。例如 # 数据集路径和类别数
train: /path/to/dataset/train/images # 训练集的图片路径
val: /path/to/dataset/val/images # 验证集的图片路径names: [class1,class2,class3]nc: 3 # 类别数与 names 的总数一致2imgsz
输入图像的尺寸默认值是 640。表示将图像缩放到 640x640 的大小后再进行训练或推理。
3epochs
训练的轮次。模型会在数据集上迭代指定的次数可以根据实验需求调整。
4device
指定训练使用的设备例如 0使用 GPU 0 进行训练。cpu使用 CPU。如果有多块 GPU可以指定多个例如 device0,1。
5project
保存训练结果的路径默认是 runs/train。所有实验的模型权重、日志、结果图片等会存储在这个目录下。
6iterations
每个 epoch 中完成的迭代次数决定了一轮训练中数据加载的批次总量。如果数据集较大可以增加迭代次数以确保每轮训练更充分。
7name
当前实验的名字用于区分不同实验。实验结果会保存在 project 指定路径下的 exp 文件夹中例如 runs/train/exp。
8cache
是否将数据加载到内存中以加速训练。如果注释掉默认值为 False。设置为 True 可以提升加载速度但会占用大量内存。
9single_cls
如果数据集中只有一个类别可以设置为 True。适合单类别检测任务例如仅检测某一特定物体。
10batch
每次训练使用的样本数量批次大小。批次大小越大对显存要求越高通常调整到显存能承受的最大值。
11close_mosaic
控制 Mosaic 数据增强的关闭周期。Mosaic 是一种将多个图像拼接为一张训练样本的方法默认在训练后期关闭以稳定模型。
12workers
数据加载的线程数。设置为 0 表示不使用多线程加载数据。如果设置更高的值可以加快数据加载但对 CPU 性能有要求。
13optimizer
优化器的选择默认是 Adam。可选值包括 SGD、Adam 等。
14resume
用于续训的设置。如果有中断的训练可以通过指定 last.pt 的路径继续训练。
15amp
是否启用混合精度训练Automatic Mixed Precision。默认为 True可以提升训练速度并减少显存占用。如果训练过程中出现 NaN 错误可以关闭它。
16val
是否在训练过程中进行验证。如果注释掉 valFalse相当于默认开启验证valTrue。
二、运行脚本
python train_tune.py三、查看最佳结果
1查看结果文件
训练完成后保存在hyptune_result_tune中文件夹内容如下 1weights中存放着权重文件。
2best_hyperparameters.yaml存放着训练的最佳参数。
3tune_fitness.png展示了超参数优化过程中目标函数 fitness 值的变化趋势。 这是一幅显示适应度通常是 AP50 这样的性能指标与迭代次数的对比图。它可以帮助你直观地了解遗传算法在一段时间内的表现。
什么是fitness
fitness是衡量模型性能的综合指标一般是是基于多个评价指标如精确率、召回率、mAP 等的加权和。
4tune_results.csv
部分数据如下
fitnesslr0lrfmomentumweight_decaywarmup_epochswarmup_momentumboxclsdflhsv_hhsv_shsv_vdegreestranslatescaleshearperspectiveflipudfliplrmosaicmixupcopy_paste0.75610.010740.010920.878090.000550.66453.819060.526782.531350.011140.3510.2201400.074740.592020000.261751000.753520.010740.013110.881080.000484.64690.602313.819060.438612.570520.011340.391810.2201400.074740.662590000.277370.82468000.763640.009150.01020.886940.000443.799980.545193.573810.578312.53390.011140.331320.2118900.074750.543870000.264161000.750780.009150.01020.886970.000443.802560.545193.572420.578542.535040.011140.331320.2119800.074760.544050000.264161000.762930.009280.008110.865240.000423.799980.548543.677810.578312.48560.011660.292070.2313900.069510.590620000.239510.9760200
CSV文件包含调整过程中每次迭代的详细结果。文件中的每一行代表一次迭代包括适配度得分、精确度、召回率等指标以及使用的超参数。
5tune_scatter_plots.png
这个图文件展示了超参数与目标性能指标的关系。 请注意初始化为 0 的超参数将不会被调整如degrees、shear、persprctive、flipud、mixup、copy_paste。
2查看最佳参数
查看best_hyperparameters.yaml文件如下图 四、使用最佳超参数训练
复制修改训练的yaml文件:改为
#修改前训练命令
yolo taskdetect modetrain modelyolov8m.yaml data./data.yaml pretrained/data/yolov8m.pt imgsz640 saveTrue epochs400 patience50 resumeTrue device0
#修改后训练命令
yolo taskdetect modetrain modelyolov8m.yaml data./data.yaml pretrained/data/yolov8m.pt imgsz640 saveTrue epochs400 patience50 resumeTrue device0 lr00.00976 lrf0.01153 momentum0.93626 weight_decay0.00018 warmup_epochs4.85722 warmup_momentum0.95 box4.18836 cls0.66206 dfl2.35773 hsv_h0.00929 hsv_s0.25334 hsv_v0.15979 degrees0.0 translate0.09706 scale0.69983 shear0.0 perspective0.0 flipud0.0 fliplr0.26921 mosaic0.97292 mixup0.0 copy_paste0.0注意训练命令添加最佳超参数后data.yaml文件别忘了修改成完整的数据集笔者是先用小部分数据找最佳超参数再训练完整数据集。
恭喜你学会了如何找到最佳超参数并使用其进行训练