LanguageBind/VIDAL-Depth-Thermal
收藏数据集概述
数据集简介
LanguageBind是一个多模态预训练方法,通过语言作为不同模态之间的绑定,扩展了视频-语言预训练到多模态领域。该方法的核心是使用语言作为跨不同模态的绑定,因为语言模态已被广泛研究并包含丰富的语义信息。
数据集亮点
- 高性能,无需中间模态:LanguageBind是一个以语言为中心的多模态预训练方法,通过语言作为不同模态之间的绑定,无需中间模态。
- 多模态、完全对齐且庞大的数据集:提出了VIDAL-10M数据集,包含1000万条数据,涵盖视频、红外、深度、音频及其对应的语言,极大地扩展了视觉模态之外的数据。
- 多视角增强描述:通过结合元数据、空间和时间信息,增强了语言的语义信息,并进一步使用ChatGPT增强语言,为每个模态对齐的语言创建良好的语义空间。
数据集详情
数据集版本
- VIDAL-10M:包含1000万条数据,涵盖视频、红外、深度、音频及其对应的语言。
模型版本
- LanguageBind_Video:LoRA调优版本,适用于视频模态。
- LanguageBind_Video_FT:完全调优版本,适用于视频模态,性能更强。
- LanguageBind_Audio:LoRA调优版本,适用于音频模态。
- LanguageBind_Audio_FT:完全调优版本,适用于音频模态,性能更强。
- LanguageBind_Depth:LoRA调优版本,适用于深度模态。
- LanguageBind_Thermal:LoRA调优版本,适用于红外模态。
模型性能
- LanguageBind_Video:在多个数据集上表现优异,如MSR-VTT、DiDeMo、ActivityNet和MSVD。
- LanguageBind_Audio:在5个数据集上达到最先进(SOTA)性能。
使用方法
安装要求
- Python >= 3.8
- Pytorch >= 1.13.1
- CUDA Version >= 11.6
安装步骤
bash 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 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 = flb203/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:
", torch.softmax(embeddings[video] @ embeddings[language].T, dim=-1).detach().cpu().numpy()) print("Image x Text: ", torch.softmax(embeddings[image] @ embeddings[language].T, dim=-1).detach().cpu().numpy()) print("Depth x Text: ", torch.softmax(embeddings[depth] @ embeddings[language].T, dim=-1).detach().cpu().numpy()) print("Audio x Text: ", torch.softmax(embeddings[audio] @ embeddings[language].T, dim=-1).detach().cpu().numpy()) print("Thermal x Text: ", torch.softmax(embeddings[thermal] @ embeddings[language].T, dim=-1).detach().cpu().numpy())
紧急零样本推理
python print("Video x Audio: ", torch.softmax(embeddings[video] @ embeddings[audio].T, dim=-1).detach().cpu().numpy()) print("Image x Depth: ", torch.softmax(embeddings[image] @ embeddings[depth].T, dim=-1).detach().cpu().numpy()) print("Image x Thermal: ", torch.softmax(embeddings[image] @ embeddings[thermal].T, dim=-1).detach().cpu().numpy())
许可证
- 项目代码:MIT许可证
- 数据集:CC-BY-NC 4.0许可证
引用
BibTeX @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} }




