yolov3图片输入网络前的resize和预测后的矩形框的两个顶点坐标如何在缩放回原尺寸,在原图上绘制。
因为yolo系列程序结构网络的设计,要求输入必须是长宽相等的图形,其次结合卷积层运算结果,输入图片大小要求是32的倍数,所以图片在输入到网络中,需要先将图片缩放到合适的尺寸,本文以416x416这个尺寸来讲解。
首先对于输入的处理很简单,先判断出输入图片是W(宽)和H(高)谁大,先将较大的该维度缩放为416,然后另一个维度,根据较大维度的缩放比例,进行缩放就好。
譬如:原图是768x576,按照纵横比长边不变缩放到了416*372。那么问题就来了,我们需要的是416x416,现在不是,很简单的办法,对该维度进行一个纯色背景的填充即可。
长宽不一样的图的resize方法,相信大家看完上图就理解了。
那么如何在原图上输出正确的物体框?
经过神经网络的输出,和坐标转换,我们得到了在基于416*416这个坐标系下的左上角顶点(x1,y1)和右下角顶点(x2,y2)。为了可以在原图尺寸上正确的将物体框出来,还是假设,原图尺寸是768x576,要先将预测出来的两个顶点转换到未填充的坐标系416*372下,然后再除以缩放系数,到768x576下。
上图手推了一下长边是W维度的情况,如果长边是H的情况,第一部中则是y是相等的,感兴趣的朋友可以自己推导一下。