【跨模态】神经搜索实践:Jina VCED

目录

0. 准备工作

1. Task 01 环境搭建

2. Task 02 Jina学习

2.1 概念

2.2 任务过程

i. 成功启动 grpc 服务

ii. 在Jina的Docarray中导入任意模态的数据

3. Task 03 跨模态模型

4. Task 04 前端模块

5. Task 05 后端模块

6. Task 06 后端模块


0. 准备工作

1. Task 01 环境搭建

大部分参考了 frame frame(他是我见过最卷的本科生,没有之一(顺便吐槽一句,为啥网友都这么卷 ))的文章:http://t.csdn.cn/ykgoY ,但还是踩坑了,改成适合自己的 。

  • 目标:完成项目依赖的安装,可以在本地打开 HTML 文档

1. 在虚拟机中新建终端
2. 设置root环境:sudo passwd root
3. 设置一个新的密码:su -
4. 下载miniconda
    下载安装软件:wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linuxx86_64.sh
    给安装文件添加执行指令:sudo chmod +x Miniconda3-latest-Linux-x86_64.sh
    安装,一直enter:sudo ./Miniconda3-latest-Linux-x86_64.sh
5. 进入环境变量更改:vim ~/.bashrc
6. 随便找一个位置添加:export PATH="/root/miniconda3/bin:$PATH"
7. 并且配置python3.9环境变量:alias python='/usr/bin/python3'

8. source ~/.bashrc
9. conda create -n vcde python=3.9
10. conda activate vcde 或者 source activate vcde
11. apt install rustc
12. apt install ffmpeg
13. 创建一个文件夹,用来放代码:cd ~/vced/
14. git clone https://gitee.com/473091010/CLIP.git
15. git clone https://gitee.com/shuangshuang853/vced.git
16. 启动server:cd code/service、pip install -r requirements.txt、python3 app.py

 17. 启动web:cd code/web、pip install -r requirements.txt、streamlit run app.py

遇到问题:ConnectionError: failed to connect to all addresses

 后来发现是 启动server 和 cd code/web 要一起启动。

search的结果:查找一个有树的视频

2. Task 02 Jina学习

  • 目标:熟悉 Jina 生态与相关操作
  • 成功启动 grpc 服务
  • 在 Jina 的 Docarray 中导入任意模态的数据
  • 代码练习:code/jina_demo

2.1 概念

多模态机器学习是一个相对较新的领域,它关注可以从多种数据模态中学习的算法的开发。

跨模态机器学习是多模态机器学习的一个子领域,它关注算法的开发,这些算法可以从不一定对齐的多种数据模态中学习。例如,从图像和文本中学习,其中图像和文本不一定是同一事物。

Jina:可以帮助你快速把非结构化数据例如图像,文档视频等,转换为向量数据

为什么要转换为同一个向量:将同一个东西的不同模态(视频/文档/图片)转换为同一个向量,实现跨模态搜索。

Jina 的三个基本概念:

  • Document 是基本的数据类型,它的作用就是可以将非结构化数据与向量数据之间进行映射。

  • Executor 可以理解为一个 Python 类,代表了 Jina 中的算法单元,比如把图像编码成向量、对结果进行排序等算法等都可以用 Executor 来表述。

  • Flow 可以将多个 Executor 连接起来,将他们协调成流水线(pipeline)。

DocArray:是用于存储非结构化数据的数据结构工具包,是本次我们做跨模态应用的基础,融合了 Json、Pandas、Numpy、Protobuf 的优点,其基本数据类型是Document。DocArray 的亮点在于 Hierarchy + Nested。

DocArray 有不同的层级结构,分层存储,第一层可以是一个整体的视频,第二层是该视频的不同镜头,第三层可以是镜头的某一帧。也可以是其他模态,比如第四层存储台词段落,第五层存储 ..... 既可以通过某个画面的描述搜索,也可以通过台词的意思去搜索,这样搜索的颗粒度,结构的多样性和结果的丰富度,都比传统文本检索好很多。

  • Document:一种表示嵌套非结构化数据的数据结构,是 DocArray 的基本数据类型。无论是处理文本、图像、视频、音频、3D、表格 或它们的嵌套或组合,都可以用 Document 来表示,从而使得各类数据的结构都非常规整,方便后续处理

  • DocumentArray:用于高效访问、处理和理解多个文档的容器,可以保存多个 Document 的列表

  • Dataclass:用于直观表示多模式数据的高级API

什么是RPC总监又来了,人狠话不多,这篇 gRPC,小弟佩服! - 掘金 

RPC(Remote Procedure Call Protocol)远程过程调用协议,目标就是让远程服务调用更加简单、透明。

主要就是将下面的图

我估计gRPC是一种类似HTTP/WebSocket的通信协议。

 

2.2 任务过程

i. 成功启动 grpc 服务

        jina flow --uses toy.yml

运行client程序:python3 client.py

 最终会打印出一个 “[‘’, ‘foo was here’, ‘bar was here’]” 字符串。

ii. 在Jina的Docarray中导入任意模态的数据

创建文本

from jina import Document  # 导包

# 创建简单的文本数据
d = Document(text='hello, world.') 
print(d.text)  # 通过text获取文本数据

# 支持多语言
d = Document(text='👋	नमस्ते दुनिया!	你好世界!こんにちは世界!	Привет мир!')
print(d.text)

 乱码,可能是系统对一些字体不支持。

切割文本

from jina import Document  # 导包

d = Document(text='👋	नमस्ते दुनिया!	你好世界!こんにちは世界!	Привет мир!')
d.chunks.extend([Document(text=c) for c in d.text.split('!')])  # 按'!'分割
d.summary()

 后面不写了,主要是看demo和另一个博客:

参考:

vced/jina.md at main · datawhalechina/vced · GitHub

http://t.csdn.cn/t8gMV

frame frame 的 图表画的很好:http://t.csdn.cn/Vz4l1

3. Task 03 跨模态模型

  • 目标:理解多模态的重要性,初步了解 CLIP 模型
  • 了解其他跨模态模型
  • 在 Document 中导出多模态数据,生成对应 embedding

learning-for-all: 图像分类/检测/分割的代码基本上传目前在学习自然语言处理,逐步上传中 - Gitee.comhttps://gitee.com/shuangshuang853/learning-for-all/tree/master/image-classification/20_clip一个大佬的Clip学习笔记,赞:  https://blog.csdn.net/qq_56591814/article/details/127421979?spm=1001.2014.3001.5502


4. Task 04 前端模块

  • 目标:初步掌握 Streamlit,理解项目前端逻辑
  • 使用 Streamlit 将任意数据科学相关内容部署在本地

   依然是frame frame大佬的博文:http://t.csdn.cn/SLhwa   (现在的小孩怎么这么厉害,比不过)

   补充一点就是这个Streamlit包不一定要在前面那一通环境配置下,直接找一个自己Win下的一个环境,只要有Streamlit包就能用。

     这个小老弟也是写的牛牛的:http://t.csdn.cn/p7sDF


5. Task 05 后端模块

  • 目标:熟悉 Executor 的基础功能,理解项目后端逻辑
  • 实现一个任意功能的 executor,完成封装
  • 使用 Jina Hub 中的任意 executor,通过 flow 的方式引入自己的项目


6. Task 06 项目拓展练习

  • 目标:完成项目的拓展功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不菜不菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值