训练
模型工作区第三个 Tab。基于当前项目的预训练权重与数据集做微调。点 开始训练 才启动 Python + Ultralytics YOLO;打开页面只读资产,不探测 Python。
截图占位。
从 模型工作区 进来。内层两个 Tab:当前训练 / 训练结果。
能训什么
TrainingRunner 只走 Ultralytics 单轨(train.py + YOLO)。契约五类:
| 任务 | 说明 |
|---|---|
检测 detection | 轴对齐框 |
分类 classification | 图像分类 |
分割 segmentation | YOLO 语义/实例分割权重(YOLO 格式,不是 SegFormer) |
姿态 pose | 关键点;数据集 kpt_shape 须与模型关键点数一致 |
旋转框 obb | 旋转检测;数据集 names 须与模型标签一致 |
下列 不能 进 train.py,开始按钮会拒:
- OCR 识别:
YOLO训练不支持OCR识别任务 ocr-text-detection:不会按 OCR 或检测训练instance-segmentation:不会按语义分割训练- DINO / RT-DETR / SegFormer / SAM2 / torchvision
.pth/ Paddle OCR - 加密模型(
.darmodel):「加密模型仅可用于推理,不能训练」
没有强化学习。OCR 蒸馏走蒸馏页的 Paddle 闸门,不走本页。
基模型必须是本地 .pt 预训练权重。没有权重时出现「导入基模型」横幅。加密模型下拉带「加密·不可训练」徽标;可先在 推理「导出为数据集」,再对数据二次训练。
当前训练
第一行:标题、任务类型、预设、取消、开始训练。第二行:当前会话 ID(未启动显示「(未启动)」)+ 预设说明。
预设
选预设自动填参数。检测族专用预设只在检测 / 分割 / 姿态 / OBB 下出现。
| 预设 | 做什么 |
|---|---|
| 新训练 (从预训练权重起步, 通用) | 100 轮,AdamW + Cosine,通用起步 |
| 新训练 (快速验证, 50 轮) | 50 轮,SGD + Constant,看能不能收敛 |
| 新训练 (高精度, 300 轮) | 300 轮,更强增强,追求 mAP |
| 单类别强化 (1 类, 高召回) | 检测族;提高召回、降漏检 |
| 少类别 (2-5 类, 均衡) | 检测族;提高分类损失,减少混淆 |
| 多类别 (10+ 类, 类别均衡) | 检测族;加长轮次 |
| 类别不均衡 (长尾分布) | 检测族;强 mosaic,增加尾类曝光 |
| 新增类别 (增量学习, 保留旧类) | 检测族;低学习率 |
| 新增类别 (冻结骨干, 防遗忘) | 检测族;冻前 10 层 |
| 小检测 (高 mosaic + 大 DFL) | 检测族;小目标 / 缺陷 |
| 低显存 (8GB GPU, 冻结骨干) | batch=8,冻骨干 |
训练参数
改完即写入项目 .darrastudio/training_params.json。越界失焦后红字原因,不弹窗。
| 参数 | 范围 / 选项 | 含义 |
|---|---|---|
| 预训练模型 | 项目内模型下拉 | 微调起点,必须有本地 .pt。加密项禁用 |
| 数据集 | 按任务过滤 | 须有图像 / 标注。任务类型须与模型一致 |
| 训练轮次 | 1–10000,默认 100 | Ultralytics epochs |
| 批大小 | 1–1024,默认 16 | 一轮里几张图;显存不够就减小 |
| 学习率 | (0, 1],默认 0.01 | 初始 lr0 |
| 输入尺寸 | 32–4096,步进 32,默认 640 | imgsz。分类常用 224,检测常用 640 |
| 优化器 | AdamW / SGD / Adam / Nadam | 传给 Ultralytics。默认 AdamW |
| 学习率调度 | Cosine / Linear / Constant / ReduceOnPlateau | 当前脚本只把 Cosine 映射为 cos_lr=True;其余三项走默认非余弦,不要当成四套已独立实现的调度器 |
| 数据增强 | 开 / 关 | 开 = 启用 flip / hsv / mosaic / mixup 等;关 = 对应强度清零。各组强度由预设写入,页面不逐项暴露 |
| 早停耐心值 | 0–500,默认 0 | 验证指标连续若干轮不升就停。0 = 关闭早停 |
| 权重衰减 | ≥ 0,默认 0.0005 | L2 |
| 预热轮次 | 0–100,默认 3 | 学习率从低爬到设定值的轮数 |
| 启用验证 | 勾选 / 不勾 | 勾选 = 训练时按 data.yaml 已有划分 跑验证(内部只传 val=True)。不是 把训练集再切 20%。不勾 = 关闭验证 |
| 训练设备 | auto / cpu / cuda / cuda:0 / cuda:1 / 0 / 1 / 2 / 3 | auto 有 CUDA 用 GPU,否则 CPU |
产物目录:项目 outputs/training/。
训练前检查清单
右侧固定宽。符号:✓ 通过 / ✗ 阻断 / ⚠ 警告 / ○ 未选。
| 项 | 通过条件 |
|---|---|
| 基模型 | 本地 .pt 存在。加密源写「加密模型仅可用于推理,不能训练;可先用其推理导出数据,再对数据二次训练」 |
| 数据集 | 路径有效 |
| 数据集格式 | 框类要有 images/ + labels/(或 train/ val/ 下同名) |
| 数据集健康 | 图片 / 标注计数 > 0 |
| Python 环境 | 点开始后才探测;能启动且能 import torch / ultralytics / yaml |
| GPU | 选了 cuda 时设备是否可用;CPU 训练不挡 |
| 磁盘空间 | 输出盘可写 |
| 兼容性 | 模型任务与数据集任务一致;pose 关键点数、obb 类别名一致 |
清单全绿但没点开始 ≠ 已经训过。空载默认 100 轮 / batch 16 不是训练结果。
正在训练 / 日志
有活跃任务时出现表:模型、状态、Epoch、Loss、指标。底部只读日志(Consolas)+ 聚合进度条。取消只停当前会话。
环境未就绪时状态为「训练环境或项目资产未就绪」,不进 TrainingRunner,不编造 loss / mAP / best.pt。
训练结果
左侧运行列表:运行名、状态、开始时间。空则「暂无训练历史」。右上刷新。
选中一次运行后,右侧:
| 子 Tab | 内容 |
|---|---|
| 概览 | 状态、任务类型、主指标、Loss;分类另给 Top-1 / Top-5;检测族另给 Precision / Recall / mAP50 / mAP50-95。任务指标明细表。运行详情(源模型、数据集、时间、运行目录「打开」) |
| 日志 | 该次完整日志 |
| 结果图片 | 验证可视化缩略图 |
| 产物 | best.pt / last.pt 等:角色、路径、大小、SHA-256、完整性、打开 |
obb / ocr / instance-segmentation / ocr-text-detection 没有训练后自动评估器;评估页会如实拒绝,不伪造指标。
开始门(任一失败即拒)
- 加密源(所选模型 / 预训练覆盖 / 项目内加密 sibling)
- 已打开有效文件夹项目
- 已选模型且本地
.pt有效 - 已选数据集且有图像 / 标注
- 参数合法
- 任务属于契约五类
- 点开始后 Python + ultralytics 探测通过
诚实边界
- 训练器 = Ultralytics YOLO 单轨。不要把模型库里的 DINO / RT-DETR / SegFormer / SAM2 当成已能训。
- 无强化学习。
- OCR 不走本页;蒸馏页的 Paddle 闸门是另一条路。
- 加密模型只推理,不训练。二次训练用推理导出的数据集 + 明文
.pt。 - 学习率调度界面有四项,脚本目前只区分「Cosine / 非 Cosine」。
- 「启用验证」不是切分比例,划分以
data.yaml为准。 - 空载 UI 绿、清单 ○、默认 100/16,都不是「已经真训过」。