深度学习入门:Aggregating Deep Convolutional Features for Image Retrieval

           深度学习入门:Aggregating Deep Convolutional Features for Image Retrieval


       在原来的基于CNN的图像检索方法中使用的都是最后的全连接层的特征作为feature去进行相似度检索,但是这篇论文使用的是卷积层的特征。有一个区别需要注意的是卷积层的特征features map是N*W*H,但是fc层的特征却是一个vector,那么我们如何把卷积层得到的feature map变成一个vector呢?作者就提出了SPOC的方法。结果如下:绿色代表的是查找正确的,红色代表错误,蓝色代表结果不错,但是不怎么地。深度学习入门:Aggregating Deep Convolutional Features for Image Retrieval_第1张图片

    SPOC具体如下:

    第一步:Sum pooling :如下图所示,f(x,y)代表的是卷积层的feature map,(x,y)对应其中一个channel大小为H*W的空间坐标。sim(i1,i2)表示用内积来作为相似度度量

深度学习入门:Aggregating Deep Convolutional Features for Image Retrieval_第2张图片

    第二步:考虑到上述的sumpooling都点绝对化,我们知道在检索的时候都有自己最喜欢的区域,乘坐ROI,当然是想找出和ROI最相似的区域,那么这不就对上述做了些许的改进,对空间中的H*W个像素点进行分配权重,这里默认为的ROI是最终的区域,所以是使用的是类似于径向基函数:a(x.y)代表的就是每个像素点的权重值。虽然这个做法相对简单,也在精度上做了很大的提升。

深度学习入门:Aggregating Deep Convolutional Features for Image Retrieval_第3张图片

   第三步:这里没什么重点,就是把得到的特征进行PCA 降为和L2-norm归一化处理。深度学习入门:Aggregating Deep Convolutional Features for Image Retrieval_第4张图片



实验结论:

  1)sum pooling的结果比max pooling的结果要好很多。同时也比那些fisher vector之类的方法要好。

  2)即使对数据做了归一化的处理,fisher vector会遇到overfitting的问题,表明这个Aggregating 的VC维度过高

  3)堆最终的feature使用PCA之后的结果会更好

  4)相比于max pooling whitening操作对于sumpooling操作更加重要

代码链接https://github.com/arbabenko/Spoc


你可能感兴趣的:(深度学习入门:Aggregating Deep Convolutional Features for Image Retrieval)