《Aggregating local descriptors into a compact image representation》论文笔记
这篇论文中提出了一种新的图片表示方法,也就是VLAD特征,并把它用于大规模图片检索中,得到了很好的实验结果。
目前,BOF在图片检索和分类中应用广泛,首先是因为BOF是基于比较powerful的local特征(如SIFT)得来的,所以表达能力很强;其次是因为计算BOF过程中用到的kmeans也是根据样本在样本空间的距离来聚类的,所以,BOF也可以输入SVM这类基于样本间隔的分类器得到较好的效果。但是在数据量很大的情况下,由于vocabulary大小的限制,BOF的特征表达会越来越粗略,特征信息损失较多,使得搜索精度降低。
这篇论文在大数据量的图片搜索问题上,做了3方面的优化:
1,优化特征表示方法,使用VLAD特征;
2,对降维方法(PCA)做改进
3,对索引方法(ADC)做改进
论文的主要贡献有2个:
1,基于BOF和Fisher vector这这两种聚合local特征的方法提出了VLAD特征;
(
BOF详细内容见:http://blog.csdn.net/happyer88/article/details/45769413
Fisher vector详细内容见:http://blog.csdn.net/happyer88/article/details/46576379
)
2,对降维方法和索引方法做优化,而这两个优化是trade-off的,也就是此消彼长的关系,所以,论文中通过大量实验得到一个平衡值。
VLAD: vector of locally aggregated descriptors
要在大数据量的图片中搜索图像,对图片集中的每幅图片,首先是要提取VLAD特征,把每幅图片表示成一个VLAD向量v:
vi,j=∑xsuchthatNN(x)=cixj?ci,j.
其中,x是该幅图像的特征点(如SIFT),ci是该幅图像的loc点(如SIFT)做kmeans得到的聚类中心,有k个,NN(x)是离x最近的聚类中心。
可以看出,实际上vi,j是以ci为聚类中心的聚类中的特征点x的每一维的值,和聚类中心ci的每一维的值,的差,的和。
x维度为d,则i=1…k,j=1…d,那么v就是D维,D=k*d.
如下图中,是对每幅图像的SIFT特征点聚合得到VLAD特征,所以VLAD的维度是16*128,可以表示成16个4*4 grid形式:
每一个小方框对应一个聚类中心,方框中是4*4*8个值,是这个聚类中的x和聚类中心的每一维的差,8个方向上线段的长度对应差值的大小。可以看出,这些VLAD是sparse的(因为大部分差值是一个圆点,接近0),并且very structured,这里的structured意思是,大值常常在同一个cluster中,也就是同一个方框中,比如第一列的前几个方框里,线段都比较长,论文中使用PCA对VLAD特征降维正是基于这一特性。
VLAD可以理解为是BOF和fisher vector的折中
BOF是把特征点做kmeans聚类,然后用离特征点最近的一个聚类中心去代替该特征点,损失较多信息;
Fisher vector是对特征点用GMM建模,GMM实际上也是一种聚类,只不过它是考虑了特征点到每个聚类中心的距离,也就是用所有聚类中心的线性组合去表示该特征点,在GMM建模的过程中也有损失信息;
VLAD像BOF那样,只考虑离特征点最近的聚类中心,VLAD保存了每个特征点到离它最近的聚类中心的距离;
像Fisher vector那样,VLAD考虑了特征点的每一维的值,对图像局部信息有更细致的刻画;
而且VLAD特征没有损失信息。
在论文的experiment部分,可以看到在论文设计的image search实验中,VLAD特征的实验效果要比Fisher vector和BOF好。
版权声明:本文为博主原创文章,未经博主允许不得转载。