vgg提取图像特征 PyTorch,vgg提取图像特征比对
1.1vlad基础概念
Vlad是vectoroflocallyaggered Descriptors的简称,由Jegou等人在2010年提出,其核心思想是聚合。1.2相关方法的优缺点在深度学习时代之前,主要用于图像检索和分类的常用算法有BoW、Fisher Vector和VLAD。
BoW方法的核心思想是提取关键点描述子,用聚类的方法训练码本,然后根据每幅图像中每个描述子向量在码本中每个中心向量出现的次数来表示图像。FV方法的核心思想是通过计算高斯混合模型的均值和协方差,用高斯混合模型(GMM)来表示每幅图像。这种方法的优点是精度高,缺点是计算量大。
1.3VLAD算法VLAD算法可以看作是一种简化的FV。其主要方法是用聚类的方法训练小码本,在每幅图像中找出最接近特征的码本聚类中心,然后对所有特征进行聚类。这里K是聚类中心数,D是特征维数。比如sift就是128维。然后,Jegou等人在2012年的期刊版Aggregating localgimagedescriptor中证明了算法为什么有效。
1.4 vlad算法在VLAD算法基础上的发展和发展Arandjelovic等人在《关于VLAD的一切》中提出了一种改进的方法。然后,结合深度卷积神经网络的相关内容,提出了NetVLAD。
2 VLAD算法流程
(1)读取图像文件路径和特征提取
)2)用聚类的方法训练码本。
3)用最近的聚类中心累加每幅图像的特征。
* )4)累积VLAD的PCA维数减少和归一化
*5)获得VLAD后,继续使用ADC方法,减少存储容量,提高搜索速度。
其中,步骤4和5是可选的。第三步得到残差累积向量后,通过L2归一化,可以通过快乐月饼距离等计算两幅图像的相似度。实现图像检索。
参见简单实现(基于sift和orb特性)
Vlad-or B- c https://github.com/litho本土/Vlad-or B- CPP
弗拉德-sift-python https://github.com/litho genous/弗拉德-sift-python