Views
No views yet

python gradio_app.py1git clone https://github.com/PKU-YuanGroup/LanguageBind
2cd LanguageBind
3pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
4pip install -r requirements.txtLanguageBind/LanguageBind_Video_FT represents the fully fine-tuned version, while LanguageBind/LanguageBind_Video represents the LoRA-tuned version.| 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 |
LanguageBind/LanguageBind_Thermal) from the model hub on Huggingface or on local, you can use the following code snippets!1import torch
2from languagebind import LanguageBind, to_device, transform_dict, LanguageBindImageTokenizer
3
4if __name__ == '__main__':
5 device = 'cuda:0'
6 device = torch.device(device)
7 clip_type = {
8 'video': 'LanguageBind_Video_FT', # also LanguageBind_Video
9 'audio': 'LanguageBind_Audio_FT', # also LanguageBind_Audio
10 'thermal': 'LanguageBind_Thermal',
11 'image': 'LanguageBind_Image',
12 'depth': 'LanguageBind_Depth',
13 }
14
15 model = LanguageBind(clip_type=clip_type, cache_dir='./cache_dir')
16 model = model.to(device)
17 model.eval()
18 pretrained_ckpt = f'lb203/LanguageBind_Image'
19 tokenizer = LanguageBindImageTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir/tokenizer_cache_dir')
20 modality_transform = {c: transform_dict[c](model.modality_config[c]) for c in clip_type.keys()}
21
22 image = ['assets/image/0.jpg', 'assets/image/1.jpg']
23 audio = ['assets/audio/0.wav', 'assets/audio/1.wav']
24 video = ['assets/video/0.mp4', 'assets/video/1.mp4']
25 depth = ['assets/depth/0.png', 'assets/depth/1.png']
26 thermal = ['assets/thermal/0.jpg', 'assets/thermal/1.jpg']
27 language = ["Training a parakeet to climb up a ladder.", 'A lion climbing a tree to catch a monkey.']
28
29 inputs = {
30 'image': to_device(modality_transform['image'](image), device),
31 'video': to_device(modality_transform['video'](video), device),
32 'audio': to_device(modality_transform['audio'](audio), device),
33 'depth': to_device(modality_transform['depth'](depth), device),
34 'thermal': to_device(modality_transform['thermal'](thermal), device),
35 }
36 inputs['language'] = to_device(tokenizer(language, max_length=77, padding='max_length',
37 truncation=True, return_tensors='pt'), device)
38
39 with torch.no_grad():
40 embeddings = model(inputs)
41
42 print("Video x Text: \n",
43 torch.softmax(embeddings['video'] @ embeddings['language'].T, dim=-1).detach().cpu().numpy())
44 print("Image x Text: \n",
45 torch.softmax(embeddings['image'] @ embeddings['language'].T, dim=-1).detach().cpu().numpy())
46 print("Depth x Text: \n",
47 torch.softmax(embeddings['depth'] @ embeddings['language'].T, dim=-1).detach().cpu().numpy())
48 print("Audio x Text: \n",
49 torch.softmax(embeddings['audio'] @ embeddings['language'].T, dim=-1).detach().cpu().numpy())
50 print("Thermal x Text: \n",
51 torch.softmax(embeddings['thermal'] @ embeddings['language'].T, dim=-1).detach().cpu().numpy())1Video x Text:
2 [[9.9989331e-01 1.0667283e-04]
3 [1.3255903e-03 9.9867439e-01]]
4Image x Text:
5 [[9.9990666e-01 9.3292067e-05]
6 [4.6132666e-08 1.0000000e+00]]
7Depth x Text:
8 [[0.9954276 0.00457235]
9 [0.12042473 0.8795753 ]]
10Audio x Text:
11 [[0.97634876 0.02365119]
12 [0.02917843 0.97082156]]
13Thermal x Text:
14 [[0.9482511 0.0517489 ]
15 [0.48746133 0.5125386 ]]1print("Video x Audio: \n", torch.softmax(embeddings['video'] @ embeddings['audio'].T, dim=-1).detach().cpu().numpy())
2print("Image x Depth: \n", torch.softmax(embeddings['image'] @ embeddings['depth'].T, dim=-1).detach().cpu().numpy())
3print("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.]]1import torch
2from languagebind import LanguageBindThermal, LanguageBindThermalTokenizer, LanguageBindThermalProcessor
3
4pretrained_ckpt = 'LanguageBind/LanguageBind_Thermal'
5model = LanguageBindThermal.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
6tokenizer = LanguageBindThermalTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
7thermal_process = LanguageBindThermalProcessor(model.config, tokenizer)
8
9model.eval()
10data = thermal_process([r"your/thermal.jpg"], ['your text'], return_tensors='pt')
11with torch.no_grad():
12 out = model(**data)
13
14print(out.text_embeds @ out.image_embeds.T)1import torch
2from languagebind import LanguageBindDepth, LanguageBindDepthTokenizer, LanguageBindDepthProcessor
3
4pretrained_ckpt = 'LanguageBind/LanguageBind_Depth'
5model = LanguageBindDepth.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
6tokenizer = LanguageBindDepthTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
7depth_process = LanguageBindDepthProcessor(model.config, tokenizer)
8
9model.eval()
10data = depth_process([r"your/depth.png"], ['your text.'], return_tensors='pt')
11with torch.no_grad():
12 out = model(**data)
13
14print(out.text_embeds @ out.image_embeds.T)1import torch
2from languagebind import LanguageBindVideo, LanguageBindVideoTokenizer, LanguageBindVideoProcessor
3
4pretrained_ckpt = 'LanguageBind/LanguageBind_Video_FT' # also 'LanguageBind/LanguageBind_Video'
5model = LanguageBindVideo.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
6tokenizer = LanguageBindVideoTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
7video_process = LanguageBindVideoProcessor(model.config, tokenizer)
8
9model.eval()
10data = video_process(["your/video.mp4"], ['your text.'], return_tensors='pt')
11with torch.no_grad():
12 out = model(**data)
13
14print(out.text_embeds @ out.image_embeds.T)1import torch
2from languagebind import LanguageBindAudio, LanguageBindAudioTokenizer, LanguageBindAudioProcessor
3
4pretrained_ckpt = 'LanguageBind/LanguageBind_Audio_FT' # also 'LanguageBind/LanguageBind_Audio'
5model = LanguageBindAudio.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
6tokenizer = LanguageBindAudioTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
7audio_process = LanguageBindAudioProcessor(model.config, tokenizer)
8
9model.eval()
10data = audio_process([r"your/audio.wav"], ['your audio.'], return_tensors='pt')
11with torch.no_grad():
12 out = model(**data)
13
14print(out.text_embeds @ out.image_embeds.T)1import torch
2from languagebind import LanguageBindImage, LanguageBindImageTokenizer, LanguageBindImageProcessor
3
4pretrained_ckpt = 'LanguageBind/LanguageBind_Image'
5model = LanguageBindImage.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
6tokenizer = LanguageBindImageTokenizer.from_pretrained(pretrained_ckpt, cache_dir='./cache_dir')
7image_process = LanguageBindImageProcessor(model.config, tokenizer)
8
9model.eval()
10data = image_process([r"your/image.jpg"], ['your text.'], return_tensors='pt')
11with torch.no_grad():
12 out = model(**data)
13
14print(out.text_embeds @ out.image_embeds.T)1@misc{zhu2023languagebind,
2 title={LanguageBind: Extending Video-Language Pretraining to N-modality by Language-based Semantic Alignment},
3 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},
4 year={2023},
5 eprint={2310.01852},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV}
8}