PyTorch中Faster-RCNN输入图像Resize计算方法及设计原因问询
问题1:Resize输出尺寸的计算逻辑
整个计算过程完全基于GeneralizedRCNNTransform的两个参数:min_size=800、max_size=1333,步骤如下:
- 提取原始图像的高
h0、宽w0 - 计算短边缩放比例:
min_scale = min_size / min(h0, w0) - 按该比例计算初步缩放后的尺寸:
h1 = h0 * min_scale,w1 = w0 * min_scale - 检查初步缩放后的长边
max(h1, w1)是否超过max_size=1333:- 若未超过:直接对
h1、w1取整得到最终尺寸 - 若超过:计算长边缩放比例
max_scale = max_size / max(h1, w1),将h1、w1再乘以max_scale后取整得到最终尺寸
- 若未超过:直接对
对应你的测试用例验证:
- 第一个测试用例原始尺寸
(512, 640):短边为512,min_scale=800/512=1.5625,缩放后得到(800, 1000),长边1000小于1333,无需二次缩放,最终尺寸就是(800, 1000) - 第二个测试用例原始尺寸
(315, 640):短边为315,min_scale≈800/315≈2.5397,初步缩放后得到(800, 1625.4),长边1625.4大于1333,计算max_scale≈1333/1625.4≈0.82,二次缩放后得到(656, 1333),和你的输出完全一致。
问题2:该缩放策略的设计原因
- 平衡检测精度与推理效率:固定短边不小于800可以保证图像有足够的分辨率,避免小目标在缩放中丢失纹理细节,提升小目标的检测能力;同时限制长边不超过1333,可以控制单张图像的显存占用,避免推理速度过慢,兼顾工业落地的实用性。
- 保留原始宽高比:缩放过程中不会对图像做拉伸变形,目标的宽高比例和语义特征不会失真,降低模型的学习难度,也避免预测框出现比例偏移的问题。
- 适配FPN结构特性:Faster RCNN + FPN的架构本身就是为多尺度目标检测设计的,保持宽高比的缩放可以让不同大小的目标自然落到FPN对应感受野的特征层上检测,最大化FPN的多尺度检测优势。
内容的提问来源于stack exchange,提问作者justin_sakong
相关产品推荐
相关产品推荐

