乐趣区

关于七牛云存储:Zilliz-陈室余音视频相似性检索的技术实现丨ECUG-Meetup-回顾

本文依据陈室余(Zilliz 资深数据工程师)于 2021 年 6 月 26 日举办的「ECUG Meetup 第 1 期 | 2021 音视频技术最佳实际·杭州站」上的分享整顿而成。全文共计 4200 余字,次要构造如下:

  • 非结构化数据与 AI
  • 向量与数据的区别
  • 以音频为案例剖析 Milvus 我的项目
  • “以图搜图”为例剖析相似性搜寻流程
  • 音频的相似性检索流程
  • 视频的相似性检索流程
  • 音视频相似性检索的三个案例

获取「讲师完整版 PPT」,请增加 ECUG 小助手微信(微信 ID:ECUGCON)并备注「ECUG PPT」。其余讲师的分享也将于后续陆续放出,敬请期待。


以下为分享注释:

大家下午好!很快乐加入 ECUG 和七牛云主办的 ECUG Meetup,来和大家探讨音视频技术的最佳实际,我明天给大家介绍的是「音视频的相似性检索的技术实现」。

首先,自我介绍一下,我叫陈室余,是 Zilliz 的数据工程师,次要是从事数据处理、模型利用等方面的工作。

给大家介绍一下咱们公司:

  • Zilliz 是 Zillion of Zillions 的缩写,是来自上海的一家科技守业公司,专一于开发基于异构计算的数据迷信软件。
  • 开源是咱们的重要策略,咱们心愿通过开源来推动咱们的软件商业模式。
  • 咱们的愿景是从新定义数据迷信,为新畛域、新场景、新需要提供数据相干技术,帮忙人们更好地发现数据中蕴含的价值。
  • 咱们公司的次要我的项目是 Milvus,一个开源我的项目。

非结构化数据与 AI

在座各位也是音视频畛域的专家,咱们一起来回顾一下音视频的一些个性。视频其实是由一系列的视频帧组成的,像咱们看到的连环画,由一帧一帧的图片,能够组成视频。

视频还有一个重要因素是帧率,示意以帧为单位的图像间断呈现在显示器上的频率。还有就是音频,音频是示意人耳可能听到的范畴内的任何声音或乐音,声音有本人的振幅和频率,通常是 WAV、Mp3 等格局的,而带有音频的视频数据格式有 MP4、RMVB、AVI 等等。

这里提到的图片、音频和视频,咱们都能够称之为非结构化数据。咱们常说的数据个别分为三类:

  • 第一类是结构化数据,包含数字、日期、字符串等。
  • 第二类是半结构化数据,包含具备肯定格局的文本信息,如各种系统日志。
  • 第三种是非结构化数据,图片、视频、语音、自然语言等,不容易被计算机了解。

关系型数据库、传统大数据这些技术都是为了解决结构化数据的问题,而半结构化数据,以通过基于文本的搜索引擎来解决。唯独非结构化数据,在咱们的日常生活中每天都会产生,占总数据的 80%,过来始终不足无效的分析方法。直到近年来人工智能、深度学习技术的衰亡,非结构化数据得以利用。

深度学习模型的魅力在于,它能够将本来计算机难以解决的非结构化信息转化为机器容易了解的特色信息,利用深度学习模型把像图片、视频、语音、自然语言等非结构化数据提取出特征向量,最终通过对特色向向量的计算,实现对非结构化数据的剖析。

向量与数据的区别

咱们通过 AI 技术能够将非结构化数据转换成向量,那么向量计算该怎么做呢?传统的关系型数据库能够计算吗?毕竟一个向量也像一个数字,精确地说,向量是由一组数字组成的。

那么向量和数字有什么区别?向量和数字的区别,我认为次要有两个方面:

首先,向量和数字的罕用操作是不同的。数字之间常见的操作是加减乘除,但向量最常见的操作是计算类似度,比方计算向量之间的欧氏间隔,这里我给出了欧氏间隔的计算公式,能够看出向量的计算要比个别的数字计算简单的多。

第二点,数据和向量的索引形式不同。两个数字之间,能够进行数值比拟而后建设 B 树的数字索引。然而两个向量之间,咱们不能进行数值比拟。咱们只能计算它们之间的类似度,它的索引通常基于近似最近邻 ANN 算法。这里我给出了两种 ANN 的办法,基于聚类的索引和基于图的索引。

因为这些显著的差别,传统的数据库和大数据技术很难满足矢量剖析的要求,它们所反对的算法和所利用的场景都是不一样的。

因而,咱们须要一套非结构化数据服务。

大家能够看到,下层输出和上层输入都是非结构化数据,AI 技术次要作用于两头两层:绿色层模型推理和蓝色层数据服务。

模型推理的工作是将非结构化数据提取为特征向量。其实模型训练是一个老本很高的事件。但好消息是,业界曾经有一些成熟的我的项目,比方 Nvidia Tensor RT、微软 ONNX RT 等。

但对于数据服务层,目前还没有全面的解决方案。有的人把向量放在传统的关系型数据库中,有的人放在 HDFS 中,而后通过 Spark 剖析向量,也有的人应用一些 ANN 算法库,在这个畛域,大家都在做尝试。这一部分次要的挑战在于如何高效地治理和剖析向量,针对海量的非结构化数据,想要高速剖析老本还是很高的。

以音频为案例剖析 Milvus 向量数据库

针对这一挑战,咱们给出的答案由 Milvus 向量数据库驱动的非结构化数据服务。它蕴含四个局部:

  • 第一局部,嵌入类似度搜寻。包含深度学习场景下的高维密向量和传统机器学习场景下的稠密向量。
  • 第二局部,属性或标量数据。比方用字符串等结构化数据形容的标签,把 Attribute 和向量联合起来,能够提供混合查问的能力。
  • 第三局部,反对多模型。比方当初生存中会用到很多的模型,就会生成不同的向量,针对不同的向量和模型就须要有一个实体的概念,来组合不同的向量。
  • 第四局部,交融的打分机制。比方多模态搜寻中咱们引入了不同的模型,那就须要对多个模型进行交融,造成一个新的评分机制,实现非结构化数据的综合剖析。

接下来举一个音视频解决的例子,也是一个基于流的,人工智能利用中非常典型的例子。比如说要剖析一段视频,咱们能够创立一些操作流来实现,通常称为管道 Pipeline:

  • 右边的流水线:截取视频帧,而后从截取到的图像中提取图像特色特色。这里列到了计算机视觉畛域比拟风行的 VGG 模型,最初咱们失去了视频中图像的特征向量,实现对图像的剖析。
  • 两头的流水线:解决视频中的声音,它会生成的音频的特征向量。
  • 左边的流水线:会主动为视频标注一些属性,如果你有其余特殊要求,能够建设一个新的 Pipeline 来实现。

如果我还须要其余的场景,那么能够再增加 Pipeline。能够看出 AI 利用非常灵便,能够通过扩大操作流减少 AI 利用;并且非常容易部署,甚至能够通过基于 Web 界面对操作流进行减少、批改等操作。同时通过操作流的划分,每个 Pipeline 也会变得绝对简略。

从“以图搜图”为例剖析相似性搜寻流程

咱们能够看一看每个操作流都是如何实现的,比方图像搜寻零碎,咱们也叫以图搜图。它次要分为两个流程:

  • 数据的插入
  • 数据的搜寻

比如说,图中蓝色的线示意插入,图片首先能够通过 Yolo 模型来做指标提取,提取图片当中的物体指标,而后将指标物体的图片在 ResNet50 模型中做特征向量提取。提取到图片的特征向量后,就能够插入到 Milvus 中,这时 Milvus 会返回向量对应的 ID,而后能够存储向量的 ID 和图片门路的对应关系。

查找过程像黑线所示意的,同样通过 Yolo 模型和 ResNet50 模型,而后在 Milvus 中搜寻库中的向量,此时 Milvus 会返回搜寻后果的 ID,依据 ID 就能找到对应的图片。

这样就实现了以图搜图的过程。

这里提到的以图搜图我的项目,在 Github 下面是开源的,感兴趣的小伙伴能够点开 Link 看一下。

以图搜图 Github Link:
https://github.com/milvus-io/…

后面说到咱们公司的次要产品 Milvus 也是开源的。咱们也是心愿能够和大家一起来倒退社区,保护我的项目。咱们的这一套零碎也有用户间接用来上生产应用了,比方有电商用户用来搜商品,设计师团队用来搜设计图等等。

这是以图搜图的前端界面,和传统给图片打标签有所不同的,AI 技术能够主动为这些图片做分类。

音频的相似性检索流程

那么,针对音频数据该如何解决呢?

就像后面所说的,通过 AI 模型能够将这些非结构化数据提取为特征向量,这里用到的是 PANNS_INFERENCE 模型,针对声音分类的一个模型,依据获取到的特征向量,而后在 Milvus 中存储并检索,返回类似的声音。同样,音频检索也是在 Github 下面有源码的。

音频检索 Github Link :
https://github.com/milvus-io/…

视频的相似性检索流程

接下来是一个视频剖析的例子,通过对视频截帧,而后再把返回的视频帧提取图像特色,在 Milvus 中进行存储和剖析。

上面间接放一个 Demo 的视频,一起来理解一下视频剖析的过程。咱们会对视频中的物体做一个辨认,在左边会有一个显示。其实咱们过后做 Demo 的灵感来自于 Youtube 中视频广告的举荐,Youtube 在播放视频时会间接提供视频中商品的相干广告。

音视频相似性检索的三个案例

接下来为大家介绍下在音视频畛域相干的用户案例。

第一个案例,一个静止平台对体育赛事中的人脸剖析:

1、首先,用户要保障照片的即时上传。当赛事开始当前,摄影师会继续地拍摄照片。为了保障照片上传入库的时效性,必须设计一套计划保障照片的可靠性,这里会用到云存储。

2、人脸特色疾速提取。这里用到了自研的人脸识别提取算法,在保障高精度的状况下,把人脸图片压缩为 128 维的特征向量。

3、当大量的人脸特色被提取进去之后,就须要一个向量数据库来对海量的人脸特征向量进行存储和检索。在 Milvus 零碎中存储的每条人脸特征向量信息,并利用批改后的 Leaf 算法生成图像对应的 ID,让每个 ID 和 Milvus 的特色数据库对应起来。那么通过解析 ID,可能疾速确定 ID 对应的其余信息,从而疾速从业务数据库中查问出照片。

第二个案例,视频搜寻的零碎:

1、首先会把视频上传到服务器,并且保留视频元信息,视频解决工作被触发时,对视频进行预处理、抽帧,将图片转化为特征向量后导入 Milvus 库中。

2、上传待查重视频或视频 ID,将视频转化为多个特征向量。

3、在 Milvus 库中搜寻类似向量,通过计算图片集类似度得出 TopK 个后果。

第三个案例,这是音乐举荐的利用,就是在一个音乐 App 上,举荐用户可能会喜爱的音乐。

1、首先,会将上传的音乐做音轨拆散,把人声和 BGM 离开,提取 BGM 的特征向量。音轨拆散能够保障辨别原唱和翻唱的成果。

2、接下来将这些特征向量存储在 Milvus 中,依据用户听过的歌曲搜寻相似的歌曲。

3、而后对检索到的歌曲进行排序和重新排列,生成音乐举荐。

以上是我的演讲内容。这里列出了咱们 Milvus 的官网和地址,大家能够关注、理解咱们的我的项目,和咱们一起共建开源社区。

https://milvus.io
https://github.com/milvus-io/…
https://twitter.com/milvusio
https://medium.com/unstructur…
https://zhuanlan.zhihu.com/ai…
https://milvusio.slack.com/jo…

Q & A

发问:我对您的音频检索特地感兴趣,因为音频分了三类:人声、音乐以及波型,您这块做检索的话,我想请问,这个特色品质的提取有什么掂量指标?

陈室余:其实特征提取的话,咱们通常会用到一些训练的模型,就像您提到的,咱们之前有碰到过声纹、语音、音乐都不一样,这三种咱们接触到的所用的模型也是不一样的。像您说到的数据,我感觉可能就是须要去做训练。

首先得有数据,有数据之后得针对数据做训练,提取进去的特征向量成果就会比拟好。那么,怎么做掂量呢?我感觉一个是模型,它可能就会有一个算法来做掂量。

第二个,其实人的感官对这个也是有所掂量的。比如说方才说的以图搜图,可能机器搜进去的图片和搜寻的图片,机器感觉很像,然而咱们人眼看起来并不像。所以说,掂量这块的话,可能是看模型,也能够本人做一些估计。

发问:我看你后面提到了一些多模态的搜寻策略,我想请问这方面的一些办法,对于音频、视频的特征提取进去如何用于搜寻?

陈室余:多模态的话,刚好咱们最近公布了 Milvus 2.0,是反对多列向量的。

发问:你们次要是做搜寻的,解决和提取音频、视频、图像的向量后,这两方面具体是怎么交融的。

陈室余:咱们是离开做的。您刚刚说的交融,就是它对向量其实没有做一个联合,它是离开的,每列有不同的向量,然而咱们最初会有一个交融的打分机制,就是会对那些模型做一些交融的打分,这样可能就会对模型的评估好一些。


对于七牛云、ECUG 和 ECUG Meetup

七牛云:七牛云成立于 2011 年,作为国内出名的云计算及数据服务提供商,七牛云继续在海量文件存储、CDN 内容散发、视频点播、互动直播及大规模异构数据的智能剖析与解决等畛域的核心技术进行深度投入,致力于以数据科技全面驱动数字化将来,赋能各行各业全面进入数据时代。

ECUG:全称为 Effective Cloud User Group(实效云计算用户组),成立于 2007 年的 CN Erlounge II,由许式伟发动,是科技领域不可或缺的高端前沿个人。作为行业技术提高的一扇窗口,ECUG 汇聚泛滥技术人,关注当下热点技术与尖端实际,独特引领行业技术的改革。

ECUG Meetup:ECUG、七牛云联结打造的技术分享系列流动,定位于开发者以及技术从业者的线下团聚,指标是为开发者打造一个高质量的学习与社交平台,期待每一位参会者之间常识的共创、共建和相互影响,产生新知推动认知倒退以及技术提高,通过交换促成行业共同进步,为开发者以及技术从业者打造更好的交流平台与倒退空间。

退出移动版