局部特征聚合描述符(vector of locally aggregated descriptors,VLAD)

前端之家收集整理的这篇文章主要介绍了局部特征聚合描述符(vector of locally aggregated descriptors,VLAD)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、局部描述符聚合:非概率的Fisher Kernel
对于视频,每帧的局部描述符{x1,…,xi,…},在大规模视频搜索中不可能将他们一次都存在内存中,即使每个局部描述符都只需要几比特大小,但是一般来说,每帧都会有数百上千的局部描述符。
因此,我们将这些局部描述符聚合到一个单独的向量中去。我们利用由Perronnin[1]等人引进的Fisher Kernel对于图像表示的变形。得到的结果向量,叫做局部聚合描述符(VLAD),它提供了一种简洁有效的图像表达。假设利用k-means聚类已经学习得到的码本(codebook)和k个中心(c1,cj,ck),我们就获得一帧的VLAD描述符,记作u,具体过程如下:
(1)和词袋特征表达一样,帧的每个局部描述子xi赋给码本中离它最近的中心,然后得到量化后的索引 :

(2)将描述符集合指派给一个中心cj,向量uj通过这些描述符和他的中心的差的累积和获得。

(3)将所有的向量uj连接到一个单独的向量中去得到该帧有关的VLAD描述子。
(4)就像文献[1]中提出的Fisher Kernel 图像表达,我们对每个部分应用幂律归一化来减小能量最大部分的贡献。因此,我们对每个部分采用有符号的开平方根。这个向量随后用2范数归一化(L2-normalized),之后定义u。
得到的向量的维度是输入向量维度的k倍。例如,对于CSLBP描述子,得到的就是k*128维。对于相同大小的编码本,描述符的维度显然比词袋表达大很多。然而,VLAD描述和符合词袋(BOF)相比只需要很小的k值,而BOF需要很大的码本(达到1百万)来得到最好的结果。因此,VLAD向量的维度明显低于BOF。这种表达作为Fisher Kernel的非概率版本没有什么意义。在后面,高斯混合模型和软分配可以用来替代k-means中心,额外的信息(方法次数)也将被用来获得更丰富(但是却很长)的表达。
二、帧描述子的降维
上面获得的描述符维度很高:一般的值k=64,向量u就需要D=128*k=8192个部分。这样的向量会因为他的维度很难索引的。因此我们用两种方法比较来降维
(1)主成分分析法(PCA)可以将VLAD描述子的维度D减少到一个更小的维度d.向量u乘以由第一主成分特征的经验协方差矩阵形成的投影矩阵M。PCA矩阵预先用一个随机翻转来计算得到输出结果。
(2)另一种是,我们定义M为d*D的稀疏矩阵,由M=P*etha,这里etha是D*D的随机全排列矩阵,P是一个d*D的聚合矩阵,这个聚合矩阵将几个联系的部分相加。例如D=6,d=2,一种可能的矩阵M是:
利用结构矩阵的优势是不需要训练;降维也很容易计算,因为和稀疏矩阵的乘法比和一个由PCA获得的完整矩阵更加有效。然而在搜索过程中,降维和其他步骤相比一般比只用更少的计算消耗。 描述符降低后的维度是用矩阵M和VlAD描述符u相乘,然后L2-normalizing。得到结果向量f当做帧描述符。点乘用来作为一个相似度度量。

原文链接:https://www.f2er.com/javaschema/284767.html

猜你在找的设计模式相关文章