众所周知通常CNN要求输入图像尺寸是固定的,比如现有的效果比较好的pre-trained的模型要求输入为224224,227227等。这个要求是CNN本身结构决定的,因为CNN一般包括多个全连接层,而全连接层神经元数目通常是固定的,如4096,4096,1000。这一限制决定了利用CNN提取的特征是单一尺度的,因为输入图像是单一的。
多尺度特征(multi-scale feature)能有效改善image retrieval, image classification以及object detection等任务的结果,以下参考已有文献介绍几种常见的利用CNN提取multi-scale feature的方法。
这里可以把multi-scale feature分为Fc特征(从全连接层提取的特征),Conv特征(从卷积层提取的特征)以及Fc与Conv特征结合三类。

Fc特征

(1)利用spatial pyramid pooling代替全连接层前面的average或max pooling层。
spatial pyramid pooling(spp)来源于spp-net这个CNN模型,相应的论文是“Spatial pyramid pooling in deep convolutional networks for visual recognition”。spp可以将任意尺寸的图像对应的feature map转化为固定维度输出(比如4096),如此一来,我们可以将图像进行缩放等操作变换成不同尺寸的图像,然后输入到带有spp层的CNN中即可得到multi-scale feature。
(2)multi-scale orderless pooling (MOP)
MOP出自文献“Multi-scale Orderless Pooling of Deep Convolutional Activation Features”,虽然也被称为pooling,但实际上有区别于CNN中的pooling层。MOP思想是:将图像分为3个level(该思想很常见,如spatial pyramid matching,SPM),其中level 1为原始图像,level 2将图像分成很多小尺寸的patch,level 3将图像分成更小尺寸的patch。level 1直接提取Fc特征得到一个特征向量;level 2将各patch缩放到CNN输入大小,然后按level 1的处理方法提取patch的Fc特征,最后利用VLAD进行feature aggregation得到一个特征向量;level 3处理方法同level 2。三个level的特征合并即得到multi-scale feature。

Conv特征

(1)去掉CNN的全连接层,利用卷积层提取Conv特征。
将图像进行缩放得到多个不同尺寸的图像,然后分别输入CNN提取Conv特征并作feature aggregation,最后将各尺寸图像对应的特征进行合并。论文“Transferring Deep Convolutional Neural Networks for the Scene Classification of High-Resolution Remote Sensing Imagery”使用的是该方法。
(2)采用多个CNN(filter大小不同)进行特征提取.
该方法与(1)中的方法相对应,(1)中方法在于改变输入图像尺寸而(2)种方法在于改变filter大小。

Fc与Conv特征结合

简单地说就是结合Conv特征和Fc特征,如DAG-CNN,来自论文“Multi-scale recognition with DAG-CNNs”。我们当然可以利用CNN提取不同层(Conv和Fc)特征然后进行合并,但是DAG-CNN提供了一个新的解决思路。