一个 gain 无法描述两个轴
数据集预先执行非等比例 resize,再由 `LetterBox(scale_fill=True)` 拉伸输入时,垂直与水平缩放率并不相同;旧 `ratio_pad` 却只保留前置 resize,`scale_boxes()` / `scale_coords()` 又统一除以第一个 gain,导致框、关键点和分割坐标恢复后发生轴向拉伸,并可能被错误裁到图像边界。

覆盖目标检测、实例分割、图像分类、姿态估计与多目标跟踪的视觉平台,提供从数据训练到部署推理的一体化 Python 与 CLI 工作流。
非等比例预处理打破了单一缩放系数假设,逆变换必须沿完整数据链逐轴还原。
x₀ = (x - pad_x) / gain_xy₀ = (y - pad_y) / gain_y两个轴分别还原数据集预先执行非等比例 resize,再由 `LetterBox(scale_fill=True)` 拉伸输入时,垂直与水平缩放率并不相同;旧 `ratio_pad` 却只保留前置 resize,`scale_boxes()` / `scale_coords()` 又统一除以第一个 gain,导致框、关键点和分割坐标恢复后发生轴向拉伸,并可能被错误裁到图像边界。
坐标逆变换必须严格逆序复原完整预处理链。前置 resize 的 `(gain_h, gain_w)` 要与 LetterBox 自身的双轴 ratio 分别相乘,padding 再按对应轴扣除;只有在等比例路径中两个 gain 才可以退化成同一个标量,不能把这个特例当作通用假设。
保存 `ratio_pad` 时组合两阶段的高度与宽度增益,并让 `scale_boxes` 与 `scale_coords` 分别使用 `gain_h`、`gain_w` 恢复 y/x 坐标;保留从图像形状自动推导的等比例行为,同时加入 stretched LetterBox 的端到端回归,对照原图上的框与坐标。
非方形输入和 `scale_fill=True` 场景中的检测框、关键点与分割坐标重新准确映射到原图,不再出现单轴漂移或边界误裁;默认等比例流程保持原有输出。完整 Python 测试 134 项通过,并覆盖双轴恢复与默认 ratio-pad 两条路径。