一文深度解读多模态大模型视频检索技术的实现与使用

当视频检索叠上大模型Buff。

万乐乐|技术作者

视频检索,俗称“找片儿”,即通过输入一段文本,找出最符合该文本描述的视频。

随着视频社会化趋势以及各类视频平台的快速兴起与发展,「视频检索」越来越成为用户和视频平台实现高效查找视频、定位目标内容的新需求。

对于个人用户而言,面对海量的在线视频资源,快速准确地通过关键词或描述找到感兴趣的视频十分重要。同时,在个人存储设备如手机或网络云盘中,用户也存在检索自己拍摄录制的视频资料的需求。

而对于视频剪辑师和制作团队来说,在庞大的媒资库中搜索所需的视频片段或素材是一项日常基础工作。精准高效的视频检索技术可以满足其在短时间内锁定匹配的素材,有效提升创作效率。

某新媒体编辑网站媒资搜索截图

此外,对于视频平台和监管部门来说,如何在数以亿计的视频库中定位到包含劣迹艺人的视频并下线,也是巨大的挑战。

「视频检索」技术的发展与应用不仅是解决信息过载、提高数据处理效率的有效途径,更是在满足个人用户、专业创作者乃至整个视频行业发展的迫切需要中扮演着至关重要的角色。

本文将回顾视频检索技术的发展历程,并揭秘隐藏在新一代自然语言视频检索技术背后的大模型。

01 视频检索现状

视频检索是怎么实现的?我们以优酷搜片为例,优酷的视频检索技术基于:

• 主要搜索内容为标题与描述;

• 通过多模态内容识别人物、ASR、OCR,转化为文本搜索;

• 具有一定Query理解能力与实体知识匹配(转化为搜索关键词);

• 具有一定的通过语义理解的Query意图分析(识别诸如How To类问题)。

图片来源:阿里文娱技术团队

上述技术方案的能够满足使用者基本的视频检索需求,但是也存在缺陷

• 大量视觉信息无法参与检索召回:基于现有多模态算法的搜索,只能识别处于标签体系内的人、物、ASR、OCR等内容,大量视觉信息(比如在蓝天翱翔的飞鸟),无法文本化参与检索。

• 强依赖知识图谱与语义分析:知识图谱的维护与更新、意图理解的能力,均需要不断地投入与更新,使用负担较大。

• 基于关键词的搜索丢失语义联系:以“马老师骑自行车”为例,基于关键词的搜索只能合并搜索“马老师”和“自行车”两个关键词,丢失“骑”这个概念,导致召回偏差。

与此同时,随着时代发展,大家找片子的手法也越来越刁钻。使用者希望不再满足于某个关键词,而是希望使用类似下面的自然语言,去匹配视频本身的内容,而不仅仅是人、物、ASR、OCR可文本化的内容,比如:足球运动员受伤、飞机穿越天门山、春风化雨育桃李......

如果要实现这样智能的搜索效果,应该怎么做呢?我们先来回顾视频检索技术的发展历程。

02 视频检索技术发展历程

第一代:基于文本的传统视频检索

在网络还不发达的时代,计算机对于音视频的处理能力及其有限,媒体数据仅仅被当作是文本数据的扩展。为了能够搜索媒体数据,网站编辑一般会对媒体数据做一次人工编目:取好标题,写好描述,甚至会手动添加若干关键词。

所以,传统的视频检索,本质上是退化为文本检索,通过利用关系型数据库(如mysql)或文本倒排数据库(ElasticSearch)的能力,对文本分词,进行检索排序。

第二代:基于AI标签的跨模态视频检索

随着互联网音视频数据量的日益增长,媒资人工编目已经到了不可持续的地步,必然要求更高生产力技术的引入。

到21世纪10年代,基于CNN架构神经网络的日趋成熟,AI已能简单理解和认识视频中的客观实体,并能通过分类模型给视频分类,此时智能标签技术便应运而生。以阿里云视频云的智能标签技术为例,它能够给视频自动打出以下标签:

• 客观实体:名人/政治人物/敏感人物、地标、Logo

• 场景与动作事件

• 时间、地域、人物等关键词

• 视频类目信息

第二代视频检索技术是在第一代技术的基础上,对视觉、听觉的模态进行了自动分析,将其转化为文本数据,其总体架构仍然未变,仍是基于文本的检索。

第三代:基于大模型的自然语言视频检索

上述搜索依赖于关键字或标签进行内容索引和检索,但这类方法存在明显的限制,尤其是对于非文本内容,如:图片、视频,用有限的标签来描述它们的全面信息是非常困难的。这些标签可能既无法覆盖所有相关的概念,也无法表达内容的细致差异和深层含义。

随着AIGC和所谓的“通用人工智能(AGI)”崛起,尤以大语言模型(LLM)为代表的大模型全面应用为契机,第三代视频检索技术开始成熟。LLM内部包含着人类海量知识的表征,将LLM延展到音视频模态,我们即可实现对媒体数据的表征。

多模态表征大模型能够将文本、图片、音频、视频等内容转换成高维空间中的向量表示,也称为嵌入(embeddings)。这些嵌入可以捕捉到内容的语义信息,并将其映射到一个连续的向量空间内,使得语义上相似的内容在这个向量空间中彼此接近。

大模型检索技术支持自然语言搜索,用户可以用自己的话描述他们想要找的内容,而不是依赖于预先定义好的关键词或标签。通过对自然语言描述的理解,大模型可以将这些描述转换为相应的向量表示,并在高维空间中寻找最匹配的内容。

第三代检索技术的优势在于它的灵活性和表现力。用户不必再局限于有限的关键字,而可以用自己的语言进行更精确和细腻的描述。同时,由于大模型能够理解内容的深层意义,搜索结果通常更加相关和准确,增强了用户体验,并为获取和发现信息提供了更加强大的工具。

例如,一个用户想要找到一张描绘“一个穿着古代盔甲的战士在日落时分静立在山巅”的图片和视频。在传统的基于标签的搜索系统中,用户可能需要尝试各种组合的关键词,比如“战士”、“盔甲”、“日落”、“山巅”等。而在大模型的跨模态检索系统中,用户可以直接输入完整的描述,检索系统会理解其语义并返回匹配的图片和视频。

03 自然语言视频检索上线

阿里云视频云基于达摩院的多模态表征大模型,在点播和智能媒体服务中上线了自然语言视频检索。并结合已有的AI标签检索、人脸检索、图像相似度检索,形成了完整的多模检索解决方案

自然语言视频检索演示:https://v.youku.com/v_show/id_XNjM2MzE5NTg5Ng==.html

我们当前实现的自然语言视频检索技术,支持性能参数:

• 最大支持10万小时规模的视频中召回相关片段

• 在10QPS搜索速度下RT<1秒

• 召回的片段准确率达到80%以上

当然,在实现自然语言视频检索的过程中,我们也遇到了一系列的难点和挑战。

下文将讲述我们如何克服这些难点与挑战,并介绍实现的技术原理与方案,以及未来视频检索进化的方向。

04 多模态表征大模型算法

算法原理

CLIP 是OpenAI在2021年提出的一个视觉分类模型,在没有微调的情况下,预训练模型能够在下游任务中达到十分出色的迁移效果。为了摆脱监督学习对标注数据集的强依赖,CLIP采用了自监督对比学习方案,从互联网收集的4亿对图文数据对中学习图像和文本的对应关系,进而获得了视觉-语言的对齐能力。

CLIP预训练模型包含两个主要模块:Text Encoder 和 Image Encoder,其中Text Encoder用来提取文本的特征,采用63M参数的text transformer模型,而Image Encoder用来提取图像的特征,采用基于CNN架构的ResNet模型或者基于tansformer架构的ViT模型。

基于文本搜索图像是CLIP的一个最直接的应用,先将待检索图像送入Image Encoder生成图像特征并存储,再将检索文本送入Text Encoder生成文本特征,使用文本特征与存储的图像特征逐一进行比对,其中余弦相似度最高的就是检索得到的图像。

CLIP虽然是基于文本-图像对训练的,它也可以很自然的推广到文本-视频检索任务中:对视频抽帧获得关键帧图像,再将关键帧图像送入Image Encoder提取图像特征即可。

算法选型

尽管CLIP具有优异的zero-shot迁移能力,但它是基于英文数据集训练的,要将其应用到中文搜索中需要非常麻烦的翻译工作。为了避免增加翻译模块而引入额外的计算量,我们找到了达摩院发布的两个开源中文检索模型:TEAM 和 ChineseCLIP。

TEAM是达摩院在2022年发布的一项工作,作者在CLIP的双塔结构上新增了一个名为Token Embeddings AlignMent(TEAM)的模块,该模块用于对token级别的图像特征与文本特征做显式对齐,并为输入的图文对生成匹配得分。

所述框架中Image Encoder采用vit-large-patch14结构,Text Encoder采用bert-base结构。作者还构建了一个10亿级规模的中文视觉-语言与训练数据集(通过夸克收集),通过在这个数据集上对所提出框架进行预训练,在中文跨模态检索基准测试(Flickr8K-CN, Flickr30K-CN 和 COCO-CN )中达到了先进的性能。

ChineseCLIP是达摩院在2022年发布的另一项工作,主要是基于2亿规模的中文数据集(原生中文数据+汉化中文数据)完成了对CLIP的汉化工作,而模型结构没有做大的改动。

为了实现跨模态基础模型对中文数据的高效迁移,作者开发了一种两阶段预训练方法,其核心思想是利用LiT(Locked-image Tuning)使文本编码器能够从CLIP的基础视觉模型中读出高质量的表示,然后将整个模型转移到新的预训练数据域。

首先使用已有预训练模型对图文双塔做参数初始化,其中Image Encoder使用CLIP的参数,Text Encoder使用中文RoBERTa的参数。第一阶段,冻结Image Encoder参数,只对Text Encoder进行预训练参数更新;第二阶段,通过对比学习同时微调Image Encoder和Text Encoder。通过两阶段训练,在中文跨模态检索测试(MUGE, Flickr30K-CN, 和 COCO-CN)中达到了最先进的性能。

算法评测

基于阿里云视频云AI编辑部长期积累的数据,最终采用了一些短视频作为测试视频集。该视频集以几分钟到10几分钟的短视频为主,包含新闻、宣传片、访谈、动画等各种类型的视频,这也十分符合视频云客户定位。

将测试视频集入库之后,我们设计了一些自然语言句子作为搜索的query,会保证query一定有对应的视频。考虑到视频集规模较小,我们最终只评估召回TOP1的准确率。

经过实际测试,TEAM和ChineseCLIP都能够达到TOP1返回80%的准确率,二者都可作为大模型特征提取器嵌入系统框架中。

05 搜索工程技术方案

在系统架构设计上,我们的搜索服务架构采用Core-Module设计体系,把最核心不易变化的搜索流程设计为Core模块,把各种不同的搜索业务,分开做成不同的Module。搜索Core模块内部有个Module管理器,管理所有Module(Module设计上允许自注册)。

每个Module包含3个接口信息分为特征提取、查询改写、聚合打分。

上述传统搜索、跨模态检索、大模型搜索分别对应3种Module,另外还支持新增人脸搜索、DNA搜索Module,后续其他搜索Module可以支持扩展。

入库流程上,媒资入库时支持多维度的内容理解:

• 基础信息base-module:传统搜索引擎

• 智能标签aiLabel-module:依托达摩院自研智能标签算法,支持物体、场景、地标、事件、LOGO、字幕OCR、语音ASR、词、类目、主题、人物角色、自定义标签识别

• 人脸特征face-module:人脸识别

• DNA特征dna-module:同源检测特征提取

• 大模型特征mm-module:多模态大模型特征提取,进行内容理解

把媒资按照不同维度进行内容理解,传统标量数据存ES构建倒排索引,向量数据存在自研分布式向量数据库。

搜索流程中,跨模态大模型搜索根据用户query文本,再经过大模型提取文本特征,搜索向量底库得到目标内容,针对视频内容会先聚合片段方便后续展示命中视频媒资内部的细节信息。用户也可以进行传统ES文本搜索得到目标内容,用户可以结合两种搜索方式使用,多路召回能力目前还于内测中。

当前视频抽帧频率是1秒1帧,大模型搜索命中可以得到秒级别的片段信息,满足用户精准定位目标内容需求;依托了我们自研的分布式向量数据库,支持海量数据(10亿级别)特征数据存储,搜索时延在1s内。

目前针对自然语言描述搜索TOP1准确率达80%,针对复杂语义的理解搜索还存在困难,后续结合LLM做改进优化。

人脸检索支持以图搜,多模检索支持以文搜,大模型检索支持以文搜、以图搜。

扩展性上,大模型搜索支持多租户,各租户之间数据相互隔离,既支持低成本共享实例,也支持高性能独享实例;用户管理媒资数据时支持建立多个搜索库,每个搜索库可分别设置搜索索引,搜索索引底层算子支持配置选择;用户根据搜索库增删改查媒资数据,满足客户不用使用场景,搜索架构具有高扩展性、可靠性、稳定性。

06 总结和展望

本文介绍了智能媒体服务的跨模态大模型检索技术实现和使用,我们把媒资进行多维度分析,使用传统的基于ES的标量检索和基于向量的特征检索有机结合,满足用户对长视频的内容理解和跨模态精准检索的需求。

但是,视频检索技术还远远没有进化到终点,在下面几个方面仍待优化与突破。

一是算法的提升。

准召率优化:当前达摩院表征大模型TEAM和ChineseClip,召回准确率达80%;达摩院在研新多模态信息表征合一模型MBA召回准确率可达93%,后续待接入。

新的模态融合:当前接入的表征大模型,仅支持文本与图像的对齐,音频模态是缺失的。想象一下,如果我搜“空山新雨后”,找到了一幅搭配雨声的山水风景视频,是多么酷的体验。

多表征融合:当前算法仅基于句子级别的文本,以及帧级别的图像进行特征提取,其实是丢失了视觉中的人物、物体等客观实体细节的。理想中的表征大模型,应该是多表征融合的。例如我搜“梅西捧着金球奖”,出现的应该是梅西拿着金球奖,而不是C罗捧着金靴奖。这意味着表征大模型需要有人物识别和文字识别的能力,而不仅仅依赖训练中的文本-图像对。

二是成本与性能的平衡。

表征特征压缩:当前是768维float32维向量,已经实现了float32压缩为uint8搜索效果基本保持一致,正在探索压缩为01二值向量,实现低成本存储与搜索。

基于片段的表征:当前视频每秒抽取一帧进行特征计算存储,已经研究出视频片段合并,提前进行特征聚合减少抽帧数量,降低存储同时提升搜索效率。

三是在工程与体验上。

多路召回:针对AI标签搜索、人脸检索、大模型检索,支持用户进行同时搜索,搜索结果合并后重新打分排序。

检索增强LLM:支持对用户复杂搜索语句的理解,搜索时针对用户query语句进行query改写实现QP能力,识别filter、groupBy等字段进行搜索语句SQL式转换,搜索结果结合原始query通过大模型再次分析过滤排序等;自然语言搜索增强形式,结合大模型实现问答式搜索,支持企业快速构建媒资知识库。

目前,自然语言视频检索已在阿里云智能媒体服务(IMS)上线,欢迎大家咨询体验。

媒资搜索产品文档:https://help.aliyun.com/document_detail/2582336.html

欢迎加入官方答疑「钉钉群」咨询交流:30415005038

参考文献及大模型:

[1] 《视频搜索太难了!阿里文娱多模态搜索算法实践》:https://mp.weixin.qq.com/s/n_Rw8oa0Py7j_hPIL1kG1Q

[2] 《深度 | 上亿用户每天看100分钟!基于多模态Embedding及检索的短视频内容理解》:https://mp.weixin.qq.com/s/M_E89uEPkWrMRBan1kF8AQ

[3] 《优酷推出“AI搜片” | 模糊搜索精准匹配,解决找片难》:https://mp.weixin.qq.com/s/Wr09Sfn3XxJ-CqvJmeC-Uw

[4] ChineseClip模型:https://modelscope.cn/models/iic/multi-modal_clip-vit-base-patch16_zh/summary

[5] TEAM图文检索模型:https://modelscope.cn/models/iic/multi-modal_team-vit-large-patch14_multi-modal-similarity/summary

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/348951.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Go语言指针变量

1. 指针变量 区别于C/C中的指针&#xff0c;Go语言中的指针不能进行偏移和运算&#xff0c;是安全指针。 Go语言中的指针3个概念&#xff1a;指针地址、指针类型和指针取值。 1.1. Go语言中的指针 Go语言中的函数传参都是值拷贝&#xff0c;当我们想要修改某个变量的时候&a…

Top Down - Fantasy Forest (HDRP)

适用于任何自上而下游戏的近180个风格化资产的强大集合!无论是RTS、MOBA、RPG还是Hacknslash,此包都可以让您制作完整而详细的自上而下关卡。 特点: 共计177个预制件和4个粒子效果 6 个可平铺的地形纹理 7 棵树模型 24个灌木丛、草地和植物 14个蘑菇 20个资源节点(金、铁、…

04-了解所有权

上一篇&#xff1a; 03-常用编程概念 所有权是 Rust 最独特的特性&#xff0c;对语言的其他部分有着深刻的影响。它使 Rust 可以在不需要垃圾回收器的情况下保证内存安全&#xff0c;因此了解所有权的工作原理非常重要。在本章中&#xff0c;我们将讨论所有权以及几个相关特性&…

Ngnix负载均衡

配置Ngnix环境 1.安装 创建Nginx的目录&#xff1a; mkdir /soft && mkdir /soft/nginx/ cd /home/centos/nginx下载Nginx安装包通过wget命令在线获取安装包&#xff1a; wget https://nginx.org/download/nginx-1.21.6.tar.gz解压Nginx压缩包&#xff1a; tar -x…

RT-Thread: 串口操作、增加串口、串口函数

说明&#xff1a;本文记录RT-Thread添加串口的步骤和串口的使用。 1.新增串口 官方链接&#xff1a;https://www.rt-thread.org/document/site/rtthread-studio/drivers/uart/v4.0.2/rtthread-studio-uart-v4.0.2/ 新增串口只需要在 board.h 文件中定义相关串口的宏定…

宋仕强论道之华强北的缺货潮(十六)

始于2019年缺货潮让华强北又生产一大批亿万富翁&#xff0c;缺货的原因主要是&#xff1a;首先&#xff0c;疫情封控导致大量白领在家远程办公&#xff0c;需要购买电脑、打印机等办公设备&#xff0c;同时孩子们也要在家上网课&#xff0c;进一步增加对电子智能终端产品的需求…

Java实现天沐瑜伽馆管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

口腔炎症和灼口综合征的区别有哪些?

随着社会发展的进步&#xff0c;当代人面临的压力越来越大&#xff0c;口腔疾病也随之而来。那么懂得如何分辨口腔疾病就至关重要。在我们绝大多数人眼里&#xff0c;口腔疾病都会统称为“上火”&#xff0c;但是不同的口腔疾病有不同症状和现象&#xff0c;如果没有早发现&…

C语言练习题110例(十)

91.杨辉三角 题目描述: KK知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣&#xff0c;他想知道杨辉三角的前n行&#xff0c;请编程帮他 解答。杨辉三角&#xff0c;本质上是二项式(ab)的n次方展开后各项的系数排成的三角形。其性质包括&#xff1a;每行的端点数为1&…

数据类型(下)

数据类型&#xff08;下&#xff09; 1.集合&#xff08;set&#xff09;1.1 定义1.2 独有功能1.3 公共功能1.4 转换1.5 其他1.5.1 集合的存储原理1.5.2 元素必须可哈希1.5.3 查找速度特别快1.5.4 对比和嵌套 练习题 强插&#xff1a;None类型2.字典&#xff08;dict)2.1 定义2…

go sync.Pool 设计与实现

本文基于 Go 1.19 Pool 是一组可以安全在多个 goroutine 间共享的临时对象的集合。 存储在 Pool 中的任何项目都可能在任何时候被移除&#xff0c;因此 Pool 不适合保存那些有状态的对象&#xff0c;如数据库连接、TCP 连接等。 Pool 的目的是缓存已分配但未使用的项以供以后使…

java数据结构与算法刷题-----LeetCode565. 数组嵌套

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 将数组抽象成链表&#xff0c;效果如下图所示 题目的要求&#x…

【VTKExamples::PolyData】第十九期 ImplicitDataSetClipping

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例ImplicitDataSetClipping,并解析接口vtkIdFilter & vtkBox & vtkClipPolyData,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就…

利用sqlmap探测get类型注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 基础:GET基于报错的sql注入利用-脱库-CSDN博客 sqlmap 工具是kali自带的 例子我都用sql靶场的第一关做演示 1、探测数据库名 sqlmap -u "http://192.168.0.103/sqlilab…

VUE--VUEX

一、什么是Vuex Vuex就是一个vue的状态&#xff08;数据&#xff09;管理工具&#xff0c;是vue项目实现大范围数据共享的技术方案。能够方便、高效的实现组件之间的数据共享。 Vuex的好处&#xff1a; &#xff08;1&#xff09;数据的存储一步到位&#xff0c;不需要层层传递…

HCIA学习作业二

要求&#xff1a;基于192.168.1.0/24进行合理划分&#xff0c;要求全网通 [AR3]display ip interface brief [AR3]display ip routing-table [AR1]display ip interface brief [AR1]display ip routing-table [AR2]display ip interface brief [AR2]display ip routing-tab…

arco design table遇到的一些问题

问题1&#xff1a;不知情就成了树形table table中不知道为啥就多了个树形加号在前面&#xff0c;查找问题后发现&#xff0c;是后端返回的数据中有children&#xff0c;框架中默认对这个参数做了树形结构。 解决办法&#xff1a; 当时没找到取消或者修改字段的属性或方法&…

使用vscode查bug

具体操作 修改CMakeList.txt # set(CMAKE_BUILD_TYPE "Release")//注释Release模式 set(CMAKE_BUILD_TYPE "Debug")//设置为Debug模式 # set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")//注释*这行代码是用来设置 CMake 构建系统中 Release 模式…

nginx限制ip访问

先看一下被禁止的效果 如何配置 禁止访问的话直接在location模块增加类似如下配置 deny all; 完整示例 location / {deny all;root html;index index.html index.htm;} 默认是allow all就是允许所有ip访问,如果只配置指定ip可以访问是无效的,还是所有的ip可以访问 无效示例…

APPium简介及安装

1 APPium简介 1. 什么是APPium&#xff1f; APPium是一个开源测试自动化框架&#xff0c;适用于原生、混合或移动Web应用程序的自动化测试工具。 APPium使用WebDriver协议驱动iOS、Android等应用程序。 2. APPium的特点 支持多平台&#xff08;Android、iOS等&#xff09; …
最新文章