超详细!百度富媒体检索比对系统的关键技术

2023-11-12

导读:百度富媒体检索比对系统是一套基于 Ann(approximate nearest neighbor)检索和内容特征比对技术,旨在提供针对图像、音频、视频等多媒体资源的相似检索系统。包括离线训练、建库,在线特征提取、检索。目前百度富媒体检索比对系统除了承接了百度 FEED 所有视频、图像的反作弊、下发去重以及关联推荐和黄反等业务,另外还支持了包括视频搜索、贴吧、文库在内的数十个业务方,支撑了千亿级数据规模。在数据规模、系统性能、召回率和准确度上都处于领先地位。

01 背景

随着互联网和 AI 技术的发展,网络信息的主要传输媒介,已经从传统的网页文字发展到图片、视频、音频等资源,相对纯文字的网页,富媒体内容能传递更多的信息量,同时也带来更新的用户体验。随着富媒体内容急剧爆发, 理解这些实体内容,找到他们之间的相似关系,不仅能够对这些富媒体内容进行筛选和处理,还可以更好的被推荐和搜索引擎理解,更好的服务用户。

得益于神经网络的飞速发展,多媒体数据的检索问题通常可以转化为高维向量的相似性检索, 采用 CNN(Convolutional Neural Network)的各种特征来描述这些多媒体资源的语义信息,基于 CNN 特征向量,将 query 与库中所有数据进行相关性计算,检索出相关的结果集。以图像为例,我们首先会对存量图像,进行收录、筛选,计算它们的 CNN 特征,然后把这些 CNN 进行建库。当输入 query 图像,需要从历史库中检索出与之相似或相同的图像时,我们首先计算 query 图像的 CNN 特征,然后与历史库中的全量 CNN 特征进行计算(通常计算欧式或 cosin 距离),选取距离最近的 topk 个图像作为召回结果。通常情况下,我们还会提取图像的视觉描述信息,来进行辅助后校验,进一步提升召回的准确率。视频检索比对与图像类似,是在图像的基础上增加了关键帧的抽取,以及召回图像帧序列以后,会进行视频和音频级别的比对。

在这里插入图片描述
在这里插入图片描述

△图 1. 视频检索比对方法

基于 CNN 特征向量的数据检索,数据量大、特征维度高以及要求响应时间短。随着多媒体数据的快速增长,图像帧的数据量已经达到千亿甚至万亿级别,在这种大规模数据集的检索上,传统的暴力计算虽然能满足准确度的需求,但是在计算资源和检索时间的消耗上是巨大和无法接受的。为了降低搜索的空间复杂度与时间复杂度,在过去的十几年里研究者们找到了一种可供替代的方案:近似最近邻(Approximate Nearest Neighbor)检索方法。它们往往通过对向量集合进行预处理,生成一些可以用来指导查找过程的知识,在查找时以牺牲一定精度的方式加速查找过程。

02 整体架构

百度富媒体内容比对系统,是一套包括离线 ANN 训练、建库和模型训练,在线特征预估、检索比对等功能在内的通用多媒体资源检索比对系统,处理的资源包括图像、视频和音频。

在这里插入图片描述

△图 2. 整体架构

  • cnn-service: 用来提取资源特征的模块,包括图像、视频和音频三种类型资源的特征提取;
  • feature-sevicez: 统一特征模块,提供统一特征提取和缓存功能,对上层隐藏异构 cnn 特征,可配置化访问指定cnn-service;
  • vs-image: 召回前,访问 feature-service 计算 query 的特征,然后请求 as 获取 ann检索召回结果,进行视频和音频级别的比对;
  • bs: Ann 索引服务,通过 cnn 特征,计算 topk召回,然后进行视觉特征后校验,最终得到召回结果。支持多分片和分片的自动更新、扩容;
  • as: 支持 bs 多分片的并发访问和异构索引的检索 merge;
  • finger-builder: 资源入库统一入口,获取资源 cnn 特征数据,并写入 afs;
  • index-builder: 定时 ann 索引建库;

03 应用场景

B 端反作弊

  • 作者上传、抓取视频全覆盖
  • 每天过滤 60%+的重复视频,减轻审核压力
  • 高准确率,严格反作弊
  • 百家号发文、UGC、小程序、贴吧等

C 端下发去重

  • 用户体验
  • 原创保护,生态建设

关联推荐

  • 短带长,引入厂外长视频资源,可为用户关联当前视频的完整版

风控

  • 涉政、黄反等敏感资源的识别和屏蔽

在这里插入图片描述

△图 3. 业务应用

04 关键技术

1、ANN

ANN 搜索方法通过将全空间分割成很多小的子空间,在搜索的时候,通过某种方式,快速锁定在某一(几)子空间,然后在该(几个)子空间里做遍历,从而达到次线性的计算复杂度。正是因为缩减了遍历的空间大小范围,从而使得 ANN 能够处理大规模数据的索引。常见的 ANN 检索算法有:

  • 基于树的方法:经典实现为 KD-Tree、Annoy 等。Annoy的核心是不断用选取的两个质心的法平面对空间进行分割,最终将每一个区分的子空间里面的样本数据限制在 K以内通过将空间按维度进行划分,缩小检索范围的方法来加速,适用于空间维度较小的情况。
  • 基于 Hash 的方法:经典实现为 LSH、PCAH 等,LSH的核心思想是:在高纬度空间相邻的数据经过哈希函数的映射投影转化到低维空间后,他们落入同一个吊桶的概率很大而不相邻的数据映射到同一个吊桶的概率很小。在检索时将欧式空间的距离计算转化到汉明空间,并将全局检索转化为对映射到同一个吊桶的数据进行检索,从而提高了检索速度
  • 矢量量化方法:PQ、OPQ 等,PQ的主要思想是将特征向量进行正交分解,在分解后的低维正交子空间进行量化,采用较小的码本进行编码,从而降低存储空间。
  • 基于倒排索引的方法:IVF、IMI、GNO-IMI 等。
  • 基于图的方法:NSW、HNSW、NSG 等。

2、GNOIMI

GNOIMI(The Generalized Non-Orthogonal Inverted Multi-Index)是百度内自研实现的 ANN 检索引擎,它通过聚类的方式将空间分割成许多子空间。在检索的时候,通过某种方式,快速锁定在某一(几)子空间,然后在该(几个)子空间里做遍历,从而达到次线性的计算复杂度。

CNN 特征通常特征维度高,保存全量数据特征所需内存与样本数据量成正比。对于千万级以上的数据集,通常面临内存受限的问题。GNOIMI 使用 PQ 乘积量化的方法,用一个有限子集对全量特征空间进行编码,达到大幅的降低内存消耗的目的。

1.训练
1)空间分割

GNOIMI 使用聚类的方法对训练集特征向量空间进行分割。

用户保证原始特征数据无重复,从原始数据中随机抽样。抽样数据集个数小于等于 500w,
在这里插入图片描述

对抽样样本进行 KMEANS 聚类,得到初始的一级聚类中心
在这里插入图片描述
。计算抽样本与其所属一级子空间聚类中心的残差向量,在残差向量上进行 K-means 聚类,将残差向量空间分为 L 个子空间,得到二级聚类中心码本在这里插入图片描述
。一二级聚类中心将整个数据空间分割为个子空间(cell),每个 cell 的聚类中心点定义为在这里插入图片描述

。任一训练集样本特征向量所属的 cell,满足在这里插入图片描述

空间分割如图 4 所示,所有一级聚类中心共享二级聚类中心。

在这里插入图片描述

△图 4

因为二级聚类中心使用的是全量原始特征的残差向量,因而认为二级聚类中心在每个一级子空间内分布相似,全量原始特征数据共享二级聚类中心。这种方法被称为 NO-IMI(The Non-Orthogonal Inverted Multi-Index)。蓝色点为一级聚类中心点,红色点为个 cell 的聚类中心点。显然,cell 的形状和大小需根据数据分布可变,尤其是在全量特征数据空间同时存在稀疏和密集区域时。引入参数矩阵,cell 的聚类中心点定义为。引入参数矩阵后 cell 分布如图 5 所示,cell 的形状和大小根据实际数据分布可变,空间分割更符合一级子空间内数据分布情况。参数矩阵是有全量数据计算得到的,因而更准确的描述数据分布,称这种方法为 GNO-IMI。

在这里插入图片描述

△图 5

2)乘积量化

计算抽样数据集中样本所属于的一二级距离中心,得到样本与一二级聚类中心的残差数据集。将残差数据集分为 nsq 个空间,每个子空间特征维度为 feature_dim/nsq,每个子空间分别进行 KMEANS 聚类,得到 256 个聚类中心(一个 char 占 8bit,可用一个 char 字长标记所有的聚类中心 ID),得到每个子空间的码本。将 nsq 个子空间的子码本做笛卡尔积,得到整个数据集的 PQ 码本。

2.建库

计算原始特征向量数据集中样本所属的一二级聚类中心。

计算原始特征向量数据集中样本与其所属的一二级聚类中心的残差。将残差向量分为 nsq 个子空间,在每个子空间内,计算该子特征向量距离最近的聚类中心并记录聚类中心 ID,将 feature_dim 维度的特征向量映射为 nsq 个聚类中心的 ID,可用 nsq 个聚类中心 ID 标识该特征向量。通常取 nsq = feature_dim 进行四分之一量化,feature_dim * sizeof(float) -> nsq *sizeof(char)。

在检索过程中,将 query 与该样本在每个子空间内的距离,转化为与该样本距离最近的聚类中心的距离。因而,在检索过程中,无需加载原始特征向量,可降低检索过程中所需要的内存。

3.检索

  1. 特征进行归一化;

  2. 计算 query 与一级聚类中心的距离并排序;

  3. 计算 query 与前 gnoimi_search_cells 个一级聚类中心下的二级聚类中心的距离并排序,共计 gnoimi_search_cells * gnoimi_fine_cells_count 个二级聚类中心;

  4. 以优先队列的方式,从最近的二级聚类中心开始,依次取出其下的样本,并计算 query 与这些样本的距离,取满 neighbors_count 个为止;

  5. 排序后返回 topK 个样本和对应的距离

4.实现

ANN 的算法本身并不算复杂,难点主要在实现上,GNOIMI 做了大量实现优化,简要介绍如下:

1)设计新的训练方案,重新组织一二级聚类中心的关系,在召回率略微提升的前提下,训练速度提升 1000%。

2)对于 L2/COS 距离空间下,任意三点满足三角不等式;在建库阶段,根据该特质,利用样本、一级聚类中心和二级聚类中心之间的两两距离进行剪枝,可降低 95%+的计算量,建库速度提升 550%+。

3)训练 &建库所需内存大大降低,仅为 Faiss-IVF*和 nmslib-HNSW 的 10%。

4)在检索阶段,空间分割规模超过千万,计算 query 与二级聚类中心过程中,设计新的计算 &排序逻辑,将百万级聚类中心的计算 &排序时延控制在 2ms 内,降低 20 倍。计算 query 与样本距离时,优化 PQ 量化计算过程,降低 800%+的计算量,整体吞吐提升 30%+。

5.应用

GNOIMI 与 IVF*比较时,使用相同聚类中心个数及检索 doc 个数下,比较检索时间、召准和内存;与 HNSW 比较时,在相同检索时间下,比较召准和内存。

经过测评,百万数据量级相同检索时间内 GNOIMI 效果略低于 HNSW,远超 ivf,内存占用极小,HNSW 效果最优,但内存消耗最多。随着数据增多,维度增大,相同检索时间内 GNOIMI 效果相比其他更优,内存保持低增长。

目前 GNOIMI 广泛应用于百度内各种场景,包括视频比对、图片/视频检索、FEED 等等场景,支撑规模上千亿特征,每天 PV 过 10 亿

3、HNSW

HNSW(Hierarchical Navigable Small World)是 ANN 搜索领域基于图的算法。它的前身是 NSW (Navigable-Small-World-Graph) 。NSW 通过设计出一个具有导航性的图来解决近邻图发散搜索的问题,但其搜索复杂度仍然过高,达到多重对数的级别,并且整体性能极易被图的大小所影响。HNSW 则是着力于解决这个问题。作者借鉴了 SkipList 的思想,提出了 Hierarchical-NSW 的设想。简单来说,按照一定的规则把一张的图分成多张,越接近上层的图,平均度数越低,节点之间的距离越远;越接近下层的图平均度数越高,节点之间的距离也就越近(见下图 6)。

搜索从最上层开始,找到本层距离最近的节点之后进入下一层。下一层搜索的起始节点即是上一层的最近节点,往复循环,直至找到结果。由于越是上层的图,节点越是稀少,平均度数也低,距离也远,所以可以通过非常小的代价提供了良好的搜索方向,通过这种方式减少大量没有价值的计算,减少了搜索算法复杂度。更进一步,如果把 HNSW 中节点的最大度数设为常数,这样可以获得一张搜索复杂度仅为 log(n) 的图。

在这里插入图片描述

△图 6. hnsw

HNSW 的一个显著优点是无需训练,在某些没有初始数据的场景非常好用。

目前百度内容侧使用的是 hnsw 的一种优化实现,在开源版本的基础上,做了很多优化,性能提升了将近 3.6 倍。

在这里插入图片描述

05 比对技术

1.图像比对

目前主要有两种表征图像的方法:局部特征点和图像 CNN 向量。

  • 局部特征点:对图片的视觉描述,如 SIFT、ORB 等,对尺度、旋转、亮度保持不变,视觉变化、防射变化、噪声也有一定的稳定性。
  • 图像 CNN 特征:对图像的语义特征,通常使用 CNN 分类模型等的最后几层网络输出。

在这里插入图片描述

△图 7

因此当前比对技术,采用 CNN 特征筛选+视觉局部特征后校验

在这里插入图片描述

△图 8

2.视频比对

视频比对复用了图像比对的技术,在帧检索的基础上增加了视频和音频级别的比对技术,主要是基于动态规划计算最佳匹配序列。

在这里插入图片描述

△图 9

06 总结

近年来,随着计算机技术的发展,图片、视频、音频等富媒体信息的呈井喷式增长,内容检索比对技术在推荐、搜索等各个领域也有了更广泛的应用。本文对百度富媒体检索比对系统的基本原理和核心技术进行了一次全面的总览介绍,同时介绍了各模块的工作机制,包括:特征提取、离线训练建库、在线预估、检索比对等。它提供了一套通用的多媒体资源检索比对方案,保证了高召回、高准确和高性能。基于百度 FEED 和搜索两大核心业务,它拥有全网最大的数据规模和最丰富的资源类型,涵盖了短视频、小视频、直播、图片等绝大数富媒体资源,服务于 30+产品线,为百度产品的效果提升提供了有效的辅助。

文章看完,还不过瘾?
更多精彩内容欢迎关注百度开发者中心公众号

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

超详细!百度富媒体检索比对系统的关键技术 的相关文章

  • 网络编程 用eclipse获取百度服务器端的首页

    案例 public class MyWebBrowse public static void main String args try InetAddress address InetAddress getByName www baidu
  • echarts百度地图2021最新实现方式(点,线结合)

    先在html文件中准备一个定义了高宽的 DOM 容器 div style width 100 height 900px div 引入js
  • 百度离线地图开发

    2D离线地图介绍 局域网环境下部署 完全脱离互联网 通过下载瓦片图 离线地图API js库 方式实现 一 2D离线瓦片下载 通过瓦片下载软件实现离线瓦片的下载 1 普通街道图瓦片 如下图 2 个性化瓦片 如下图 3 卫星图影像瓦片 如下图
  • 推荐一个很适合程序员的副业!

    推荐一个超级赞的副业就是有声书录制 从2013年到现在已经火了9年时间 可谓是源远流长 这个兴趣爱好衍生出来的副业已经承载了上百万小白从业人员 头部主播的年收入都破了百万 有声书录制的发展历程可以概括为 或许曾经混沌 但必定未来可期 判断一
  • 在vue项目中用BMap百度地图自定义定位icon不显示

    我自定义了图标但是不显示 先来看一下怎么用百度地图自定义图标 var myIcon new BMap Icon 自定义图标 require assets image L gif new BMap Size 24 21 图标的宽度和高度 va
  • 在页面中调用搜索引擎

    今天突然想到 在自己的页面中调用google 百度这样强大的搜索引擎想必很酷 于是上网查了资料 没想到就几行代码的事 下面是调用百度的一个代码段 div div
  • DELL戴尔笔记本电脑灵越Inspiron 14 5410&5418原厂Win10系统恢复原装OEM出厂状态系统

    Dell戴尔笔记本电脑 灵越Inspiron 14 5410 5418原装出厂OEM系统镜像原厂系统文件 系统自带所有驱动 出厂主题壁纸LOGO Office办公软件等预装程序 链接 https pan baidu com s 1Qj dW
  • 签约多方共建石嘴山智慧康养新模式

    5月13日 百度智能云与石嘴山市民政局 中国电信股份有限公司石嘴山分公司 中国银行股份有限公司石嘴山市分行 石嘴山市青鸟颐居养老服务有限公司在宁签订 石嘴山市智慧康养战略合作协议 将发挥各自优势 合力推进智慧康养产业高质量发展 提高智慧养老
  • 搜索引擎的发展历史

    第一代搜索引擎 分类目录时代 分类目录时代的的搜索引擎会收集互联网上各个网站的站名 网址 内容提要等信息 并将它们分门别类的编排到一个网站中 用户可以在分类目录中逐级浏览并寻找相关的网站 搜狐目录 hao123等就是典型的分类目录时代的代表
  • 百度AI加速器-百度智能云千帆大模型平台专项首期开营

    9月2日 3日 百度AI加速器 百度智能云千帆大模型平台专项计划第一期加速营在百度大厦举办 经过为期一个月的招募 上海烯牛信息 北京谷器数据 北京烽火万家 上海知潜等15家AI创业企业入选并参与首期开营仪式 入营企业将获得百度智能云提供的一
  • Apollo项目坐标系研究

    声明 本文系作者davidhopper原创 未经允许 不得转载 百度Apollo项目用到了多种坐标系 其中帮助文档提及的坐标系包括 全球地理坐标系 The Global Geographic coordinate system 局部坐标系
  • SiC MOSFET应用中出现的串扰问题,提出3种有效应用对策

    针对 SiC MOSFET 模块应用中出现的串扰问题 百度网盘 请输入提取码 提取码9dfv 本文对测量使用的差分探头进行了详细对比 由结果可知采用高带宽和高采样率的示波器和差分探头可测 量得到准确的信号波形 同时分析了串扰问题的产生 机制
  • Qt+百度AI实现人脸识别之人脸检测

    文章目录 简单需求 Demo运行结果 百度AI人脸识别接入 为什么使用百度AI接口 接入步骤 如何获取Access Token Qt软件开发 人脸检测Qt编程步骤 知识点 网络编程 get put post请求方式的区别简述 POST 提交
  • 基于MyApps低代码平台生成的CRM实现客户的高效管理

    随着市场的发展 客户开始变得越来越重要 因此很多公司开始追求客户数量用尽浑身解数 可盲目发展 一股脑的想要扩大客户数量 也导致企业无法对客户进行有效的管理 不可避免地出现以下问题 1 没有对新客户做好分析 也疏于老客户的管理 导致客户流失的
  • Flutter 第三方SDK集成(友盟统计,极光推送,百度地图)

    友盟统计 Flutter SDK集成 首先创建一个项目 接着去友盟工作台添加应用 添加成功后会得到AppKey 集成友盟 Flutter SDK 下载Demo Demo地址 https developer umeng com api sdk
  • 工程师必知的代码重构指南

    作者 CATE LAWRENCE 译者 冬雨 策划 蔡芳芳 本指南将带你了解进行代码重构的好处 可能遇到的挑战 可以采用的工具和最佳实践 以及重构和技术债务之间的区别 我们都在寻找清理代码 降低复杂性和改进功能的方法 重构就是其中之一 本指
  • 爬虫与反爬虫技术简介

    互联网的大数据时代的来临 网络爬虫也成了互联网中一个重要行业 它是一种自动获取网页数据信息的爬虫程序 是网站搜索引擎的重要组成部分 通过爬虫 可以获取自己想要的相关数据信息 让爬虫协助自己的工作 进而降低成本 提高业务成功率和提高业务效率
  • 这座城市引领大模型浪潮!80余个AI大模型,一半集结在这里!

    刚刚结束的2023全球数字经济大会上 人工智能高峰论坛掀起了一股热潮 大型模型的发展和应用成为了会议的亮点 而作为这次盛会的主办方之一 北京市已经成为了这场人工智能革命的领先力量 作为人工智能产业的引领者 北京不负众望 国内已有80余个大型
  • 看懂2020年智能浪潮,我们从百度和谷歌的AI足迹出发

    2020年已经过去 无论我们过得顺遂平安 还是过得无比艰难 我们应该都会记住这一年 回顾2020年 在这个不同寻常的疫情之年 科技成为人类抗击疫情的关键 而人工智能技术投入抗疫战争之中 可以说是人类有史以来的第一次 而与此同时 AI技术已经
  • Java爬虫采集房源信息解决朋友店铺选址难题

    昨天我帮朋友选择了适合的开店种类 今天同样的 利用爬虫技术采集店铺房源信息 为朋友店铺开店选址提供一份建议 数据筛查只是作为信息整理的一部分 重要的还是要看地点人流量还需要实地考察才行 我的数据只是做参考 废话不多说 连夜码出下列代码 以下

随机推荐