当前位置:网站首页>Jina AI 联合Datawhale,发起学习项目!
Jina AI 联合Datawhale,发起学习项目!
2022-07-24 02:20:00 【Datawhale】
Datawhale学习
贡献方: Jina AI 、Datawhale,方向:视频搜索
视频创作者通常需要从大量的素材中找到自己需要的片段来剪辑,可真是心累。作为 Up 主的王德福抓住这一需求和他的小伙伴 Arthur,使用 Jina 搭建起一个跨模态视频搜索引擎,轻松实现输入描述文本,即可得到对应视频片段。

视频地址:https://www.bilibili.com/video/BV1n3411u7tJ
开发背景
作为一个前端程序员兼 Up 主,平时拍摄与搜集的素材库实在太多,在视频制作时,想快速找出想要的视频片段太费劲了,那么有什么办法能节省翻找素材的时间呢?
通过给每段视频素材打上标签?太繁琐,并且太耗时。
通过检索字幕去查找出对应的画面?但只能是人物说了那句话才行,没有说话的画面就无法检索,得到的结果太局限了。
而我想要这个工具能够实现:输入对画面的描述,就能得到视频素材的片段。那么,如何利用 AI 来实现我的需求呢?既要理解自然语言,又要理解视频内容,听起来不像是简单的任务......
技术选型
我了解到 OpenAI 开源的 CLIP 模型,它能够完成图像与文本的匹配任务。也就是说,我们可以通过利用 CLIP 模型实现用描述性的文本,而非关键词搜索到图像,而视频又可以看作是一帧帧的图像。
因此,借助强大的 CLIP 模型,我可以实现一个基于语义的,而非基于关键词的搜索引擎。不同于传统的 ES 全文搜索,我不需要给每个视频素材人为地打上标签,也不需要利用 OCR、正则去做匹配。只需通过 AI 模型,优雅地提取图像和文本的特征向量,通过计算两者的向量相似度,就能返回到我想要的结果,听起来相当完美。
初选方案
一开始,我尝试用纯 Python + CLIP 模型实现了初版方案。

但当时遇到了一些棘手的问题,即向量无法存储。由于没有合适的数据存储方式,做数据库也需要一定开发量,因此我每次都需要重新计算一遍向量,繁琐、耗时又费力。
并且由于项目无法独立部署,导致无法通过前端页面来承载视频片段搜索的能力。而这些都有太多开发成本,对于一个我这样的前端开发者来说,将大部分精力都花费在不熟悉的工作上,太得不偿失了。
最终方案
因此我尝试在开源社区寻找合适的解决方案,发现了 Jina,作为一个专注于神经网络搜索的 AI 框架,正好提供了我原方案里所需的能力。于是,我转变了思路,使用 Jina + CLIP 实现从文本到视频片段的搜索系统。

如果用纯 Python 的方式表示一个视频,需要自己建立一个哈希表,包括 embedding 、图片的存储,结构会很难看。
但 Jina 里的 DocArray 能把这个存储变得非常结构化,不管有多少帧视频,都可以在一个 Document 里做封装。而且可以有不同的层级结构,比方说第一层用于存储整体的视频,第二层用于存储视频下不同的帧......切换不同的模态时,也可以设置成顶层是一整段话,第二层是一个句子,第三层是一个单词。不仅可以通过每个单词进行搜索,也可以通过每句话进行搜索,这样搜索颗粒度选择就更多,搜索结果也会更加丰富。
项目流程
本项目的业务流程分为两大部分:视频的上传和搜索。包括数据向量化、向量相似度比较、结果的召回三个主要流程。具体如下图所示。

首先上传视频,调用 Jina 的 Video Loader,对视频抽帧,并将数据存储到 DocArray 的块里。在 Encode image 里生成向量,最后存储到 DocArray 的 Index 。在搜索时,在 Index 里会对向量的相似度进行打分,最后依据分数排序,得到返回的结果。
在定义服务上,由于 Jina 的工程师已经把逻辑都抽象出来,所以开发时只需要通过一套配置文件就能起整个服务,只需要定义需要哪些模块。就像搭积木一样,把每一个模块搭起来,不用去考虑服务之间的连接和通信。只需要专注如何实现自己的业务,不用操心架构实现的事情。
项目repo:https://github.com/ArthurKing01/jina-clip
学习项目
Datawhale 社区将联合 Jina AI 社区,结合本项目,打造多模态、跨模态应用的系列学习课程。
项目地址:
https://github.com/datawhalechina/DOPMC/issues/67
项目简介
本项目希望通过AI以及向量搜索技术实现一个自动剪辑视频的应用。最终应用可以实现通过输入文字描述来对视频的片段进行提取,达到提取素材的目的。
立项理由
目前社区的课程大部分以算法为主,希望通过该项目帮助学习者完成整个端到端的项目构建过程,帮助学习者锻炼实际工程能力
项目亮点
该项目主要有以下三点内容较为创新:
使用到了跨模态模型
使用到了向量检索技术
搭建了端到端的项目完整构建方案

整理不易,点赞三连↓
边栏推荐
- Small volume stock trading record | based on multi task crawler technology, realize level1 sampling of A-share real-time market
- canvas-绘图(鼠标按下 绘制 抬起 结束)
- POP3客户端代码的实现
- [untitled]
- 認識傳輸層協議—TCP/UDP
- Visual full link log tracking
- Solve the problem that the script tag is written in front of the element node and cannot get the element node
- Build a CPU Simulator
- STM32 installation tutorial and j-link burning driver installation tutorial [the next day]
- 使用第三方账号登录
猜你喜欢

Is software testing still popular in 2022?

【MySQL】字符集utf8mb4无法存储表情踩坑记录

STM32概念和安装【第一天】
![[MySQL] character set utf8mb4 cannot store the record of expression stepping on the pit](/img/fd/0ad738de0f967772feb4cb11702822.png)
[MySQL] character set utf8mb4 cannot store the record of expression stepping on the pit

Jmeter+influxdb+grafana pressure measurement real-time monitoring platform construction

LoadRunner12安装、录制第一个脚本以及代理服务器没有响应解决

POP3客户端代码的实现

Construction and test of hfish honey pot

One year after graduation, I gave up the internship opportunity and taught myself software testing at home. The internship of my classmates has just ended. I have become a 12K monthly salary testing e
![[important notice] the third phase of planet online training is coming! Explain how to build your own quantitative strategy on qtyx](/img/37/f9ea9af069f62cadff21415f070223.png)
[important notice] the third phase of planet online training is coming! Explain how to build your own quantitative strategy on qtyx
随机推荐
网络协议详解 :UDP
Vue3 uses keep alive to cache pages, but every time you switch the tab to enter the page, it will still enter onmounted, resulting in no caching effect. Why?
响应式布局一个网页在不同设备显示不同效果)meta:vp
Research on XMPP service (I)
关于缺少编程基础的朋友想转行 ABAP 开发岗提出的一些咨询问题和解答
分布式资源管理与任务调度框架Yarn
浅谈元宇宙中DeFi的可能性和局限性
Async await details & Promise
Responsive layout a web page displays different effects on different devices) meta:vp
响应式pbootcms模板装修设计类网站
文心大模型扬起新“帆”,产业应用大潮已至
Diablo king, analysis of low illumination image enhancement technology
On Domain Driven Design
解决script标签写在元素节点前面无法获取元素节点的问题
Draw pictures with canvas
What is naked SQL? What middleware or plug-in is good for express to operate MySQL?
Go基础笔记_5_数组切片
The communication principle between native components, applets and clients, and the operation principle of video, map, canvas, picker, etc
Visual full link log tracking
NETCORE - how to ensure that icollection or list privatization is not externally modified?