Languagebind Image
LanguageBindは言語を中心としたマルチモーダル事前学習手法で、言語を異なるモダリティ間の絆として利用し、セマンティックアラインメントを実現します。
ダウンロード数 25.71k
リリース時間 : 10/6/2023
モデル概要
LanguageBindは言語ベースのセマンティックアラインメントにより、ビデオ-言語事前学習をNモダリティに拡張し、ビデオ、赤外線、深度、音声など様々なモダリティと言語の共同学習をサポートします。
モデル特徴
言語中心のマルチモーダルアラインメント
言語を異なるモダリティ間の絆として利用し、言語モダリティの豊富なセマンティック情報を活用してクロスモーダルアラインメントを実現します。
マルチモーダルで完全にアラインメントされたデータセット
VIDAL-10Mデータセットを提供し、1000万のデータを含み、ビデオ、赤外線、深度、音声および対応する言語をカバーします。
マルチビュー拡張記述
メタデータ、空間および時間情報を組み合わせてマルチビュー記述を生成し、ChatGPTを使用して言語セマンティクスを強化します。
モデル能力
ビデオ-言語アラインメント
音声-言語アラインメント
赤外線-言語アラインメント
深度-言語アラインメント
マルチモーダル共同学習
使用事例
ビデオ理解
ビデオセマンティック分析
言語記述を通じてビデオ内容を理解する
複数のデータセットでSOTA性能を達成
音声処理
音声セマンティック理解
音声内容と言語記述をアラインメントする
5つのデータセットでSOTA性能を達成
## 🚀 【ICLR 2024 🔥】LanguageBind: Extending Video-Language Pretraining to N-modality by Language-based Semantic Alignment
LanguageBindは、言語ベースのセマンティックアラインメントにより、ビデオ言語の事前学習をNモダリティに拡張する手法です。高い性能を発揮し、多様なモダリティのデータを扱うことができます。
<div align="center">
<img src="https://s11.ax1x.com/2024/02/01/pFMDAm9.png" width="250" style="margin-bottom: 0.2;"/>
</div>
もしこのプロジェクトが気に入ったら、最新のアップデートを受け取るためにGitHubでスターをつけてください⭐
## 🚀 クイックスタート
このセクションでは、LanguageBindの基本的な使い方を説明します。まずは必要な環境をセットアップし、デモを試してみましょう。
## ✨ 主な機能
### 💡 高い性能で、中間モダリティを必要としない
LanguageBindは、言語を中心としたマルチモーダル事前学習アプローチです。言語モダリティは十分に研究され、豊富なセマンティクスを含んでいるため、異なるモダリティ間の結びつきとして言語を利用します。
* 最初の図は、LanguageBindのアーキテクチャを示しています。LanguageBindは、セグメンテーションや検出タスクに簡単に拡張でき、潜在的に無制限のモダリティに対応できます。
### ⚡️ マルチモーダルで、完全にアラインされた大量のデータセット
私たちは、**VIDAL - 10M**を提案しています。これは、ビデオ、赤外線、深度、音声、およびそれに対応する言語を含む**1000万のデータ**で、視覚モダリティ以外のデータを大幅に拡張しています。
* 2番目の図は、私たちが提案するVIDAL - 10Mデータセットを示しており、ビデオ、赤外線、深度、音声、および言語の5つのモダリティを含んでいます。
### 🔥 学習のためのマルチビュー強化記述
私たちは、言語にマルチビュー強化を行っています。**メタデータ**、**空間**、および**時間**を組み合わせたマルチビュー記述を生成し、言語のセマンティック情報を大幅に強化しています。さらに、ChatGPTで言語を強化し、各モダリティの言語をアラインさせるための良好なセマンティック空間を作成しています。
## 📰 ニュース
* **[2024.01.27]** 👀👀👀 私たちの[MoE - LLaVA](https://github.com/PKU - YuanGroup/MoE - LLaVA)がリリースされました!30億パラメータの疎モデルが、70億パラメータの密モデルを上回る性能を発揮します。
* **[2024.01.16]** 🔥🔥🔥 私たちのLanguageBindがICLR 2024で採択されました!スコアは6(3)8(6)6(6)6(6)です [こちら](https://openreview.net/forum?id=QmZKc7UZCy¬eId=OgsxQxAleA)。
* **[2023.12.15]** 💪💪💪 私たちは💥💥💥 VIDALデータセットを拡張し、現在は**1000万のビデオテキストデータ**を持っています。**LanguageBind_Video 1.5**をリリースしました。[モデルズー](#-モデルズー)を確認してください。
* **[2023.12.10]** 私たちは💥💥💥 VIDALデータセットを拡張し、現在は**1000万の深度データと1000万のサーマルデータ**を持っています。サーマルデータと深度データを[Hugging Face](https://huggingface.co/datasets/LanguageBind/VIDAL - Depth - Thermal)にアップロード中で、全体のプロセスは1 - 2ヶ月かかる予定です。
* **[2023.11.27]** 🔥🔥🔥 私たちは[論文](https://arxiv.org/abs/2310.01852)を緊急ゼロショットの結果で更新しました。✨ [結果](#emergency - results)を確認してください。
* **[2023.11.26]** 💥💥💥 すべてのテキストソースと対応するYouTube IDを[こちら](DATASETS.md)でオープンソース化しました。
* **[2023.11.26]** 📣📣📣 完全にファインチューニングされた**ビデオと音声**をオープンソース化し、再び性能を向上させました。[モデルズー](#-モデルズー)を確認してください。
* **[2023.11.22]** 完全にファインチューニングされたバージョンをリリースする予定で、**巨大な**バージョンは現在学習中です。
* **[2023.11.21]** 💥 [DATASETS.md](DATASETS.md)でサンプルデータを公開しています。興味のある方は、コードを修正して独自のデータで学習させることができます。
* **[2023.11.20]** 🚀🚀🚀 [Video - LLaVA](https://github.com/PKU - YuanGroup/Video - LLaVA)は、LanguageBindエンコーダをベースに、大規模なビジュアル言語モデルを構築し、🎉SOTAの性能を達成しています。
* **[2023.10.23]** 🎶 LanguageBind - Audioは、🎉🎉🎉**5つのデータセットで最先端(SOTA)の性能**を達成しました。✨ [結果](#multiple - modalities)を確認してください。
* **[2023.10.14]** 😱 より強力なLanguageBind - Videoをリリースしました。✨ [結果](#video - language)を確認してください!ビデオのチェックポイントは、Huggingface Model Hubで更新されました!
* **[2023.10.10]** サンプルデータを提供しています。[assets](assets)で見つけることができ、[緊急ゼロショットの使い方](#emergency - zero - shot)について説明されています。
* **[2023.10.07]** チェックポイントは🤗 [Huggingface Model](https://huggingface.co/LanguageBind)で利用可能です。
* **[2023.10.04]** コードと[デモ](https://huggingface.co/spaces/LanguageBind/LanguageBind)が利用可能になりました!最新のアップデートを受け取るために、このリポジトリを**ウォッチ**👀してください。
## 🤗 デモ
### ローカルデモ
LanguageBindが現在サポートしているすべての機能を組み込んだウェブデモを試すことを強くおすすめします。
```bash
python gradio_app.py
オンラインデモ
Huggingface Spacesにオンラインデモを提供しています。このデモでは、音声と言語、ビデオと言語、深度と画像など、モダリティと言語の類似度を計算することができます。
🛠️ 必要条件とインストール
- 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
🐳 モデルズー
表の名前は、異なるエンコーダモデルを表しています。たとえば、LanguageBind/LanguageBind_Video_FT
は完全にファインチューニングされたバージョンを表し、LanguageBind/LanguageBind_Video
はLoRAチューニングされたバージョンを表します。
推奨されるAPIの使い方では、自由に置き換えることができます。完全にファインチューニングされたバージョンの方が性能が高いため、おすすめです。
Modality | LoRA tuning | Fine - tuning |
---|---|---|
Video | LanguageBind_Video | LanguageBind_Video_FT |
Audio | LanguageBind_Audio | LanguageBind_Audio_FT |
Depth | LanguageBind_Depth | - |
Thermal | LanguageBind_Thermal | - |
Version | Tuning | Model size | Num_frames | HF Link | MSR - VTT | DiDeMo | ActivityNet | MSVD |
---|---|---|---|---|---|---|---|---|
LanguageBind_Video | LoRA | Large | 8 | Link | 42.6 | 37.8 | 35.1 | 52.2 |
LanguageBind_Video_FT | Full - tuning | Large | 8 | Link | 42.7 | 38.1 | 36.9 | 53.5 |
LanguageBind_Video_V1.5_FT | Full - tuning | Large | 8 | Link | 42.8 | 39.7 | 38.4 | 54.1 |
LanguageBind_Video_V1.5_FT | Full - tuning | Large | 12 | Coming soon | - | - | - | - |
LanguageBind_Video_Huge_V1.5_FT | Full - tuning | Huge | 8 | Link | 44.8 | 39.9 | 41.0 | 53.7 |
LanguageBind_Video_Huge_V1.5_FT | Full - tuning | Huge | 12 | Coming soon | - | - | - | - |
💻 使用例
基本的な使用法
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 ]]
高度な使用法
緊急ゼロショット
LanguageBindは各モダリティを結びつけるため、緊急ゼロショットも可能です。使い方は非常に簡単です。
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.]]
異なるブランチによるX言語タスク
LanguageBindは、異なるタスクを処理するために異なるブランチに分解することができます。なお、画像エンコーダはOpenCLIPから初期化され、ファインチューニングは行っていません。
サーマル
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)
🤖 API
すべてのモダリティの前処理コードをオープンソース化しています。Huggingfaceのモデルハブまたはローカルからモデル(例:LanguageBind/LanguageBind_Thermal
)をロードするには、以下のコードスニペットを使用できます。
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。
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アーキテクチャに基づく中国語抽出型QAモデルで、与えられたテキストから回答を抽出するタスクに適しています。
質問応答システム 中国語
R
uer
2,694
98