yolo最终笔记
1.train.py
from ultralytics import YOLOif __name__ == '__main__':# 加载模型model = YOLO(r'D:/app/BGA/yolo11/ultralytics-main/ultralytics/cfg/models/11/yolo11n.yaml').load("D:/app/BGA/yolo11/ultralytics-main/my_program/yolo11n.pt") # 使用预训练权重训练# 训练参数 ----------------------------------------------------------------------------------------------model.train(data=r'D:/app/BGA/yolo11/ultralytics-main/my_program/data.yaml',epochs=200, # (int) 训练的周期数patience=50, # (int) 等待无明显改善以进行早期停止的周期数batch=16, # (int) 每批次的图像数量(-1 为自动批处理)iou=0.7, # IoU 阈值conf=None, # 置信度阈值 默认值(通常为 0.001)imgsz=320, # (int) 输入图像的大小,整数或w,hmulti_scale=True, # 启用多尺度训练device=0, # device=[0,1], # (int | str | list, optional) 运行的设备,例如 cuda device=0 或 device=0,1,2,3 或 device=cpuworkers=44, # (int) 数据加载的工作线程数(每个DDP进程)optimizer='SGD', # (str) 要使用的优化器,选择=[SGD,Adam,Adamax,AdamW,NAdam,RAdam,RMSProp,auto]verbose=True, # (bool) 是否打印详细输出rect=True, # (bool) 如果mode='train',则进行矩形训练,如果mode='val',则进行矩形验证cos_lr=True, # (bool) 使用余弦学习率调度器close_mosaic=10, # (int) 在最后几个周期禁用马赛克增强amp=True, # (bool) 自动混合精度(AMP)训练,选择=[True, False],True运行AMP检查# 超参数 ----------------------------------------------------------------------------------------------lr0=0.01, # (float) 初始学习率(例如,SGD=1E-2,Adam=1E-3)lrf=0.01, # (float) 最终学习率(lr0 * lrf)hsv_h=0.015, # (float) 图像HSV-Hue增强(分数) # 色调扰动hsv_s=0.7, # (float) 图像HSV-Saturation增强(分数) # 饱和度扰动hsv_v=0.4, # (float) 图像HSV-Value增强(分数) # 明度扰动(BGA反光明显,可适当降低)degrees=90.0, # (float) 图像旋转(+/- deg) # 允许±90°旋转translate=0.1, # (float) 图像平移(+/- 分数)scale=0.5, # (float) 图像缩放(+/- 增益)shear=0.0, # (float) 图像剪切(+/- deg)flipud=0.5, # (float) 图像上下翻转(概率)fliplr=0.5, # (float) 图像左右翻转(概率))
agnostic_nms=False, amp=True, augment=False, auto_augment=randaugment,
batch=16, bgr=0.0, box=7.5,
cache=False, cfg=None, classes=None, close_mosaic=10, cls=0.5, conf=None, copy_paste=0.0, copy_paste_mode=flip, cos_lr=True, cutmix=0.0,
data=D:/app/BGA/yolo11/ultralytics-main/my_program/data.yaml, degrees=90.0, deterministic=True, device=0, dfl=1.5, dnn=False, dropout=0.0, dynamic=False,
embed=None, epochs=200, erasing=0.4, exist_ok=False,
fliplr=0.5, flipud=0.5, format=torchscript, fraction=1.0, freeze=None,
half=False, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4,
imgsz=320, int8=False, iou=0.7,
keras=False, kobj=1.0,
line_width=None, lr0=0.01, lrf=0.01,
mask_ratio=4, max_det=300, mixup=0.0, mode=train, model=D:/app/BGA/yolo11/ultralytics-main/ultralytics/cfg/models/11/yolo11n.yaml, momentum=0.937, mosaic=1.0, multi_scale=True,
name=train6, nbs=64, nms=False,
opset=None, optimize=False, optimizer=SGD, overlap_mask=True,
patience=50, perspective=0.0, plots=True, pose=12.0, pretrained=D:/app/BGA/yolo11/ultralytics-main/my_program/yolo11n.pt, profile=False, project=None,
rect=True, resume=False, retina_masks=False,
save=True, save_conf=False, save_crop=False, save_dir=runs\detect\train6, save_frames=False, save_json=False, save_period=-1, save_txt=False, scale=0.5, seed=0, shear=0.0, show=False, show_boxes=True, show_conf=True, show_labels=True, simplify=True, single_cls=False, source=None, split=val, stream_buffer=False,
task)=detect, time=None, tracker=botsort.yaml, translate=0.1,
val)=True, verbose=True, vid_stride=1, visualize=False,
warmup_bias_lr)=0.1, warmup_epochs=3.0, warmup_momentum=0.8, weight_decay=0.0005, workers=44, workspace=None
2.predict.py
from ultralytics import YOLOif __name__ == '__main__':# 加载模型model = YOLO(r'D:/app/BGA/yolo11/ultralytics-main/my_program/runs/detect/train5/weights/best.pt') # YOLOv8n模型model.predict(source=r'D:/app/BGA/yolo11/ultralytics-main/VOCdevkit/train/images/', #修改为自己的图片路径及文件名conf=0.1, # 置信度阈值iou=0.1, # IoU 阈值imgsz=320, # 图像大小device=0, # 使用设备,None 表示自动选择,比如'cpu','0'augment=True, # 启用推理时增强save=True, # 保存推理结果save_txt=True, # 保存检测结果到文本文件save_conf=True, # 保存置信度到文本文件show_labels=True, # 显示检测的标签show_conf=True, # 显示检测置信度show_boxes=True, # 显示检测框)
训练过程参数
1 GPU 显存占用(GPU_mem
)
GPU_mem: 4.2G
表示当前显存占用 4.2GB
2. 损失函数值
(1) 边界框回归损失(box_loss
)——越小越好
-
含义:预测框与真实框之间的定位误差(基于 CIoU/DIoU 等损失函数计算)。
-
作用:反映模型对目标位置的预测精度,值越低说明定位越准。
-
典型范围:初始值较高(如
2.5
),随着训练逐渐下降至0.5
以下。
(2) 分类损失(cls_loss
)——越小越好
-
含义:预测类别与真实类别的交叉熵误差。
-
作用:衡量模型分类能力,值越低说明分类越准。
-
典型范围:从初始
1.0
左右下降至0.1-0.3
。
(3) 分布焦点损失(dfl_loss
)
-
含义:YOLOv11 引入的分布对齐损失(Distribution Focal Loss),用于优化锚框的离散分布。
-
作用:提升小目标检测的稳定性,尤其在密集场景中。
-
典型范围:从
1.5
逐渐下降至0.3-0.7
。
3. 实例统计(Instances
& Size
)
(1) Instances
-
含义:当前批次(batch)中所有图像包含的目标实例总数。
-
作用:监控数据加载是否正常(如突然降为
0
可能标注有问题)。 -
示例:
Instances: 128
表示当前批次共有 128 个目标。
(2) Size
-
含义:当前批次输入图像的尺寸(宽×高)。
-
作用:验证多尺度训练是否生效(若启用
multi_scale
,尺寸会动态变化)。 -
示例:
Size: 640x480
表示图像被缩放到 640×480。
4. 验证集性能指标——边界框指标(Box(P R mAP50 mAP50-95)
)
-
P
(Precision,精确率):——越大越好-
公式:P=TPTP+FPP=TP+FPTP
-
含义:预测为正样本中真实为正的比例,衡量误检率。
-
目标:越高越好(理想值接近
1.0
)。
-
-
R
(Recall,召回率):——越大越好-
公式:R=TPTP+FNR=TP+FNTP
-
含义:真实正样本中被正确预测的比例,衡量漏检率。
-
目标:越高越好(理想值接近
1.0
)。
-
-
mAP50
:——越大越好-
含义:IoU 阈值为 0.5 时的平均精度(mean Average Precision)。
-
作用:通用检测性能指标,值越高说明模型综合性能越好。
-
典型值:良好模型通常在
0.8
以上。
-
-
mAP50-95
:——越大越好-
含义:IoU 阈值从 0.5 到 0.95(步长 0.05)的平均 mAP。
-
作用:衡量模型对不同 IoU 阈值的鲁棒性,值越高说明定位越精准。
-
典型值:良好模型在
0.5-0.7
之间。
-
使用yolo11针对含BGA的图像进行图像目标检测,使用预训练模型进行模型训练,需要调节的最重要的几个参数具体是哪几个?若模型训练结束,使用训练好的模型进行推理,需要调节的最重要的几个参数具体是哪几个?
一:使用预训练模型进行模型训练,需要调节的最重要的几个参数具体是哪几个?
1.数据增强参数
train:# 几何增强:处理不同角度的 BGAdegrees: 90.0 # 允许±90°旋转(BGA可能存在90°整数倍旋转)translate: 0.1 # 平移比例,避免目标移出视野scale: 0.7 # 缩放范围,适应不同大小的BGAshear: 5.0 # 剪切变换,模拟非正面视角# 色彩增强:提高光照鲁棒性hsv_h: 0.015 # 色调扰动hsv_s: 0.7 # 饱和度扰动hsv_v: 0.4 # 明度扰动(BGA反光明显,可适当降低)# 镜像增强:BGA通常对称,可启用fliplr: 0.5 # 左右翻转flipud: 0.0 # 上下翻转(根据实际情况调整)
2. 正负样本分配与损失函数
# 正负样本分配阈值(关键参数)iou_t: 0.2 # 降低阈值,适应不同角度BGA的匹配# 损失函数权重box: 0.1 # 增大边界框权重,强化定位精度(BGA边缘检测重要)cls: 0.3 # 分类权重(根据BGA类型数量调整)obj: 0.7 # 目标置信度权重
二:使用训练好的模型进行推理,需要调节的最重要的几个参数具体是哪几个?
1. 检测阈值(直接影响结果)
detect:conf: 0.4 # 置信度阈值(过滤低置信度预测)iou: 0.3 # NMS IOU阈值(降低以减少重叠框,适合密集BGA)max_det: 1000 # 最大检测目标数(根据图像中BGA数量调整)
2. 后处理与输出控制
agnostic_nms: False # 类别无关NMS(根据BGA类型是否需要区分选择)line_thickness: 2 # 边界框线条粗细(可视化效果)
3. 输入尺寸与预处理
img_size: 640 # 推理时的输入尺寸(与训练一致或成比例)half: True # 半精度推理(加速,需GPU支持)
三:分析结果
-
分析推理结果:
- 若漏检多,降低
conf
或增大box
权重。 - 若误检多,提高
conf
或降低iou_t
。
- 若漏检多,降低
-
数据增强迭代:
- 若特定角度的 BGA 检测不佳,针对性增加旋转增强(如
degrees=120
)。
- 若特定角度的 BGA 检测不佳,针对性增加旋转增强(如
总结
阶段 | 关键参数 | 推荐值 / 策略 |
---|---|---|
训练 | degrees , iou_t , box | 90°, 0.2, 0.1 |
推理 | conf , iou , max_det | 0.4, 0.3, 1000 |
最佳实践:从上述参数开始,根据验证集结果逐步微调,避免同时调整多个参数导致问题定位困难。