一、训练脚本from ultralytics import YOLO def main(): model YOLO(yolo26n.pt) model.train( dataE:/vision_code/yolo_wt/data/data.yaml, imgsz640, epochs100, batch15, device0, workers0, save_period10 ) if __name__ __main__: main()二、训练参数含义参数示例含义建议modelyolo26n.pt训练基座模型310B 部署优先n或sdatadata.yaml数据集配置文件指向 Roboflow 导出的data.yamlepochs100训练轮数先用50-100batch4每批训练图片数量4GB 显存建议2-4imgsz640输入图片尺寸通用用640device0训练设备GPU 用0CPU 用cpuworkers0数据加载线程数Windows 建议0optimizerauto优化器新手用autolr00.001初始学习率微调可用0.001也可默认patience30早停等待轮数20-50saveTrue是否保存训练结果默认保存save_period10每隔多少轮保存一次权重想保留中间模型用10projectruns/detect训练结果保存目录可自定义namehelmet_yolo26n本次训练名称方便区分实验exist_okTrue是否允许覆盖同名目录不想覆盖就用FalsepretrainedTrue是否加载预训练权重微调建议TrueresumeFalse是否从中断处继续训练中断后可用TrueampTrue自动混合精度训练GPU 训练建议开启cacheFalse是否缓存图片到内存/磁盘内存够可用diskseed0随机种子复现实验用verboseTrue是否输出详细日志默认即可三、输出参数含义字段含义怎么看GPU_mem当前训练占用的 GPU 显存越低越省显存box_loss框的位置损失越低说明预测框越接近真实框越低越好cls_loss类别损失越低说明分类越准越低越好dfl_loss边框分布损失辅助定位越低越好越低越好Instances当前 batch 中目标框数量表示这一批图片里有几个标注目标Size输入图片尺寸你设置的是64071/137当前 epoch 内 batch 进度共 137 个 batch当前第 71 个4.1it/s每秒处理多少个 batch越高训练越快20.1s16.0s已用时间/预计剩余时间进度条时间信息四、TensorBoard 查看 YOLO 训练过程1. 安装 TensorBoardpip install -U tensorboard确认能启动tensorboard --version2. 开启 Ultralytics 的 TensorBoard 日志查看当前设置yolo settings如果看到tensorboard: False执行yolo settings tensorboardTrue再次确认yolo settings确保是tensorboard: True3. 开始训练命令行训练示例yolo detect train modelyolo26n.pt dataE:/vision_code/yolo_wt/data/data.yaml imgsz640 epochs50 batch4 device0 workers0 projectE:/vision_code/yolo_wt/train_wt/runs namehelmet_yolo26nPython 脚本训练示例from ultralytics import YOLO def main(): model YOLO(yolo26n.pt) model.train( dataE:/vision_code/yolo_wt/data/data.yaml, imgsz640, epochs50, batch4, device0, workers0, projectE:/vision_code/yolo_wt/train_wt/runs, namehelmet_yolo26n, plotsTrue, ) if __name__ __main__: main()4. 确认是否生成 TensorBoard 日志训练开始后或训练结束后执行Get-ChildItem -Recurse E:\vision_code\yolo_wt\train_wt\runs -Filter events.out.tfevents*如果能看到类似events.out.tfevents.171xxxx说明 TensorBoard 日志生成成功。5. 启动 TensorBoard推荐指向总的runs目录tensorboard --logdir E:\vision_code\yolo_wt\train_wt\runs如果只想看某一次训练tensorboard --logdir E:\vision_code\yolo_wt\train_wt\runs\helmet_yolo26n浏览器打开http://localhost:60066. 在 TensorBoard 里看什么主要看Scalars页面曲线含义趋势train/box_loss训练集框回归损失越低越好train/cls_loss训练集分类损失越低越好train/dfl_loss框定位细节损失越低越好val/box_loss验证集框损失越低越好val/cls_loss验证集分类损失越低越好metrics/precision准确率误检少不少越高越好metrics/recall召回率漏检少不少越高越好metrics/mAP50宽松检测精度越高越好metrics/mAP50-95严格综合检测精度越高越好五、相关结果图片说明1.不同置信度阈值下模型的综合检测效果怎么样。F1 分数它综合了Precision预测出来的框有多少是真的误检少不少Recall真实目标有没有都找出来漏检少不all classes 0.80 at 0.393当置信度阈值大约设为 0.393 时F1 最高大约是 0.802.Precision-Confidence Curve意思是不同置信度阈值下模型预测结果的“准确率”变化。横轴Confidence置信度阈值。阈值越高模型越严格只保留更有把握的框。纵轴Precision精确率可以理解为模型预测出来的 helmet 里面有多少是真的 helmetall classes 1.00 at 0.987当置信度阈值设到 0.987 左右时Precision 可以达到 1.003.Precision-Recall Curve简称PR 曲线用来看模型在“少误检”和“少漏检”之间的整体表现。横轴Recall召回率表示真实的安全帽里模型找出来了多少。Recall 高 漏检少纵轴Precision精确率表示模型预测出来的安全帽里有多少是真的安全帽。Precision 高 误检少all classes 0.838 mAP0.5意思是这个模型在 IoU0.5 标准下mAP 是 0.838IoU 是预测框和真实标注框的重叠比例mAP0.838 是整体检测得分判断模型整体好不好看的是整条 PR 曲线和 mAP4.Recall-Confidence Curve意思是不同置信度阈值下模型的召回率怎么变化。横轴Confidence置信度阈值。阈值越高模型越严格只保留更有把握的检测框。纵轴Recall召回率表示真实存在的安全帽里模型找出来了多少。Recall 高 漏检少Recall 低 漏检多all classes 0.95 at 0.000意思是当 conf 接近 0 时Recall 最高大约 0.95也就是在非常宽松的情况下模型最多能找出约 95% 的真实安全帽。5.混淆矩阵 Confusion Matrix用来看模型“预测对了多少、漏检多少、误检多少”。横轴 True真实类别纵轴 Predicted模型预测类别正确检测191 个漏检28 个误检72 个6.归一化混淆矩阵 Confusion Matrix Normalized。上图同一个意思只是把数量换成了比例。六、分布式训练支持单机多卡 多机单卡