YOLO v8 参数设置,详解cfg/default.yaml

news/2024/7/10 23:32:39 标签: YOLO, YOLO v8, Detection, YAML

default.yaml 有很多训练、测试、预测、可视化等关键设置,一定不要忽略哦!

1.概述

任务和模式设置:定义YOLO的任务(如检测、分割、分类、姿态识别)和模式(如训练、验证、预测、导出、跟踪、基准测试)。

训练设置:包括模型文件路径、数据文件路径、训练轮次、训练时间、早停耐心(无改进的训练轮数)、批次大小、图像大小、是否保存训练检查点和预测结果、缓存设置、运行设备、工作线程数、项目和实验名称、是否允许覆盖现有实验、是否使用预训练模型、优化器类型、是否输出详细信息、随机种子、是否启用确定模式、是否作为单类别训练、是否应用矩形训练或验证、是否使用余弦学习率调度器等。

验证/测试设置:包括是否在训练过程中进行验证/测试、用于验证的数据集分割、是否保存结果到JSON文件、置信度阈值、交并比(IoU)阈值、每张图片的最大检测数量等。

预测设置:定义了预测源目录、视频帧速率步长、流媒体帧缓存设置、是否可视化模型特征、是否应用图像增强、是否使用类不可知NMS等。

可视化设置:设置是否展示预测图像和视频、是否保存预测的视频帧、是否保存结果为.txt文件、是否保存带有置信度分数的结果、是否保存结果裁剪图像、是否展示预测标签、置信度和边框等。

导出设置:定义导出格式、是否使用Keras、是否优化TorchScript、INT8量化、动态轴、简化模型等设置。

超参数:包括初始学习率、最终学习率、动量、权重衰减、预热轮数、盒子损失增益、分类损失增益、姿态损失增益、关键点对象损失增益、标签平滑、HSV色彩空间调整、图像旋转、平移、缩放、剪切、透视、上下翻转概率、左右翻转概率、马赛克效果、混合效果、副本粘贴概率等。

自定义配置和跟踪器设置:允许用户指定自定义配置文件和跟踪器类型。

2.逐行翻译:

# YOLO 🚀, AGPL-3.0 许可证
# 用于中等增强COCO训练的默认训练设置和超参数

task: detect  # (str) YOLO任务,例如检测、分割、分类、姿态
mode: train  # (str) YOLO模式,例如训练、验证、预测、导出、跟踪、基准测试

# 训练设置 -------------------------------------------------------------------------------------------------------
model:  # (str, 可选) 模型文件路径,例如 yolov8n.pt, yolov8n.yaml
data:  # (str, 可选) 数据文件路径,例如 coco128.yaml
epochs: 100  # (int) 训练轮次数
time:  # (float, 可选) 训练时间,如果提供,将覆盖epochs
patience: 50  # (int) 早停等待轮次,对于没有可观察改进的训练早期停止
batch: 16  # (int) 每批次的图像数量(-1表示自动批次)
imgsz: 640  # (int | list) 训练和验证模式的输入图像大小为int,或预测和导出模式的list[w,h]
save: True  # (bool) 保存训练检查点和预测结果
save_period: -1 # (int) 每x轮次保存一次检查点(如果<1则禁用)
cache: False  # (bool) True/ram, disk 或 False。使用缓存加载数据
device:  # (int | str | list, 可选) 运行设备,例如 cuda device=0 或 device=0,1,2,3 或 device=cpu
workers: 8  # (int) 数据加载的工作线程数(如果DDP,则为每个RANK)
project:  # (str, 可选) 项目名称
name:  # (str, 可选) 实验名称,结果保存在'project/name'目录
exist_ok: False  # (bool) 是否覆盖现有实验
pretrained: True  # (bool | str) 是否使用预训练模型(bool)或从中加载权重的模型(str)
optimizer: auto  # (str) 使用的优化器,可选项=[SGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp, auto]
verbose: True  # (bool) 是否打印详细输出
seed: 0  # (int) 可重复性的随机种子
deterministic: True  # (bool) 是否启用确定模式
single_cls: False  # (bool) 将多类数据作为单类训练
rect: False  # (bool) 如果模式为'train'则矩形训练,如果模式为'val'则矩形验证
cos_lr: False  # (bool) 使用余弦学习率调度器
close_mosaic: 10  # (int) 在最后几轮禁用mosaic增强(0表示禁用)
resume: False  # (bool) 从最后一个检查点恢复训练
amp: True  # (bool) 自动混合精度(AMP)训练,可选项=[True, False],True表示运行AMP检查
fraction: 1.0  # (float) 训练数据集的分数(默认为1.0,训练集中的所有图像)
profile: False  # (bool) 在训练期间为记录器分析ONNX和TensorRT速度
freeze: None  # (int | list, 可选) 在训练期间冻结前n层,或冻结层索引列表
multi_scale: False   # (bool) 训练期间是否使用多尺度
# 分割
overlap_mask: True  # (bool) 训练期间掩码应重叠(仅限分割训练)
mask_ratio: 4  # (int) 掩码降采样比率(仅限分割训练)
# 分类
dropout: 0.0  # (float) 使用dropout正则化(仅限分类训练)

# 验证/测试设置 ----------------------------------------------------------------------------------------------------
val: True  # (bool) 在训练期间进行验证/测试
split: val  # (str) 用于验证的数据集分割,例如 'val', 'test' 或 'train'
save_json: False  # (bool) 将结果保存为JSON文件
save_hybrid: False  # (bool) 保存标签的混合版本(标签 + 额外预测)
conf:  # (float, 可选) 检测的对象置信度阈值(预测默认0.25,验证默认0.001)
iou: 0.7  # (float) NMS的交并比(IoU)阈值
max_det: 300  # (int) 每张图片的最大检测数量
half: False  # (bool) 使用半精度(FP16)
dnn: False  # (bool) 使用OpenCV DNN进行ONNX推理
plots: True  # (bool) 在训练/验证期间保存图表和图像

# 预测设置 -----------------------------------------------------------------------------------------------------
source:  # (str, 可选) 图像或视频的源目录
vid_stride: 1  # (int) 视频帧率步长
stream_buffer: False  # (bool) 缓冲所有流媒体帧(True)或返回最近的帧(False)
visualize: False  # (bool) 可视化模型特征
augment: False  # (bool) 对预测源应用图像增强
agnostic_nms: False  # (bool) 类不可知NMS
classes:  # (int | list[int], 可选) 通过类过滤结果,例如 classes=0, 或 classes=[0,2,3]
retina_masks: False  # (bool) 使用高分辨率分割掩码
embed:  # (list[int], 可选) 从给定层返回特征向量/嵌入

# 可视化设置 ---------------------------------------------------------------------------------------------------
show: False  # (bool) 如果环境允许,显示预测的图像和视频
save_frames: False  # (bool) 保存预测的视频帧
save_txt: False  # (bool) 将结果保存为.txt文件
save_conf: False  # (bool) 保存带有置信度分数的结果
save_crop: False  # (bool) 保存带有结果的裁剪图像
show_labels: True  # (bool) 显示预测标签,例如 'person'
show_conf: True  # (bool) 显示预测置信度,例如 '0.99'
show_boxes: True  # (bool) 显示预测框
line_width:   # (int, 可选) 边框的线宽。如果为None,则根据图像大小缩放。

# 导出设置 ------------------------------------------------------------------------------------------------------
format: torchscript  # (str) 导出的格式,选项参考 https://docs.ultwithzeyu.com/modes/export/#export-formats
keras: False  # (bool) 使用Keras
optimize: False  # (bool) TorchScript:为移动端优化
int8: False  # (bool) CoreML/TF INT8量化
dynamic: False  # (bool) ONNX/TF/TensorRT:动态轴
simplify: False  # (bool) ONNX:简化模型
opset:  # (int, 可选) ONNX:opset版本
workspace: 4  # (int) TensorRT:工作空间大小(GB)
nms: False  # (bool) CoreML:添加NMS

# 超参数 ------------------------------------------------------------------------------------------------------
lr0: 0.01  # (float) 初始学习率(例如SGD=1E-2, Adam=1E-3)
lrf: 0.01  # (float) 最终学习率(lr0 * lrf)
momentum: 0.937  # (float) SGD动量/Adam beta1
weight_decay: 0.0005  # (float) 优化器权重衰减5e-4
warmup_epochs: 3.0  # (float) 预热轮数(小数可)
warmup_momentum: 0.8  # (float) 预热初始动量
warmup_bias_lr: 0.1  # (float) 预热初始偏差学习率
box: 7.5  # (float) 盒子损失增益
cls: 0.5  # (float) 分类损失增益(与像素比例)
dfl: 1.5  # (float) dfl损失增益
pose: 12.0  # (float) 姿态损失增益
kobj: 1.0  # (float) 关键点对象损失增益
label_smoothing: 0.0  # (float) 标签平滑(比例)
nbs: 64  # (int) 名义批次大小
hsv_h: 0.015  # (float) 图像HSV-色调增强(比例)
hsv_s: 0.7  # (float) 图像HSV-饱和度增强(比例)
hsv_v: 0.4  # (float) 图像HSV-值增强(比例)
degrees: 0.0  # (float) 图像旋转(+/-度)
translate: 0.1  # (float) 图像平移(+/-比例)
scale: 0.5  # (float) 图像缩放(+/-增益)
shear: 0.0  # (float) 图像剪切(+/-度)
perspective: 0.0  # (float) 图像透视(+/-比例),范围0-0.001
flipud: 0.0  # (float) 图像上下翻转(概率)
fliplr: 0.5  # (float) 图像左右翻转(概率)
mosaic: 1.0  # (float) 图像马赛克(概率)
mixup: 0.0  # (float) 图像混合(概率)
copy_paste: 0.0  # (float) 分割复制粘贴(概率)
auto_augment: randaugment  # (str) 分类的自动增强策略(randaugment, autoaugment, augmix)
erasing: 0.4  # (float) 分类训练期间随机擦除的概率(0-1)
crop_fraction: 1.0  # (float) 分类评估/推理的图像裁剪比例(0-1)

# 自定义config.yaml ---------------------------------------------------------------------------------------------------
cfg:  # (str, 可选) 用于覆盖defaults.yaml

# 跟踪器设置 ------------------------------------------------------------------------------------------------------
tracker: botsort.yaml  # (str) 跟踪器类型,选项=[botsort.yaml, bytetrack.yaml]


http://www.niftyadmin.cn/n/5375369.html

相关文章

vue3 封装一个通用echarts组件

实现这个组件需要引入echarts和vue-echarts插件&#xff0c;使用vue-echarts是因为它帮我们封装了一些很常用的功能&#xff0c;比如监听页面resize后重新渲染功能&#xff0c;本次组件只使用到了autoresize配置&#xff0c;其它可以根据官方文档按需选配 https://github.com/…

我们需要延迟满足吗?

延迟满足&#xff0c;可能是当代成功学和鸡汤里面&#xff0c;最常见的一个概念了。 很多人都会告诉你&#xff1a;要学会延迟满足&#xff0c;培养延迟满足能力&#xff0c;这样你才能成为一个脱离低级趣味的人&#xff0c;取得更高的成就。 他们同时还会把延迟满足跟「即时满…

JavaScript 选择范围:SelectionRange

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 文本选择 是 web 开发中的一个常见需求&#xff0c;例如高亮选定文本…

【51单片机】矩阵键盘(江科大)

6.1矩阵键盘 矩阵键盘&#xff1a; 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态 1.数码管扫描(输出扫描) 原理:显示第1位→显示第2位→显示第3位→ …… ,然后快速循环这个过程,最终实现所…

gorm day4

gorm day4 高级查询 高级查询 智能选择字段 GORM允许通过Select方法选择特定的字段&#xff0c;如果你在应用程序中经常使用此功能&#xff0c;你也可以定义一个较小的结构体&#xff0c;以实现调用API时自动选择特定的字段&#xff0c;例如&#xff1a; type User struct …

Python学习之路-初识爬虫:requests

Python学习之路-初识爬虫:requests requests的作用 作用&#xff1a;发送网络请求&#xff0c;返回响应数据 中文文档 &#xff1a; http://docs.python-requests.org/zh_CN/latest/index.html 为什么学requests而不是urllib requests的底层实现就是urllibrequests在pytho…

火车可视化调车系统

列车在调车作业时&#xff0c;当机车头在尾部推动车厢时&#xff0c;司机室一人操控机车&#xff0c;车厢前端配备两名挂梯随车运行调车员&#xff0c;调车员人为分析行车方向是否有障碍、轨道行人等紧急情况&#xff0c;通过对讲机通知司机控制停车。由于司机无法直观观察列车…

AI论文速读 | 2024【综述】图神经网络在智能交通系统中的应用

论文标题&#xff1a;A Survey on Graph Neural Networks in Intelligent Transportation Systems 链接&#xff1a;https://arxiv.org/abs/2401.00713 作者&#xff1a;Hourun Li, Yusheng Zhao, Zhengyang Mao, Yifang Qin, Zhiping Xiao, Jiaqi Feng, Yiyang Gu, Wei Ju, …