大家都知道,很多模型的训练是先将图像resize到256256,然后再随机裁剪成224224大小,为什么是这么做呢?
首先要回顾一下为什么分类任务的输入图像大小常常是224*224。
分类任务输出特征图如果尺寸太小,那么信息就丢失太严重,如果尺寸太大,信息的抽象层次不够高,计算量也更大,77的大小是一个很好的平衡。图像从大分辨率降低到小分辨率,降低倍数通常是2的指数次方,所以图像的输入一定是72的指数次方。以ImageNet为代表的大多数分类数据集,图像的长宽在300分辨率左右。
所以要找一个7x2的指数次方,并且在300左右的分辨率作为输入,其中7x2的4次方=7x16=112,7x2的5次方等于7x32=224,7x2的6次方=448,与300最接近的就是224了。
接下来我们再思考为什么通常是将图像resize到256x256。
首先我们要知道crop的目标是用于做数据增强。
当我们描述一个数据集的大小,通常是以数量级来衡量,而数据增强也比例外,我们的目标是将数据集增长为原来的几个数量级以上,即扩充10,100,1000倍等。
输入为NxN的大图,crop输出为MxM的小图,可以实现(N-M)x(N-M)的数据集扩充倍数。对应扩充10,100,1000,10000倍,N-M约为3,10,32,100,因为最终结果图是224x224,所以原图就应该是227x227,234x234,256x256,324x324,很明显从256x256这个尺度进行裁剪,能够保证主体不至于太小或者太大,如前面图中红色框。
那不使用256*256使用其他的尺寸如何呢?在比赛刷榜中,经常使用多尺度模型测试,即使用不同尺度的输入图进行裁剪然后进行结果融合,笔者曾经在Place365数据集上训练过ResNet和DPN模型,下面是不同尺度的测试结果。
不同尺度的结果会有差异,但是通常都不大,因此除非模型特殊,不必太纠结与这个问题,毕竟256等于2^8,2的指数次幂,多么经典又快意。
网友评论