YOLO 目标检测中三个关键参数

目标检测模型的效果高度依赖三个核心参数的调优:置信度阈值、IoU 阈值和图像尺寸。本文详细解析这三个参数的作用、推荐值及实战组合。


一、置信度阈值(Confidence Threshold)

定义

置信度是模型对「检测框内存在目标」的确信程度,取值范围 0~1

  • 值越高 → 模型越自信,框越可靠
  • 值越低 → 可能包含噪声或模糊目标

作用

过滤低置信度预测框,减少误报。

示例

1
results = model(img, conf=0.5)
  • 只保留置信度 ≥ 0.5 的检测结果
  • 置信度 0.4 的头盔会被丢弃

推荐值

场景 推荐值 说明
高召回(不漏检) 0.3~0.4 安防监控,宁可误报不漏检
平衡精度与召回 0.5 通用推荐
高精度(少误报) 0.6~0.7 自动报警系统

⚠️ 太高漏检,太低误报


二、IoU 阈值(Intersection over Union)

定义

IoU 是两个边界框的重叠程度:

$$IoU = \frac{交集面积}{并集面积}$$

  • 0 → 完全不重叠
  • 1 → 完全重合

作用

用于非极大值抑制(NMS),去除重复检测框。

示例

1
results = model(img, iou=0.45)
  • 两个框 IoU > 0.45 → 认为是同一目标,只保留置信度高的

推荐值

IoU 值 效果
0.2~0.3 严格,易漏检
0.4~0.5 推荐,平衡去重与保留
0.6~0.7 宽松,可能保留多框

⚠️ 太低过度去重,太高重复框多


三、图像尺寸(Image Size)

定义

推理时输入模型的图像尺寸,如 640x640。训练时固定尺寸,推理时自动缩放。

作用

  • 决定模型看到的分辨率
  • 影响检测精度和推理速度

示例

1
results = model(img, imgsz=640)

图像保持比例缩放,短边拉伸,长边补灰边。

推荐值

imgsz 精度 速度 适用场景
320 较低 实时性高、大目标
480 中等 小目标不多
640 一般 通用推荐
800~960 更高 小目标多(远处物体)

⚠️ 太小小目标丢失,太大计算慢


四、参数对比总结

参数 全称 作用 默认值 推荐值
conf Confidence 过滤低置信预测 0.25 0.5
iou Intersection over Union 去除重复框 0.45 0.45
imgsz Image Size 输入分辨率 640 640

五、实战代码

1
2
3
4
5
6
7
8
9
10
from ultralytics import YOLO

model = YOLO('yolov8n.pt')

results = model(
img, # 输入图像
conf=0.5, # 置信度阈值
iou=0.45, # NMS IoU 阈值
imgsz=640 # 输入图像大小
)

六、场景组合推荐

场景 conf iou imgsz 说明
通用检测 0.5 0.45 640 推荐起点
安全报警 0.6 0.45 640 减少误报
小目标检测 0.4 0.45 800 提高召回率
实时检测 0.5 0.45 480 提升速度

七、调优建议

  1. 先用默认值测试conf=0.5, iou=0.45, imgsz=640
  2. 根据结果微调
    • 漏检 → 降低 conf 或增大 imgsz
    • 多框 → 降低 iou
    • 太慢 → 降低 imgsz
  3. 可视化验证:保存带标签图像观察效果