首先看github这一段话(链接https://github.com/ultralytics/yolov3/issues/232):
大致含义:比较yoloV3不同输入图像分辨率的推理时间,输入图像分辨率padded为32倍数的矩形框要比输入图像分辨率为等宽高的正方形框的推理时间提升了0.63倍。yoloV5采用了这一trick。
在常用的目标检测算法中,输入图像的分辨率大小不一,常用的方式是将输入图像的分辨率归一化为统一的图像分辨率,然后再喂给目标检测网络。
若设置喂给目标检测网络输入图像的分辨率为:416*416
目标检测算法训练阶段和推理阶段resize输入图像为416*416,例如原始输入图像为1280*720:
训练阶段的方法是:
原始输入图像宽高比:720/1280 = 0.5625
以长边为基准,缩放比例分别为:1,0.5625
等比例缩放后的分辨率为:416 ,234
训练阶段对等比例缩放后的分辨率进行pading:左右两列的列表分别pad = (416-234)/ 2 = 91,padding后的图像为:
推理阶段:
原始输入图像缩放后的分辨率(设定为32的倍数)为:(np.ceil(1*416/32)*32 ,np.ceil(0.5625*416/32 )*32) = (416,256)
原始图像等比例缩放后的分辨率为:(416,234)
分别对等比例缩放后的图像进行行列padding:
行pad = (416- 416)/2 =0 ??, 列pad = (256- 234)/2 =?11
因此推理阶段padding后的图像分辨率为:
训练阶段和推理阶段pading的像素值为(114,114,114)灰色像素或(0,0,0)黑色像素。