mxnet ssd 多尺度输入

ssd网络是全卷积的,理论上可以输入任意尺寸的图片。我在测试任意尺寸输入时发现一下问题:

训练:448×448的图

测试:896×896的图

测试时使用训练时2倍的尺寸,运行网络输出结果,明显发现检测的矩形框与应当得出的检测框大小呈2倍关系,折腾了几个小时,终于明白了。

训练的时候,anchor的size是归一化的,除以了训练时的图像宽度w0,anchor的长宽都是归一化到图像宽度的。而训练数据GT框(x,y,w,h)是归一化到图像宽度和高度,anchor由于长宽存在比例关系,所以只归一化到宽度。

测试的时候,anchor的size没变,是0-1的浮点数,在修改了尺寸过后实际上网络对于偏移量的回归是正确的,但是直接通过原来anchor+偏移量得到的矩形框会使得框成为正确结果的两倍。

检测框=anchor+偏移量,注意到anchor是归一化到训练时宽度448的,这就造成了得到的检测框也是归一化到448的,而测试图像宽度是896,需要将检测框归一化到896,所以测试时将原来的anchor size除以448/896即可。

猜你喜欢

转载自www.cnblogs.com/anti-tao/p/10319631.html
ssd