VLAD原理简介

VLAD即vector of locally aggregated descriptors,是一种图像的特征表示方法,被广泛应用在了图像检索和图像分类领域。关于VLAD的实现原理,其实就是构造VLAD向量。在构造VLAD向量之前,首先需要利用SIFT提取图像的特征点。假设提取到的SIFT描述子数目为n,用x来表示的话,x就是一个n*128的矩阵。构造VLAD向量的过程利用了K-means的聚类结果,该过程即求解v = (x-c)在NN(x)= c下各维度的累加和。其中x为SIFT描述子,c为这些描述子做kmeans得到的聚类中心,NN(x)就是该描述子离所有聚类中心中最近的那个。如果图像类别有k个,那么c有k个,而VLAD向量的维数是128k。值得注意的一点是,VLAD向量统计的是这些SIFT特征点与对应的最近聚类中心的累积残差,而BOF统计的是落入各个聚类中心的特征点的数目。

再补充一点,这个算法在实现时一般采用KDtree进行最邻近查找。可参考:https://blog.csdn.net/pipisorry/article/details/52186307

VLAD的效果通常好于BOF和FV的原因:

FV是利用GMM对数据进行聚类,这种利用所有聚类中心的线性组合近似表示特征点的方式会存在较大的误差。

BOF是利用最近邻的聚类中心表示这个特征点,也存在较大的误差。

VLAD可以看作这两者的一个折中,由于是累积误差所以不存在信息的损失。

VLAD的代码在https://www.cnblogs.com/mafuqiang/p/6909556.html有较为简洁的阐述。

 

 

图片来自https://blog.csdn.net/garfielder007/article/details/50441500

参考资料:https://blog.csdn.net/happyer88/article/details/47054503

你可能感兴趣的:(VLAD原理简介)