YOLO训练输入尺寸代表什么 --input_width 和 --input_height 参数
参数作用
-
硬件对齐要求
许多边缘计算芯片(如 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)为单位处理数据,非对齐尺寸可能导致性能下降或直接报错。
-
-
模型输入约束
最终生成的.kmodel
的输入尺寸会固定为对齐后的值(如320x320
),推理时必须严格按照此尺寸输入数据。
与训练输入尺寸的关系
场景 | 处理建议 | 潜在影响 |
---|---|---|
训练时输入尺寸是 32 的倍数 (例如 320x320) | 直接填写实际训练尺寸 | ✅ 无影响,模型精度最佳 |
训练时输入尺寸非 32 倍数 (例如 416x416 → 对齐为 416→448) | 1. 优先修改训练代码,以 32 倍数输入尺寸重新训练 2. 若无法重训,需强制对齐(精度可能下降) | ❗ 输入尺寸变化会导致模型输出偏移,需重新验证精度 |
与实际图片大小的关系
-
输入尺寸 ≠ 原始图片尺寸
-
模型 实际接收的输入 是脚本中定义的
input_width/height
(对齐后值),原始图片会被自动 resize + 填充 到此尺寸。 -
例如:原始图片
640x480
→ 模型输入320x320
→ 图片会被压缩/拉伸至320x320
。
-
-
校准数据集要求
校准图片的尺寸不需要严格对齐,脚本会自动处理,但需确保:-
图片内容与业务场景一致
-
至少提供 8 张图片(由
ptq_options.samples_count = 8
控制)
-
最佳实践建议
-
训练阶段
直接使用 32 倍数尺寸(如 320x320、640x640)训练模型,避免部署时尺寸对齐导致的精度损失。 -
部署阶段
-
若必须使用非对齐尺寸(如 416x416),需通过以下方式兼容:
# 在模型中添加动态 resize 层(修改 ONNX 模型结构) # 或 # 在预处理代码中手动处理图片缩放
-
校准数据集的图片长宽比尽量与目标输入尺寸一致,减少形变带来的精度损失。
-