Jina AI 联合Datawhale,发起学习项目!

2024-02-03 22:50

本文主要是介绍Jina AI 联合Datawhale,发起学习项目!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 Datawhale学习 

贡献方: Jina AI 、Datawhale,方向:视频搜索

视频创作者通常需要从大量的素材中找到自己需要的片段来剪辑,可真是心累。作为 Up 主的王德福抓住这一需求和他的小伙伴 Arthur,使用 Jina 搭建起一个跨模态视频搜索引擎,轻松实现输入描述文本,即可得到对应视频片段。

25d810c88f870547cc65b64b0ba33fce.png

视频地址:https://www.bilibili.com/video/BV1n3411u7tJ

开发背景

作为一个前端程序员兼 Up 主,平时拍摄与搜集的素材库实在太多,在视频制作时,想快速找出想要的视频片段太费劲了,那么有什么办法能节省翻找素材的时间呢?

  • 通过给每段视频素材打上标签?太繁琐,并且太耗时。

  • 通过检索字幕去查找出对应的画面?但只能是人物说了那句话才行,没有说话的画面就无法检索,得到的结果太局限了。

而我想要这个工具能够实现:输入对画面的描述,就能得到视频素材的片段。那么,如何利用 AI 来实现我的需求呢?既要理解自然语言,又要理解视频内容,听起来不像是简单的任务......

技术选型

我了解到 OpenAI 开源的 CLIP 模型,它能够完成图像与文本的匹配任务。也就是说,我们可以通过利用 CLIP 模型实现用描述性的文本,而非关键词搜索到图像,而视频又可以看作是一帧帧的图像。

因此,借助强大的 CLIP 模型,我可以实现一个基于语义的,而非基于关键词的搜索引擎。不同于传统的 ES 全文搜索,我不需要给每个视频素材人为地打上标签,也不需要利用 OCR、正则去做匹配。只需通过 AI 模型,优雅地提取图像和文本的特征向量,通过计算两者的向量相似度,就能返回到我想要的结果,听起来相当完美。

初选方案

一开始,我尝试用纯 Python + CLIP 模型实现了初版方案。

fa4055393d91685a25c4bd127ebc26a3.png

但当时遇到了一些棘手的问题,即向量无法存储。由于没有合适的数据存储方式,做数据库也需要一定开发量,因此我每次都需要重新计算一遍向量,繁琐、耗时又费力。

并且由于项目无法独立部署,导致无法通过前端页面来承载视频片段搜索的能力。而这些都有太多开发成本,对于一个我这样的前端开发者来说,将大部分精力都花费在不熟悉的工作上,太得不偿失了。

最终方案

因此我尝试在开源社区寻找合适的解决方案,发现了 Jina,作为一个专注于神经网络搜索的 AI 框架,正好提供了我原方案里所需的能力。于是,我转变了思路,使用 Jina + CLIP 实现从文本到视频片段的搜索系统。

006f530b903c8b353fb55edd0b8401c5.png

如果用纯 Python 的方式表示一个视频,需要自己建立一个哈希表,包括 embedding 、图片的存储,结构会很难看。

但 Jina 里的 DocArray 能把这个存储变得非常结构化,不管有多少帧视频,都可以在一个 Document 里做封装。而且可以有不同的层级结构,比方说第一层用于存储整体的视频,第二层用于存储视频下不同的帧......切换不同的模态时,也可以设置成顶层是一整段话,第二层是一个句子,第三层是一个单词。不仅可以通过每个单词进行搜索,也可以通过每句话进行搜索,这样搜索颗粒度选择就更多,搜索结果也会更加丰富。

项目流程

本项目的业务流程分为两大部分:视频的上传和搜索。包括数据向量化、向量相似度比较、结果的召回三个主要流程。具体如下图所示。

9fef8af21f764710c9677b4487377a6c.png

首先上传视频,调用 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以及向量搜索技术实现一个自动剪辑视频的应用。最终应用可以实现通过输入文字描述来对视频的片段进行提取,达到提取素材的目的。

立项理由

目前社区的课程大部分以算法为主,希望通过该项目帮助学习者完成整个端到端的项目构建过程,帮助学习者锻炼实际工程能力

项目亮点

该项目主要有以下三点内容较为创新:

  • 使用到了跨模态模型

  • 使用到了向量检索技术

  • 搭建了端到端的项目完整构建方案

f2a7abc1d1e38975090b463dfcf1b851.png

整理不易,三连

这篇关于Jina AI 联合Datawhale,发起学习项目!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/675663

相关文章

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://