AI・機械学習
中級

Video-LLaVA(ビデオラバ)

画像と動画を統合的に理解できるマルチモーダルLLM。視覚トークンを言語空間に整列させることで、単一モデルで画像・動画双方の質問応答を実現する。

0 回閲覧
0 いいね
2026/6/8 更新
関連タグ
マルチモーダルLLM
動画理解
視覚言語モデル
LLaVA
LanguageBind

Video-LLaVA とは

Video-LLaVA は哈爾浜工業大学(HIT)が 2023 年 11 月に発表した、画像と動画の両方を単一モデルで処理できるマルチモーダル LLM。従来は画像専用モデルと動画専用モデルが分離していたが、Video-LLaVA は共通の視覚言語空間に両モダリティを統合した点が革新的。

アーキテクチャ

LanguageBind 視覚エンコーダ

Video-LLaVA の中核は LanguageBind(言語整列型マルチモーダルエンコーダ)。異なるモダリティを言語埋め込み空間に整列させることで、画像と動画の視覚特徴が同一空間に存在するため、単一の MLP プロジェクタで LLM に接続可能。

全体構成

入力: テキスト + 画像フレーム (or 動画フレーム列)
         ↓
LanguageBind Encoder → 視覚トークン
         ↓
MLP Projector → 言語空間の視覚表現
         ↓
Vicuna-7B/13B LLM
         ↓
出力: テキスト応答

動画の処理: 動画を等間隔でサンプリングしたフレーム列(デフォルト 8 フレーム)を時系列順に結合して入力。

性能ベンチマーク

  • MSVD-QA: 70.7(Video-ChatGPT 64.9 超え)
  • MSRVTT-QA: 59.2(従来 SOTA を大幅更新)
  • ActivityNet-QA Score: 45.3
  • SeedBench Image: 66.1

使用例

from transformers import VideoLlavaProcessor, VideoLlavaForConditionalGeneration
import torch
from decord import VideoReader

model = VideoLlavaForConditionalGeneration.from_pretrained(
    "LanguageBind/Video-LLaVA-7B-hf",
    torch_dtype=torch.float16,
    device_map="auto"
)
processor = VideoLlavaProcessor.from_pretrained("LanguageBind/Video-LLaVA-7B-hf")

vr = VideoReader("sample.mp4")
frame_indices = [int(i) for i in range(0, len(vr), len(vr)//8)][:8]
video_frames = vr.get_batch(frame_indices).asnumpy()

prompt = "USER: <video>\nこの動画の内容を日本語で説明してください。\nASSISTANT:"
inputs = processor(text=prompt, videos=video_frames, return_tensors="pt").to("cuda", torch.float16)
output = model.generate(**inputs, max_new_tokens=200)
print(processor.decode(output[0], skip_special_tokens=True))

活用シーン

  • 動画キャプション生成: 動画内容の自動要約
  • 教育動画 Q&A: 講義動画への質問応答システム
  • 監視カメラ解析: 異常行動の自然言語記述
  • スポーツ実況: プレイ内容の自動実況生成
  • マルチモーダル検索: テキストクエリによる動画シーン検索
この記事について
カテゴリーAI・機械学習
難易度中級
作成日2026/6/8