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