YOLO训练输入尺寸代表什么 --input_width 和 --input_height 参数


参数作用

  1. 硬件对齐要求
    许多边缘计算芯片(如 K230)的 NPU 对输入尺寸有 内存对齐要求(例如 32 的倍数)。脚本会自动将你填写的输入尺寸向上对齐到最近的 32 倍数:

    input_width = int(math.ceil(args.input_width / 32.0)) * 32   # 例如 310 → 320
    input_height = int(math.ceil(args.input_height / 32.0)) * 32
    • 为什么需要对齐?
      硬件加速器(如 NPU)的缓存设计通常以固定块(如 32x32)为单位处理数据,非对齐尺寸可能导致性能下降或直接报错。

  2. 模型输入约束
    最终生成的 .kmodel 的输入尺寸会固定为对齐后的值(如 320x320),推理时必须严格按照此尺寸输入数据。


与训练输入尺寸的关系

场景 处理建议 潜在影响
训练时输入尺寸是 32 的倍数
(例如 320x320)
直接填写实际训练尺寸 ✅ 无影响,模型精度最佳
训练时输入尺寸非 32 倍数
(例如 416x416 → 对齐为 416→448)
1. 优先修改训练代码,以 32 倍数输入尺寸重新训练
2. 若无法重训,需强制对齐(精度可能下降)
❗ 输入尺寸变化会导致模型输出偏移,需重新验证精度

与实际图片大小的关系

  1. 输入尺寸 ≠ 原始图片尺寸

    • 模型 实际接收的输入 是脚本中定义的 input_width/height(对齐后值),原始图片会被自动 resize + 填充 到此尺寸。

    • 例如:原始图片 640x480 → 模型输入 320x320 → 图片会被压缩/拉伸至 320x320

  2. 校准数据集要求
    校准图片的尺寸不需要严格对齐,脚本会自动处理,但需确保:

    • 图片内容与业务场景一致

    • 至少提供 8 张图片(由 ptq_options.samples_count = 8 控制)


最佳实践建议

  1. 训练阶段
    直接使用 32 倍数尺寸(如 320x320、640x640)训练模型,避免部署时尺寸对齐导致的精度损失。

  2. 部署阶段

    • 若必须使用非对齐尺寸(如 416x416),需通过以下方式兼容:

      # 在模型中添加动态 resize 层(修改 ONNX 模型结构)
      # 或
      # 在预处理代码中手动处理图片缩放
    • 校准数据集的图片长宽比尽量与目标输入尺寸一致,减少形变带来的精度损失。

你可能感兴趣的:(YOLO,人工智能)