Cross-dimensional Weighting for Aggregated Deep Convolutional Features
在前面我们谈到了SPOC,主要说的是如何把圈基层的feature maps变成vector,使用的sum pooling技术,达到了不错的效果,但是回头想想还是有问题的,feature maps做为特征虽然到了很好的分类效果,但是有一个问题是,再好的特诊给他也是有噪声的啊,SPOC仅仅计算每个像素点的权重,使用的是径向基函数,但是每个channel的权重却忽略了,这篇文章就主要是改变每个像素值的权重的同时还加上了每个channel的权重,达到了很好的效果。如图所示:
上图中的实线表示保持原图像的像素,虚线表示的是把图像resize 到586*586的分辨率。可也直接得到看到在减小图像的分辨率之后,mAP大幅度的减小。在实际的的试验中,如果把像素减小到244*244,mAP仅仅有0.582左右。
下面具体看看的方法:第一计算每个像素值的权重,第二计算每个channel的权重
第一:计算每个像素的权重首先需要把每个像素所对应的channel相加,N*H*W的feature map得到H*W,然后计算每个像素权重具体如下:
第二计算每个channel的权重:首先计算每个channel中非0像素值的总和Q,如下:
然后计算每个channel的权重,具体如下,分子分母上下的那两个因子可以忽略不计:
再来看看结果,下图显示的是每一个图像像素值所对应的权重,以及每个区域权重最大最小的前7个和后7个
可以看到我们想要的ROI区域的权重的高亮的,其他的一些区域是很暗的权重。这个属性是由CNN属性决定的,也就是只对我们喜欢的区域,也就是那些可以区别每个图像之间差异的的区域特别关注。
下面看一下每个channel的权重:作者的实验室这样做的 ,对于oxbuild中query的55张图像计算channel的稀疏性