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

news2024/11/15 19:55:56
当视频检索叠上大模型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.coloradmin.cn/o/1411588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyQtGraph 之PlotCurveItem 详解

PyQtGraph 之PlotCurveItem 详解 PlotCurveItem 是 PyQtGraph 中用于显示曲线的图形项。以下是 PlotCurveItem 的主要参数和属性&#xff1a; 创建 PlotCurveItem 对象 import pyqtgraph as pg# 创建一个 PlotCurveItem curve pg.PlotCurveItem()常用的参数和属性 setData(…

jQuery实现选择方法和保护信息方法

最近呢&#xff01;一直在学习jQuery语法&#xff0c;也没时间发布文章&#xff0c;现在学的差不多了&#xff0c;先跟大家分享下学习感受吧&#xff01;JavaScript学过后&#xff0c;再学习jQuery语法&#xff0c;应该是简单的&#xff0c;但我总是容易把它们搞混&#xff0c;…

day16打卡

day16打卡 104. 二叉树的最大深度 递归法时间复杂度&#xff1a;O(N)&#xff0c;空间复杂度&#xff1a;O(N) class Solution { public:int maxDepth(TreeNode* root) {if(root nullptr) return 0;return 1 max(maxDepth(root->left), maxDepth(root->right));} };…

蓝牙----蓝牙消息传输_GATT服务发现

蓝牙消息传输_GATT服务发现 1.主机和从机GATT服务的发现2.通知的使用 1.主机和从机GATT服务的发现 GATT服务的发现由主机执行&#xff0c;一共三个阶段  1.处理交换 MTU 请求和响应&#xff0c;启动对 Simple Service 服务的发现。 if (discState BLE_DISC_STATE_MTU){// MT…

C语言之指针的地址和指向的内容总结(八十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Tomcat_项目部署局域网可访问方法

Tomcat_项目部署局域网可访问方法 前提假设tomcat已经正确安装部署,项目已经部署。 1. win+r运行ipconfig/all,查看wlan的IPv4地址。 2. 修改Tomcat配置文件Server.xml,修改以下两处为:以上查找本地IP地址。

动手学深度学习7 线性回归+基础优化算法

线性回归基础优化算法 1. 线性回归1. 模型1. 房价预测--一个简化的模型2. 拓展到一般化线性模型3. 线性模型可以看做是单层神经网络 2. 预测1. 衡量预估质量2. 训练数据3. 求解模型4. 显示解5. 总结 2. 基础优化算法1. 梯度下降2. 小批量随机梯度下降3. 总结练习 3. 线性回归的…

基于物联网设计的水稻田智能灌溉系统(STM32+华为云IOT)

一、项目介绍 随着科技的不断发展和人们生活水平的提高&#xff0c;农业生产也逐渐向智能化、高效化的方向发展。水稻作为我国主要的粮食作物之一&#xff0c;其生长过程中的灌溉管理尤为重要。传统的灌溉方式往往依赖于人工观察和控制&#xff0c;不仅效率低下&#xff0c;而…

【AD-阻塞卡顿感-捕捉功能】移动布线、移动元器件时有很强的阻塞卡顿感,移动不到想要的地方

现象如下&#xff1a; 解决办法&#xff1a; 出现这种问题是因为AD的捕捉功能设置不对&#xff0c;我这边设置的是全部选择&#xff0c;所以出现了这种阻塞卡顿感。把选项全部取消&#xff0c;阻塞感就消失了。 取消后的现象&#xff1a; 至于原理上为什么会这样&#xff0…

区块链技术在教育领域的应用:Web3教育变革

随着Web3时代的来临&#xff0c;区块链技术在各个领域都展现出了巨大的潜力&#xff0c;而在教育领域&#xff0c;区块链的应用正引领着一场教育变革。本文将深入探讨区块链技术在教育领域的创新应用&#xff0c;以及这一应用如何推动Web3时代的教育变革。 1. 学历和成绩的去中…

C语言实现归并排序算法(附带源代码)

归并排序 把数据分为两段&#xff0c;从两段中逐个选最小的元素移入新数据段的末尾。 可从上到下或从下到上进行。 动态效果过程演示&#xff1a; 归并排序&#xff08;Merge Sort&#xff09;是一种分治算法&#xff0c;它将一个数组分为两个子数组&#xff0c;分别对这两个…

学习gin框架知识的小注意点

Gin框架的初始化 有些项目中 初始化gin框架写的是&#xff1a; r : gin.New() r.Use(logger.GinLogger(), logger.GinRecovery(true)) 而不是r : gin.Default() 为什么呢&#xff1f; 点击进入Default源码发现其实他也是new两个中间件&#xff0c;&#xff08;Logger&…

单调性的应用

1单调性 应用场景&#xff1a;常应用于双指针的进一步优化问题中含义&#xff1a;针对指针 i 1 > i i1>i i1>i一定有 j 1 > j j1>j j1>j或者 j 1 < j j1<j j1<j这样我们就可以利用该性质对算法进行进一步优化&#xff0c;避免一些不必要的遍历…

基于卡尔曼滤波的平面轨迹优化

文章目录 概要卡尔曼滤波代码主函数代码CMakeLists.txt概要 在进行目标跟踪时,算法实时测量得到的目标平面位置,是具有误差的,连续观测,所形成的轨迹如下图所示,需要对其进行噪声滤除。这篇博客将使用卡尔曼滤波,对轨迹进行优化。 优化的结果为黄色线。 卡尔曼滤波代码…

微信小程序元素/文字在横向和纵向实现居中对齐、两端对齐、左右对齐、上下对齐

元素对齐往往是新学者的一大困惑点&#xff0c;在此总结常用的各种元素和文字对齐方式以供参考&#xff1a; 初始显示 .wxml <view style"width: 100%;height: 500rpx; background-color: lightgray;"><view style"width: 200rpx;height:100rpx;bac…

STM32CubeMX教程29 USB_HOST - 使用FatFs文件系统读写U盘

目录 1、准备材料 2、实验目标 3、USB概述 3.1、USB协议 3.2、USB设备 3.3、USB接口 3.4、硬件原理 4、实验流程 4.0、前提知识 4.1、CubeMX相关配置 4.1.0、工程基本配置 4.1.1、时钟树配置 4.1.2、外设参数配置 4.1.3、外设中断配置 4.2、生成代码 4.2.0、配…

C++ day2 类 访问权限

1> 思维导图 2> 自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void s…

数据权限方案设计(后端)

有些BO模型放在bo包下用来装一些SQL语句查询返回&#xff0c;用于在Service层中进行处理业务逻辑,不会出现在Controller接口层的包装中。在持久层的基础组件中&#xff0c;我司业务种用的是Mysql5.7版本。在前后端开发使用的是分离技术&#xff0c;即前端使用流行的VUEElement-…

RISC-V常用汇编指令

RISC-V寄存器表&#xff1a; RISC-V和常用的x86汇编语言存在许多的不同之处&#xff0c;下面将列出其中部分指令作用&#xff1a; 指令语法描述addiaddi rd,rs1,imm将寄存器rs1的值与立即数imm相加并存入寄存器rdldld t0, 0(t1)将t1的值加上0,将这个值作为地址&#xff0c;取…

6家券商综合评级上升,12月券商App终端业务体验评测报告发布

随着移动金融服务的盛行&#xff0c;手机 App 炒股成为广大股民普遍的选择。股市行情变幻莫测&#xff0c;行情推送速度会影响到投资者的交易决策&#xff0c;委托下单与撤单等关键操作环节的响应性能又会极大影响投资者的收益。由此&#xff0c;行情数据的推送实时性和交易的快…