Video LLaVA 7B
Video-LLaVA是一個通過投影前對齊學習統一視覺表徵的多模態模型,能夠同時處理圖像和視頻的視覺推理任務。
下載量 2,066
發布時間 : 11/17/2023
模型概述
Video-LLaVA通過將統一視覺表徵綁定至語言特徵空間,使大語言模型能同時處理圖像與視頻的視覺推理任務,展現出卓越的跨模態交互能力。
模型特點
投影前對齊
通過將統一視覺表徵綁定至語言特徵空間,實現圖像和視頻的統一處理
跨模態交互
儘管數據集中不含圖像-視頻對,仍展現出卓越的跨模態交互能力
模態互補性
視頻與圖像的互補學習,相比單一模態專用模型具有顯著優勢
模型能力
圖像理解與分析
視頻理解與分析
多模態推理
視覺問答
使用案例
內容理解
視頻內容分析
分析視頻內容並回答相關問題
能夠理解視頻中的動作、場景和事件
圖像內容理解
理解圖像內容並進行描述
能夠識別圖像中的對象、場景和關係
教育
多媒體教學輔助
幫助理解教學視頻和圖像內容
提供對教學材料的深入理解
🚀 Video-LLaVA:通過投影前對齊學習統一視覺表示
Video-LLaVA是一個在圖像和視頻交互方面表現卓越的項目。它通過將統一視覺表示綁定到語言特徵空間,讓大語言模型能同時對圖像和視頻進行視覺推理。並且在多模態互補學習上性能出色,優於專門針對圖像或視頻的模型。
🚀 快速開始
試用演示
- Gradio Web UI:強烈推薦通過以下命令試用我們的Web演示,它集成了Video-LLaVA目前支持的所有功能。我們也在Huggingface Spaces上提供了在線演示。
python -m videollava.serve.gradio_web_server
- CLI推理:
python -m videollava.serve.cli --model-path "LanguageBind/Video-LLaVA-7B" --file "path/to/your/video.mp4" --load-4bit
python -m videollava.serve.cli --model-path "LanguageBind/Video-LLaVA-7B" --file "path/to/your/image.jpg" --load-4bit
✨ 主要特性
💡 簡單基線,通過投影前對齊學習統一視覺表示
通過將統一視覺表示綁定到語言特徵空間,使大語言模型能夠同時對圖像和視頻執行視覺推理能力。
🔥 高性能,視頻和圖像互補學習
大量實驗證明了模態的互補性,與專門為圖像或視頻設計的模型相比,具有顯著優勢。
📦 安裝指南
- Python >= 3.10
- Pytorch == 2.0.1
- CUDA版本 >= 11.7
- 安裝所需的包:
git clone https://github.com/PKU-YuanGroup/Video-LLaVA
cd Video-LLaVA
conda create -n videollava python=3.10 -y
conda activate videollava
pip install --upgrade pip # 啟用PEP 660支持
pip install -e .
pip install -e ".[train]"
pip install flash-attn --no-build-isolation
pip install decord opencv-python git+https://github.com/facebookresearch/pytorchvideo.git@28fe037d212663c6a24f373b94cc5d478c8c1a1d
💻 使用示例
基礎用法
以下是圖像推理的基礎代碼示例:
import torch
from videollava.constants import IMAGE_TOKEN_INDEX, DEFAULT_IMAGE_TOKEN
from videollava.conversation import conv_templates, SeparatorStyle
from videollava.model.builder import load_pretrained_model
from videollava.utils import disable_torch_init
from videollava.mm_utils import tokenizer_image_token, get_model_name_from_path, KeywordsStoppingCriteria
def main():
disable_torch_init()
image = 'videollava/serve/examples/extreme_ironing.jpg'
inp = 'What is unusual about this image?'
model_path = 'LanguageBind/Video-LLaVA-7B'
cache_dir = 'cache_dir'
device = 'cuda'
load_4bit, load_8bit = True, False
model_name = get_model_name_from_path(model_path)
tokenizer, model, processor, _ = load_pretrained_model(model_path, None, model_name, load_8bit, load_4bit, device=device, cache_dir=cache_dir)
image_processor = processor['image']
conv_mode = "llava_v1"
conv = conv_templates[conv_mode].copy()
roles = conv.roles
image_tensor = image_processor.preprocess(image, return_tensors='pt')['pixel_values']
if type(image_tensor) is list:
tensor = [image.to(model.device, dtype=torch.float16) for image in image_tensor]
else:
tensor = image_tensor.to(model.device, dtype=torch.float16)
print(f"{roles[1]}: {inp}")
inp = DEFAULT_IMAGE_TOKEN + '\n' + inp
conv.append_message(conv.roles[0], inp)
conv.append_message(conv.roles[1], None)
prompt = conv.get_prompt()
input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX, return_tensors='pt').unsqueeze(0).cuda()
stop_str = conv.sep if conv.sep_style != SeparatorStyle.TWO else conv.sep2
keywords = [stop_str]
stopping_criteria = KeywordsStoppingCriteria(keywords, tokenizer, input_ids)
with torch.inference_mode():
output_ids = model.generate(
input_ids,
images=tensor,
do_sample=True,
temperature=0.2,
max_new_tokens=1024,
use_cache=True,
stopping_criteria=[stopping_criteria])
outputs = tokenizer.decode(output_ids[0, input_ids.shape[1]:]).strip()
print(outputs)
if __name__ == '__main__':
main()
高級用法
以下是視頻推理的代碼示例:
import torch
from videollava.constants import IMAGE_TOKEN_INDEX, DEFAULT_IMAGE_TOKEN
from videollava.conversation import conv_templates, SeparatorStyle
from videollava.model.builder import load_pretrained_model
from videollava.utils import disable_torch_init
from videollava.mm_utils import tokenizer_image_token, get_model_name_from_path, KeywordsStoppingCriteria
def main():
disable_torch_init()
video = 'videollava/serve/examples/sample_demo_1.mp4'
inp = 'Why is this video funny?'
model_path = 'LanguageBind/Video-LLaVA-7B'
cache_dir = 'cache_dir'
device = 'cuda'
load_4bit, load_8bit = True, False
model_name = get_model_name_from_path(model_path)
tokenizer, model, processor, _ = load_pretrained_model(model_path, None, model_name, load_8bit, load_4bit, device=device, cache_dir=cache_dir)
video_processor = processor['video']
conv_mode = "llava_v1"
conv = conv_templates[conv_mode].copy()
roles = conv.roles
video_tensor = video_processor(video, return_tensors='pt')['pixel_values']
if type(video_tensor) is list:
tensor = [video.to(model.device, dtype=torch.float16) for video in video_tensor]
else:
tensor = video_tensor.to(model.device, dtype=torch.float16)
print(f"{roles[1]}: {inp}")
inp = ' '.join([DEFAULT_IMAGE_TOKEN] * model.get_video_tower().config.num_frames) + '\n' + inp
conv.append_message(conv.roles[0], inp)
conv.append_message(conv.roles[1], None)
prompt = conv.get_prompt()
input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX, return_tensors='pt').unsqueeze(0).cuda()
stop_str = conv.sep if conv.sep_style != SeparatorStyle.TWO else conv.sep2
keywords = [stop_str]
stopping_criteria = KeywordsStoppingCriteria(keywords, tokenizer, input_ids)
with torch.inference_mode():
output_ids = model.generate(
input_ids,
images=tensor,
do_sample=True,
temperature=0.1,
max_new_tokens=1024,
use_cache=True,
stopping_criteria=[stopping_criteria])
outputs = tokenizer.decode(output_ids[0, input_ids.shape[1]:]).strip()
print(outputs)
if __name__ == '__main__':
main()
📚 詳細文檔
訓練與驗證
訓練和驗證說明請參考 TRAIN_AND_VALIDATE.md。
🔧 技術細節
模型亮點
Video-LLaVA在數據集沒有圖像 - 視頻對的情況下,展現出了圖像和視頻之間卓越的交互能力。通過將統一視覺表示綁定到語言特徵空間,使大語言模型能夠同時對圖像和視頻執行視覺推理能力。大量實驗證明了模態的互補性,與專門為圖像或視頻設計的模型相比,具有顯著優勢。
📄 許可證
- 本項目的大部分內容遵循Apache 2.0許可證,詳情見 LICENSE 文件。
- 該服務僅供研究預覽,僅用於非商業用途,需遵守LLaMA的模型許可證、OpenAI生成數據的使用條款以及ShareGPT的隱私政策。如果您發現任何潛在的違規行為,請聯繫我們。
📰 最新消息
- [2024.01.27] 👀👀👀 我們的 MoE-LLaVA 發佈了!一個30億參數的稀疏模型性能超過了70億參數的密集模型。
- [2024.01.17] 🔥🔥🔥 我們的 LanguageBind 已被ICLR 2024接收!
- [2024.01.16] 🔥🔥🔥 我們重新組織了代碼並支持LoRA微調,查看 finetune_lora.sh。
- [2023.11.30] 🤝 感謝社區的慷慨貢獻,OpenXLab的演示 現已開放。
- [2023.11.23] 我們正在訓練一個新的強大模型。
- [2023.11.21] 🤝 查看由 @nateraw 創建的 replicate演示,他慷慨地支持了我們的研究!
- [2023.11.20] 🤗 Hugging Face演示 和 所有代碼及數據集 現已可用!歡迎 關注 👀 此倉庫以獲取最新更新。
👍 致謝
- LLaVA 我們基於此代碼庫進行開發,它是一個高效的大語言和視覺助手。
- Video-ChatGPT 為評估代碼和數據集做出了重要貢獻。
🙌 相關項目
- LanguageBind 一個開源的五模態基於語言的檢索框架。
- Chat-UniVi 該框架使模型能夠有效利用有限數量的視覺標記。
✏️ 引用
如果您在研究中發現我們的論文和代碼有用,請考慮給我們點個星 :star: 並引用 :pencil:。
@article{lin2023video,
title={Video-LLaVA: Learning United Visual Representation by Alignment Before Projection},
author={Lin, Bin and Zhu, Bin and Ye, Yang and Ning, Munan and Jin, Peng and Yuan, Li},
journal={arXiv preprint arXiv:2311.10122},
year={2023}
}
@article{zhu2023languagebind,
title={LanguageBind: Extending Video-Language Pretraining to N-modality by Language-based Semantic Alignment},
author={Zhu, Bin and Lin, Bin and Ning, Munan and Yan, Yang and Cui, Jiaxi and Wang, HongFa and Pang, Yatian and Jiang, Wenhao and Zhang, Junwu and Li, Zongwei and others},
journal={arXiv preprint arXiv:2310.01852},
year={2023}
}
✨ 星標歷史
🤝 貢獻者
Xclip Base Patch32
MIT
X-CLIP是CLIP的擴展版本,用於通用視頻語言理解,通過對比學習在(視頻,文本)對上訓練,適用於視頻分類和視頻-文本檢索等任務。
文本生成視頻
Transformers 英語

X
microsoft
309.80k
84
LTX Video
其他
首個基於DiT的視頻生成模型,能夠即時生成高質量視頻,支持文本轉視頻和圖像+文本轉視頻兩種場景。
文本生成視頻 英語
L
Lightricks
165.42k
1,174
Wan2.1 14B VACE GGUF
Apache-2.0
Wan2.1-VACE-14B模型的GGUF格式版本,主要用於文本到視頻的生成任務。
文本生成視頻
W
QuantStack
146.36k
139
Animatediff Lightning
Openrail
極速文本生成視頻模型,生成速度比原版AnimateDiff快十倍以上
文本生成視頻
A
ByteDance
144.00k
925
V Express
V-Express是一個基於音頻和麵部關鍵點條件生成的視頻生成模型,能夠將音頻輸入轉換為動態視頻輸出。
文本生成視頻 英語
V
tk93
118.36k
85
Cogvideox 5b
其他
CogVideoX是源自清影的視頻生成模型的開源版本,提供高質量的視頻生成能力。
文本生成視頻 英語
C
THUDM
92.32k
611
Llava NeXT Video 7B Hf
LLaVA-NeXT-Video是一個開源多模態聊天機器人,通過視頻和圖像數據混合訓練獲得優秀的視頻理解能力,在VideoMME基準上達到開源模型SOTA水平。
文本生成視頻
Transformers 英語

L
llava-hf
65.95k
88
Wan2.1 T2V 14B Diffusers
Apache-2.0
萬2.1是一套全面開放的視頻基礎模型,旨在突破視頻生成的邊界,支持中英文文本生成視頻、圖像生成視頻等多種任務。
文本生成視頻 支持多種語言
W
Wan-AI
48.65k
24
Wan2.1 T2V 1.3B Diffusers
Apache-2.0
萬2.1是一套全面開放的視頻基礎模型,具備頂尖性能、支持消費級GPU、多任務支持、視覺文本生成和高效視頻VAE等特點。
文本生成視頻 支持多種語言
W
Wan-AI
45.29k
38
Wan2.1 T2V 14B
Apache-2.0
萬2.1是一套綜合性開源視頻基礎模型,具備文本生成視頻、圖像生成視頻、視頻編輯、文本生成圖像及視頻生成音頻等多任務能力,支持中英雙語文本生成。
文本生成視頻 支持多種語言
W
Wan-AI
44.88k
1,238
精選推薦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