高维特征索引 | 学习笔记

简介: 快速学习高维特征索引,介绍了高维特征索引系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【高校精品课-华中科技大学 -智能媒体计算高维特征索引】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/811/detail/15709


高维特征索引


图像检索,已经讲到了第三部分就是高维特征的索引,在数据库里面是讲的索引可以回忆一下。高维特征索引就是前面讲的就是局部特征深度的局部特征怎么来对进行检索索引目的是快速查询一个二维表,索引字,索引项。每个索引字对应的一个索引项的列表,建索引的目的是为了查询速度快,过滤掉相关的特征仅需要访问一部分所影响,就是把相关的把它找聚合在一起,去查询的时候只去跟相关的这个特征的索引值而不是全部

类别

有以树为基础的对比, B 树, KD 树,D 加树,树的变种有很多。特征索引它的问题是当维数很大的时候会发生维数灾难,另外一种就是以哈希为基础的,比如 SH , LSH ,KMH ,ITQ ,特点是它的压缩率很高但它的准确率很低

用于视觉上的图像还有基于视觉单词的倒排表其实就是在搜索引擎里面讲到词然后导到 ID ,而视觉单词其实就是图像的特征把特征像单词一样把它分隔开典型的就像 BOF , BOW 等视觉单词,进行倒排文件的建立。包括像 IVF 倒排文件是一维的,多维的 IMI-PQ , c-MI.

树的结果与哈希相比相比它的压缩率很大同时它的准确率也较高,因此在图像,视频的这种高维索引主要用基于视觉单词的倒排表,关于索引发展几年前写了综述,可以看看参考文献了解整个图像检索里面索引的发展脉络。

image.png

基于视觉单词倒排表为例来看如何来构建高维索引:

一维索引叫 IVF-BOW ,它是以一个码作为随机,二维索引像 IMI-PQ , c-MI ,这种多特征的索引又加了 PQ ,用 PQ 做量化来生成索引码字码字是一个二元组, C1 , C2 二元组。 c-MI 是耦合了多维的索引是以 HSV 特征还有 SIFT 特征结合在一起的这个二元素作为索引字的多特征索引。

索引字生成

可以用向量量化的方法来对这个码进行构建。比如说一里面可以用 k-means ,向量量化,二我们可以通过 PQ ,就是分段量化,或者是残差向量量化,这就是 RVQ  ,最后生成的索引项就是图像的 ID 和特征的编码。反过来就是特征的编码后面是图像的 ID

讲一个这个非常经典的一维的加 PQ 的,就是通过 PQ 去生成的码字就是索引项。有个倒排文件叫  IVF-PQ 这个索引系统,目前用的很多,IVF 是倒排文件PQ 是量化

步骤

是通过粗训练来学习索引的码书,码书训练构建的阶段呢就是在索引的码数里面找到 C1 接近的码字,细量化就是对残差进行量化编码。这样做不仅知道他是在哪个集合里面,还可以知道离至心,中心的距离,从而进行排序。

整个流程,在训练阶段通过这个数据集来训练码书,粗量化就是 k-means 可以得到索引的码书 C1 ,如果说跟它的特征,在跟码书的中心求一个残差就成了残差量化,可以从 PQ 残差量化的值再进行量化,这就形成了码书 C2 。

image.png

码书训练完了之后, C1 , C2 有了,每一个特征图像库里面的数据。怎么去把它的这个索引构建起来,就去查找到与它对应的这个两个码字,一个是 C1 ,一个是 C2  ,找到 C1 就是粗量化。

然后再细化,叫求残差,也就是细量化,通过 PQ 进行量化找到量化编码 C2 ,这样一做就把整个量化编码找到了,再把编码写到索引文件里边去。

粗量化学习方法,使用 VQ ,一维的 k-means 量化器用于生成索引的码书,这里边的码书要足够的大,比如说 4096,有点要更大,就相当于把这个图像它的这种特征分成了很多很多小的聚类,这个K越大分的组就越多,如果组多到一定程度上其实达到一张图片就是一个组。大到一定程度,在每一个组( class 里边)图像是接近的,大到一定程度,不去求残差,组内足够接近就不用求残差。因此在很多图像检索系统里到了这一步过程, K 取的足够大,如果对它的精度没有更高的要求,后面残差量化的过程可以省略,如果对精度没有更高的要求。

对特征空间进进行一个粗略的划分,每个码子对应一个索引的列表。这个时候一个组里面其实是没有排序的,所谓的粗就是因为这个。如果索引到此为止,找图像就找到了最近的那个 C ,执行找到把里面的相关的这些元素找出来排序随机就行,

如果要再进行细化,叫 PQ 量化,就在对它的残差进行分段的量化,再把它串联起来,在上一讲里面已经讲过了,用于对粗量化器的每一个子空间进行更细力度的划分来减少量化误差,也便于取出这个索引项之后进一步排序,得到精确的检索结果。

索引生成表,前面训练好了之后,就对这个数据粗量化,找到 C1 ,寻找特征集及码书里面 C1的最近的这个码字。

求残差,通过 PQ 对这个残差进行压缩变化,最后生成索引项,将图像的 ID 和编码放在索引项里边一一对应,对未来的检索提供服务,这就是构建的图像索引的过程,对整个的这个不同的索引方法如果想进一步了解就取看后面的关于索引的那一篇综述。

相关文章
|
存储 算法 C++
【C/C++ Vector容量调整】理解C++ Vector:Reserve与Resize的区别与应用
【C/C++ Vector容量调整】理解C++ Vector:Reserve与Resize的区别与应用
1408 1
|
5月前
|
人工智能 自然语言处理 物联网
Jina Embeddings V4: 为搜索而生,多模态多语言向量模型
近日,Jina AI 正式发布 jina-embeddings-v4,一款全新的多模态向量模型,参数规模达到 38 亿,并首次实现了对文本与图像的同步处理。
804 2
|
8月前
|
存储 人工智能 缓存
大模型存储的 “最后一公里” :蚂蚁大模型存储加速系统 PCache 如何解决万亿参数训练难题?
本文尝试通过当前学术和工业界在大模型存储领域的关注点和相关工作,并结合蚂蚁大模型训练场景实际的需求和问题,来介绍蚂蚁是如何在多云环境里构建一套具备高可用性、高性能以及低成本的云原生 AI 存储加速系统 PCache;并通过该存储方案在蚂蚁支持了百亿文件规模的多模态和万亿参数的 MOE 训练任务。
|
存储 自然语言处理 算法
【算法精讲系列】MGTE系列模型,RAG实施中的重要模型
检索增强生成(RAG)结合检索与生成技术,利用外部知识库提升大模型的回答准确性与丰富性。RAG的关键组件包括文本表示模型和排序模型,前者计算文本向量表示,后者进行精细排序。阿里巴巴通义实验室推出的GTE-Multilingual系列模型,具备高性能、长文档支持、多语言处理及弹性向量表示等特性,显著提升了RAG系统的检索与排序效果。该系列模型已在多个数据集上展示出优越性能,并支持多语言和长文本处理,适用于各种复杂应用场景。
2697 18
|
机器学习/深度学习 PyTorch TensorFlow
【PyTorch】PyTorch深度学习框架实战(一):实现你的第一个DNN网络
【PyTorch】PyTorch深度学习框架实战(一):实现你的第一个DNN网络
614 2
|
机器学习/深度学习 人工智能 自然语言处理
深度剖析深度神经网络(DNN):原理、实现与应用
本文详细介绍了深度神经网络(DNN)的基本原理、核心算法及其具体操作步骤。DNN作为一种重要的人工智能工具,通过多层次的特征学习和权重调节,实现了复杂任务的高效解决。文章通过理论讲解与代码演示相结合的方式,帮助读者理解DNN的工作机制及实际应用。
|
存储 安全 搜索推荐
HTTPS协议深度解析
【7月更文挑战第12天】HTTPS协议通过加密通信和身份验证机制,为数据传输提供了强有力的安全保障。在现代互联网环境中,HTTPS已成为保障网站和用户数据安全的重要手段。了解HTTPS的工作原理和安全性特性,有助于更好地应用和维护HTTPS,提升网络安全水平。
1399 5
|
机器学习/深度学习 人工智能 分布式计算
Apache Flink 说道系列 - PyFlink集成Pandas(1+1 != 2)
# 开篇说道 说道聊什么,聊阿里人熟知的“因为相信,所以简单”!这是每个人内心所神往的日常工作生活!这看似 简单的言语,透彻的道理,虽被大众所认可,但人们对其执行的能力却大相径庭。“因为相信,所以简单” 不是对我们的约束,而是为我们寻求快乐指明了方向...永远做别人成功路上的基石...当TA人踏上人生巅峰,基石自具人生高度! ![image.png](https://ata2-img
3708 0
Apache Flink 说道系列 - PyFlink集成Pandas(1+1 != 2)
|
数据采集 人工智能 监控
【最佳实践】实时计算Flink在广告行业的实时数仓建设实践
通过每个广告位上不同广告的投放地区、广告ID、设备唯一编码等信息,可以统计点击次数、投放次数等指标,可用于制定更高效的广告投放策略,降低投放成本,提高广告收益。
|
Apache 项目管理 流计算
祝贺!两位 Apache Flink PMC 喜提 Apache Member
目前,国内(华人)近 30 位 Apache Member 中,有 3 位是 Apache Flink 的核心贡献者。他们热爱开源也为开源贡献,不仅积极参与社区与其他 PMC 成员共同规划、主导 Apache Flink 的发展,更活跃在多个开源项目,持续为开源社区做贡献。