1.1vlad基础概念VLAD是vectoroflocallyaggregateddescriptors的简称,由Jegou et al .于2010年提出,其核心思想为aggregated (积累)
1.2相关方法的优缺点在深度学习时代以前,主要用于图像检索领域和分类的常用算法有BoW、Fisher Vector和VLAD等。
BoW方法的核心思想是提取关键点描述符后,采用聚类的方法对码本进行训练,然后按照每个图像中每个描述符向量出现在码本中每个中心向量的次数来表示该图像,存在码本需要较大的缺点FV方法的核心思想是利用高斯混合模型(GMM ),通过计算高斯混合模型中的均值、协方差等参数来表示各图像。 该方法的优点是精度高,但具有计算量大的缺点。
1.3VLAD算法VLAD算法可视为简化的FV,其主要方法是通过聚类方法训练小码本,找出与每个图像中特征最接近的码本聚类中心,然后对所有特征进行聚类在此,k是聚类中心的数量,d是特征维数。 例如,sift是128维。 之后,Jegou et al .在2012年的期刊版本aggregatinglocalimagedescriptorsintocompactcodes中证明了该算法为什么有效。
1.4VLAD算法的发展和发展基于VLAD算法Arandjelovic et al .在All about VLAD的文中提出了改进方法。 随后,结合深卷积神经网络的相关内容,提出了NetVLAD。
2 VLAD算法流程
(1)读取图像文件路径和特征提取
)2)采用聚类方法训练码本
)3)将各图像的特征与最近的聚类中心进行累计
* )4)对累积的VLAD进行PCA降维并归一化
*5)获得VLAD后,继续使用ADC方法减少存储容量并提高搜索速度
其中,步骤4、5是可选,在步骤3中获得残差累积向量后,通过进行L2归一化,可以通过愉快的月饼距离等计算两张图像的相似性来实现图像检索
请参见简单实现(基于sift和orb特性)
Vlad-or B- c https://github.com/litho genous/Vlad-or B- CPP
Vlad-sift-python https://github.com/litho genous/Vlad-sift-python