Languagebind Depth
模型简介
LanguageBind是一种创新的多模态预训练框架,通过将语言作为核心纽带,实现了视频、红外、深度、音频等多种模态的语义对齐。该方法在ICLR 2024上发表,并提供了包含1000万数据的VIDAL-10M数据集。
模型特点
以语言为中心的多模态对齐
将语言作为不同模态之间的纽带,利用语言模态丰富的语义信息实现跨模态对齐。
VIDAL-10M大规模数据集
包含1000万数据,涵盖视频、红外、深度、音频及其对应的语言,极大扩展了视觉模态之外的数据。
多视角增强描述训练
通过结合元数据、空间和时间信息生成多视角描述,并使用ChatGPT进一步增强语言语义。
轻松扩展性
架构设计支持轻松扩展到分割、检测任务,并可能扩展到无限模态。
模型能力
视频-语言对齐
红外-语言对齐
深度-语言对齐
音频-语言对齐
多模态语义理解
跨模态检索
使用案例
智能监控
多模态异常检测
结合视频、红外和深度数据,实现更全面的异常行为检测。
提高检测准确率和鲁棒性
人机交互
多模态虚拟助手
通过整合语音、视觉和深度信息,提供更自然的交互体验。
提升交互的自然度和准确性
自动驾驶
环境感知增强
融合多种传感器数据,实现更全面的环境理解。
提高自动驾驶系统的安全性和可靠性
🚀 【ICLR 2024 🔥】LanguageBind: Extending Video-Language Pretraining to N-modality by Language-based Semantic Alignment
LanguageBind是一种以语言为中心的多模态预训练方法,通过基于语言的语义对齐,将视频-语言预训练扩展到N种模态。它利用语言模态丰富的语义信息,作为不同模态之间的纽带,无需中间模态即可实现高性能。同时,项目提出了包含多种模态的大规模数据集VIDAL-10M,并采用多视图增强描述进行训练。
【ICLR 2024 🔥】LanguageBind: Extending Video-Language Pretraining to N-modality by Language-based Semantic Alignment
如果您喜欢我们的项目,请在GitHub上给我们一个星星 ⭐ 以获取最新更新。
🚀 快速开始
安装
git clone https://github.com/PKU-YuanGroup/LanguageBind
cd LanguageBind
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -r requirements.txt
运行本地演示
python gradio_app.py
在线演示
git clone https://github.com/PKU-YuanGroup/LanguageBind
cd LanguageBind
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -r requirements.txt
python gradio_app.py
您可以访问 在线演示 ,在其中计算各种模态与语言之间的相似度。
✨ 主要特性
💡 高性能,无需中间模态
LanguageBind是一种以语言为中心的多模态预训练方法,以语言作为不同模态之间的纽带,因为语言模态已经得到了充分的探索,并且包含丰富的语义信息。
- 下图展示了LanguageBind的架构。LanguageBind可以轻松扩展到分割、检测任务,甚至可能扩展到无限的模态。
⚡️ 多模态、完全对齐且海量的数据集
我们提出了VIDAL-10M,这是一个包含1000万条数据的数据集,涵盖了视频、红外、深度、音频及其对应的语言,极大地扩展了视觉模态之外的数据。
- 第二张图展示了我们提出的VIDAL-10M数据集,它包含视频、红外、深度、音频和语言五种模态。
🔥 多视图增强描述用于训练
我们对语言进行了多视图增强。我们生成了结合元数据、空间和时间的多视图描述,以极大地增强语言的语义信息。此外,我们还使用ChatGPT进一步增强语言,为每种模态对齐的语言创建一个良好的语义空间。
📦 安装指南
环境要求
- Python >= 3.8
- Pytorch >= 1.13.1
- CUDA Version >= 11.6
安装步骤
git clone https://github.com/PKU-YuanGroup/LanguageBind
cd LanguageBind
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -r requirements.txt
💻 使用示例
基础用法
import torch
from languagebind import LanguageBind, to_device, transform_dict, LanguageBindImageTokenizer
if __name__ == '__main__':
device = 'cuda:0'
device = torch.device(device)
clip_type = {
'video': 'LanguageBind_Video_FT', # also LanguageBind_Video
'audio': 'LanguageBind_Audio_FT', # also LanguageBind_Audio
'thermal': 'LanguageBind_Thermal',
'image': 'LanguageBind_Image',
'depth': 'LanguageBind_Depth',
}
model = LanguageBind(clip_type=clip_type, cache_dir='./cache_dir')
model = model.to(device)
model.eval()
pretrained_ckpt = f'lb203/LanguageBind_Image'
tokenizer = LanguageBindImageTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir/tokenizer_cache_dir')
modality_transform = {c: transform_dict[c](model.modality_config[c]) for c in clip_type.keys()}
image = ['assets/image/0.jpg', 'assets/image/1.jpg']
audio = ['assets/audio/0.wav', 'assets/audio/1.wav']
video = ['assets/video/0.mp4', 'assets/video/1.mp4']
depth = ['assets/depth/0.png', 'assets/depth/1.png']
thermal = ['assets/thermal/0.jpg', 'assets/thermal/1.jpg']
language = ["Training a parakeet to climb up a ladder.", 'A lion climbing a tree to catch a monkey.']
inputs = {
'image': to_device(modality_transform['image'](image), device),
'video': to_device(modality_transform['video'](video), device),
'audio': to_device(modality_transform['audio'](audio), device),
'depth': to_device(modality_transform['depth'](depth), device),
'thermal': to_device(modality_transform['thermal'](thermal), device),
}
inputs['language'] = to_device(tokenizer(language, max_length=77, padding='max_length',
truncation=True, return_tensors='pt'), device)
with torch.no_grad():
embeddings = model(inputs)
print("Video x Text: \n",
torch.softmax(embeddings['video'] @ embeddings['language'].T, dim=-1).detach().cpu().numpy())
print("Image x Text: \n",
torch.softmax(embeddings['image'] @ embeddings['language'].T, dim=-1).detach().cpu().numpy())
print("Depth x Text: \n",
torch.softmax(embeddings['depth'] @ embeddings['language'].T, dim=-1).detach().cpu().numpy())
print("Audio x Text: \n",
torch.softmax(embeddings['audio'] @ embeddings['language'].T, dim=-1).detach().cpu().numpy())
print("Thermal x Text: \n",
torch.softmax(embeddings['thermal'] @ embeddings['language'].T, dim=-1).detach().cpu().numpy())
运行上述代码后,将得到以下结果:
Video x Text:
[[9.9989331e-01 1.0667283e-04]
[1.3255903e-03 9.9867439e-01]]
Image x Text:
[[9.9990666e-01 9.3292067e-05]
[4.6132666e-08 1.0000000e+00]]
Depth x Text:
[[0.9954276 0.00457235]
[0.12042473 0.8795753 ]]
Audio x Text:
[[0.97634876 0.02365119]
[0.02917843 0.97082156]]
Thermal x Text:
[[0.9482511 0.0517489 ]
[0.48746133 0.5125386 ]]
高级用法
应急零样本推理
print("Video x Audio: \n", torch.softmax(embeddings['video'] @ embeddings['audio'].T, dim=-1).detach().cpu().numpy())
print("Image x Depth: \n", torch.softmax(embeddings['image'] @ embeddings['depth'].T, dim=-1).detach().cpu().numpy())
print("Image x Thermal: \n", torch.softmax(embeddings['image'] @ embeddings['thermal'].T, dim=-1).detach().cpu().numpy())
运行上述代码后,将得到以下结果:
Video x Audio:
[[1.0000000e+00 0.0000000e+00]
[3.1150486e-32 1.0000000e+00]]
Image x Depth:
[[1. 0.]
[0. 1.]]
Image x Thermal:
[[1. 0.]
[0. 1.]]
不同分支处理跨语言任务
红外模态
import torch
from languagebind import LanguageBindThermal, LanguageBindThermalTokenizer, LanguageBindThermalProcessor
pretrained_ckpt = 'LanguageBind/LanguageBind_Thermal'
model = LanguageBindThermal.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
tokenizer = LanguageBindThermalTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
thermal_process = LanguageBindThermalProcessor(model.config, tokenizer)
model.eval()
data = thermal_process([r"your/thermal.jpg"], ['your text'], return_tensors='pt')
with torch.no_grad():
out = model(**data)
print(out.text_embeds @ out.image_embeds.T)
深度模态
import torch
from languagebind import LanguageBindDepth, LanguageBindDepthTokenizer, LanguageBindDepthProcessor
pretrained_ckpt = 'LanguageBind/LanguageBind_Depth'
model = LanguageBindDepth.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
tokenizer = LanguageBindDepthTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
depth_process = LanguageBindDepthProcessor(model.config, tokenizer)
model.eval()
data = depth_process([r"your/depth.png"], ['your text.'], return_tensors='pt')
with torch.no_grad():
out = model(**data)
print(out.text_embeds @ out.image_embeds.T)
视频模态
import torch
from languagebind import LanguageBindVideo, LanguageBindVideoTokenizer, LanguageBindVideoProcessor
pretrained_ckpt = 'LanguageBind/LanguageBind_Video_FT' # also 'LanguageBind/LanguageBind_Video'
model = LanguageBindVideo.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
tokenizer = LanguageBindVideoTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
video_process = LanguageBindVideoProcessor(model.config, tokenizer)
model.eval()
data = video_process(["your/video.mp4"], ['your text.'], return_tensors='pt')
with torch.no_grad():
out = model(**data)
print(out.text_embeds @ out.image_embeds.T)
音频模态
import torch
from languagebind import LanguageBindAudio, LanguageBindAudioTokenizer, LanguageBindAudioProcessor
pretrained_ckpt = 'LanguageBind/LanguageBind_Audio_FT' # also 'LanguageBind/LanguageBind_Audio'
model = LanguageBindAudio.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
tokenizer = LanguageBindAudioTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
audio_process = LanguageBindAudioProcessor(model.config, tokenizer)
model.eval()
data = audio_process([r"your/audio.wav"], ['your audio.'], return_tensors='pt')
with torch.no_grad():
out = model(**data)
print(out.text_embeds @ out.image_embeds.T)
图像模态
import torch
from languagebind import LanguageBindImage, LanguageBindImageTokenizer, LanguageBindImageProcessor
pretrained_ckpt = 'LanguageBind/LanguageBind_Image'
model = LanguageBindImage.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
tokenizer = LanguageBindImageTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
image_process = LanguageBindImageProcessor(model.config, tokenizer)
model.eval()
data = image_process([r"your/image.jpg"], ['your text.'], return_tensors='pt')
with torch.no_grad():
out = model(**data)
print(out.text_embeds @ out.image_embeds.T)
📚 详细文档
📰 新闻动态
- [2024.01.27] 👀👀👀 我们的 MoE-LLaVA 发布了!一个30亿参数的稀疏模型性能超过了70亿参数的密集模型。
- [2024.01.16] 🔥🔥🔥 我们的LanguageBind被ICLR 2024接收!我们在 这里 获得了6(3)8(6)6(6)6(6)的评分。
- [2023.12.15] 💪💪💪 我们扩展了 💥💥💥 VIDAL数据集,现在拥有1000万条视频-文本数据。我们推出了 LanguageBind_Video 1.5,查看我们的 模型库。
- [2023.12.10] 我们扩展了 💥💥💥 VIDAL数据集,现在拥有1000万条深度数据和1000万条热成像数据。我们正在 Hugging Face 上上传热成像和深度数据,预计整个过程将持续1 - 2个月。
- [2023.11.27] 🔥🔥🔥 我们更新了 论文,包含了应急零样本结果,查看我们的 ✨ 结果。
- [2023.11.26] 💥💥💥 我们开源了所有文本源和对应的YouTube ID,详情见 DATASETS.md。
- [2023.11.26] 📣📣📣 我们开源了完全微调的 视频 & 音频 模型,性能再次提升,查看我们的 模型库。
- [2023.11.22] 我们即将发布完全微调版本,超大版本 目前正在训练中。
- [2023.11.21] 💥 我们在 DATASETS.md 中发布了样本数据,感兴趣的用户可以进一步修改代码,在自己的数据上进行训练。
- [2023.10.23] 🎶 LanguageBind-Audio在5个数据集上取得了最先进(SOTA)的性能,查看我们的 ✨ 结果!
- [2023.10.14] 😱 发布了更强的LanguageBind-Video,查看我们的 ✨ 结果! 视频模型的检查点已在Huggingface模型中心更新!
- [2023.10.10] 我们提供了样本数据,可在 assets 中找到,并描述了 应急零样本使用方法。
- [2023.10.07] 检查点可在 🤗 Huggingface模型中心 上获取。
- [2023.10.04] 代码和 演示 现已开放!欢迎 关注 👀 本仓库以获取最新更新。
💥 VIDAL-10M数据集
数据集详情请参考 DATASETS.md。
🗝️ 训练与验证
训练与验证说明请参考 TRAIN_AND_VALIDATE.md。
👍 致谢
✏️ 引用
如果您在研究中发现我们的论文和代码有用,请考虑给我们一个星星 :star: 并进行引用 :pencil:。
@misc{zhu2023languagebind,
title={LanguageBind: Extending Video-Language Pretraining to N-modality by Language-based Semantic Alignment},
author={Bin Zhu and Bin Lin and Munan Ning and Yang Yan and Jiaxi Cui and Wang HongFa and Yatian Pang and Wenhao Jiang and Junwu Zhang and Zongwei Li and Cai Wan Zhang and Zhifeng Li and Wei Liu and Li Yuan},
year={2023},
eprint={2310.01852},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
✨ 星星历史
🤝 贡献者
🔧 技术细节
模型库
编码器模型
模态 | LoRA微调 | 完全微调 |
---|---|---|
视频 | LanguageBind_Video | LanguageBind_Video_FT |
音频 | LanguageBind_Audio | LanguageBind_Audio_FT |
深度 | LanguageBind_Depth | - |
热成像 | LanguageBind_Thermal | - |
视频模型版本
版本 | 微调方式 | 模型大小 | 帧数 | HF链接 | MSR-VTT | DiDeMo | ActivityNet | MSVD |
---|---|---|---|---|---|---|---|---|
LanguageBind_Video | LoRA | 大 | 8 | 链接 | 42.6 | 37.8 | 35.1 | 52.2 |
LanguageBind_Video_FT | 完全微调 | 大 | 8 | 链接 | 42.7 | 38.1 | 36.9 | 53.5 |
LanguageBind_Video_V1.5_FT | 完全微调 | 大 | 8 | 链接 | 42.8 | 39.7 | 38.4 | 54.1 |
LanguageBind_Video_V1.5_FT | 完全微调 | 大 | 12 | 即将推出 | - | - | - | - |
LanguageBind_Video_Huge_V1.5_FT | 完全微调 | 超大 | 8 | 链接 | 44.8 | 39.9 | 41.0 | 53.7 |
LanguageBind_Video_Huge_V1.5_FT | 完全微调 | 超大 | 12 | 即将推出 | - | - | - | - |
📄 许可证
- 本项目的大部分内容遵循MIT许可证,详情见 LICENSE 文件。
- 本项目的数据集遵循CC-BY-NC 4.0许可证,详情见 DATASET_LICENSE 文件。
Align Base
ALIGN是一个视觉-语言双编码器模型,通过对比学习实现图像与文本表征的对齐,利用大规模噪声数据实现先进的跨模态表征效果。
多模态对齐
Transformers 英语

A
kakaobrain
78.28k
25
Biomedvlp CXR BERT Specialized
MIT
针对胸部X光领域优化的语言模型,通过改进词汇表、创新预训练流程和文本增强技术实现卓越性能
多模态对齐
Transformers 英语

B
microsoft
35.69k
28
Languagebind Image
MIT
LanguageBind是一种以语言为中心的多模态预训练方法,通过语言作为不同模态之间的纽带,实现语义对齐。
多模态对齐
Transformers

L
LanguageBind
25.71k
11
Languagebind Video FT
MIT
LanguageBind是一种以语言为中心的多模态预训练方法,通过语言作为不同模态之间的纽带,实现视频、红外、深度、音频等多种模态的语义对齐。
多模态对齐
Transformers

L
LanguageBind
22.97k
4
Languagebind Audio FT
MIT
LanguageBind是一种以语言为中心的多模态预训练方法,通过语言作为不同模态间的纽带实现语义对齐。
多模态对齐
Transformers

L
LanguageBind
12.59k
1
Languagebind Video Merge
MIT
LanguageBind是一种通过基于语言的语义对齐将视频-语言预训练扩展至N模态的多模态模型,获得了ICLR 2024的接收。
多模态对齐
Transformers

L
LanguageBind
10.96k
4
E5 V
E5-V是基于多模态大语言模型的通用嵌入方法,能够处理文本和图像输入并生成统一的嵌入表示。
多模态对齐
Transformers

E
royokong
5,619
22
M BERT Base ViT B
基于BERT-base-multilingual微调的多语言CLIP文本编码器,支持69种语言与CLIP视觉编码器对齐
多模态对齐
M
M-CLIP
3,376
12
M3D CLIP
Apache-2.0
M3D-CLIP是专为3D医学影像设计的CLIP模型,通过对比损失实现视觉与语言的对齐。
多模态对齐
Transformers

M
GoodBaiBai88
2,962
9
Languagebind Video Huge V1.5 FT
MIT
LanguageBind 是一种通过语言实现多模态语义对齐的预训练模型,能够将视频、音频、深度、热成像等多种模态与语言进行绑定,实现跨模态的理解和检索。
多模态对齐
Transformers

L
LanguageBind
2,711
4
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98