• ANN中乘积量化与多维倒排小结


      目前特征向量的比对加速优化能极大缩短比对耗时,改善用户体验。

           优化的途径主要有两种,一是使用指令集(SSE,AVX)加速运算。二是使用ANN替代暴力搜索。

           乘积量化和倒排索引组合是ANN中效果较好且实用的一种。总体框架分为线下训练字典,线上比对搜索两部分,如下图所示:

           相关论文如下:

          1.Hervé Jégou, Douze M , Schmid C . Product Quantization for Nearest Neighbor Search[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010.

           2.Babenko A, Lempitsky V. The inverted multi-index[C]// Computer Vision & Pattern Recognition. 2012.

           具体基础知识如向量量化(vector quantization)、乘积量化(product quantization)、倒排(inverted index)等不详细阐述,总结下自己结合论文做实验的一些体会:

           1.向量量化是一种有损压缩。

           2.乘积量化中子空间不一定越多越好,要平衡计算复杂度和量化精度,论文推荐选2.

           3.类心越多,量化失真(distortion)越小,计算成本也会相应增强。类心数目(centroid)是实际中常调整的超参。

           4.乘积量化有个前提假设,两个子空间(subspace)独立。但实际上大多数不是这样,这里引出了OPQ的优化。

           OPQ(Ge T, He K, Ke Q, et al. Optimized Product Quantization[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2013, 36(4):744-755.),

    是针对PQ中子空间存在相关性的优化。主要内容是添加旋转矩阵作用于字典(codebook),并依次迭代R和聚类,使得最终的量化损失最小。

          LOPQ(Kalantidis Y , Avrithis Y . Locally Optimized Product Quantization for Approximate Nearest Neighbor Search[C]// 2014 IEEE Conference on Computer Vision and Pattern Recognition. IEEE, 2014.)在OPQ的基础上,加入了每个子空间的各自旋转矩阵。下图展示了不同量化方法下的类心分布。

        

  • 相关阅读:
    pyqt-QGrapicsView类
    pyqt5.0 GraphicsView框架
    STM32(三)- GPIO输入输出之按键检测点亮LED
    STM32(二)- 位带操作、启动文件讲解
    STM32(一)- 基于固件库的工程模板
    C语言(四)- C预处理和C库
    C语言(三)- 结构体、结构体指针、位运算
    C语言(二)- 函数、指针、数组
    C语言(一)- 基础知识
    [caffe笔记]:杀死caffe多个进程中的某个(发生 leveldb lock 解决方法)
  • 原文地址:https://www.cnblogs.com/dingz/p/10519420.html
Copyright © 2020-2023  润新知