task: detect  # (str) YOLO任务，即detect（检测），segment（分割），classify（分类），pose（姿态）
mode: train  # (str) YOLO模式，即train（训练），val（验证），predict（预测），export（导出），track（跟踪），benchmark（基准测试）

# 训练设置 -------------------------------------------------------------------------------------------------------
model:  # (str, optional) 模型文件路径，例如yolov8n.pt，yolov8n.yaml
data:  # (str, optional) 数据文件路径，例如coco128.yaml
epochs: 100  # (int) 训练的轮数
patience: 50  # (int) 早停机制，等待观察不到改善的轮数以提前停止训练
batch: 8  # (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, optional) 运行设备，例如cuda device=0或device=0,1,2,3或device=cpu
workers: 8  # (int) 数据加载的工作线程数（每个RANK如果DDP）
project:  # (str, optional) 项目名称
name:  # (str, optional) 实验名称，结果保存在'project/name'目录中
exist_ok: False  # (bool) 是否覆盖现有实验
pretrained: True  # (bool | str) 是否使用预训练模型（bool）或要加载权重的模型（str）
optimizer: auto  # (str) 要使用的优化器，choices=[SGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp, auto]
verbose: True  # (bool) 是否打印详细输出
seed: 0  # (int) 用于可重现性的随机种子
deterministic: True  # (bool) 是否启用确定性模式
single_cls: False  # (bool) 将多类数据训练为单类
rect: False  # (bool) 如果mode='train'则进行矩形训练，如果mode='val'则进行矩形验证
cos_lr: False  # (bool) 使用余弦学习率调度程序
close_mosaic: 10  # (int) 在最后几轮禁用马赛克增强（0表示禁用）
resume: False  # (bool) 从上次检查点恢复训练
amp: True  # (bool) 自动混合精度（AMP）训练，choices=[True, False]，True运行AMP检查
fraction: 1.0  # (float) 要训练的数据集分数（默认为1.0，训练集中的所有图像）
profile: False  # (bool) 在训练期间为记录器启用ONNX和TensorRT速度
freeze: None  # (int | list, optional) 冻结前n层，或在训练期间冻结层索引的列表

# 分割
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, optional) 用于检测的对象置信度阈值（默认为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, optional) 图像或视频的源目录
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], optional) 按类别过滤结果，例如classes=0，或classes=[0,2,3]
retina_masks: False  # (bool) 使用高分辨率分割掩码

# 可视化设置 ---------------------------------------------------------------------------------------------------
show: True  # (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, optional) 边界框的线宽。如果为None，则缩放到图像大小


# 导出设置 ------------------------------------------------------------------------------------------------------
format: torchscript  # (str) 导出格式，选项请参见https://docs.ultralytics.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, optional) 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) 关键点obj损失增益
label_smoothing: 0.0  # (float) 标签平滑（分数）
nbs: 64  # (int) 名义批次大小
hsv_h: 0.015  # (float) 图像HSV-Hue增强（分数）
hsv_s: 0.7  # (float) 图像HSV-Saturation增强（分数）
hsv_v: 0.4  # (float) 图像HSV-Value增强（分数）
degrees: 0.0  # (float) 图像旋转（+/- deg）
translate: 0.1  # (float) 图像平移（+/- 分数）
scale: 0.5  # (float) 图像缩放（+/- gain）
shear: 0.0  # (float) 图像剪切（+/- deg）
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) 分割复制-粘贴（概率）

# 自定义config.yaml ---------------------------------------------------------------------------------------------------
cfg:  # (str, optional) 用于覆盖defaults.yaml的配置

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