モデル概要
モデル特徴
モデル能力
使用事例
🚀 ViCA-7B: 視空間認知アシスタント
ViCA-7Bは、室内ビデオ環境における視空間推論のために特化して微調整されたビジョン言語モデルです。このモデルは、新しく提案されたViCA-322Kデータセットを使用して訓練され、室内ビデオに対する空間推論能力に優れています。

あなたは、私たちの別のプロジェクト ViCA2 にも興味を持つかもしれません。詳細は以下のリンクを参照してください。
🚀 クイックスタート
このセクションでは、ViCA-7Bの概要や特徴について説明します。
✨ 主な機能
- 室内ビデオ環境における視空間推論能力に特化
- VSI-Benchで最先端の性能を達成
- 複雑な空間推論タスクに対応
📦 インストール
READMEにインストール手順が記載されていないため、このセクションは省略されます。
💻 使用例
# This inference script is adapted from:
# https://huggingface.co/lmms-lab/LLaVA-Video-7B-Qwen2
# pip install git+https://github.com/LLaVA-VL/LLaVA-NeXT.git
from llava.model.builder import load_pretrained_model
from llava.mm_utils import get_model_name_from_path, process_images, tokenizer_image_token
from llava.constants import IMAGE_TOKEN_INDEX, DEFAULT_IMAGE_TOKEN, DEFAULT_IM_START_TOKEN, DEFAULT_IM_END_TOKEN, IGNORE_INDEX
from llava.conversation import conv_templates, SeparatorStyle
from PIL import Image
import requests
import copy
import torch
import sys
import warnings
from decord import VideoReader, cpu
import numpy as np
import json
from tqdm import tqdm
import os
warnings.filterwarnings("ignore")
def load_video(video_path, max_f
📚 詳細ドキュメント
モデルアーキテクチャと訓練戦略
ViCA-7Bは、LLaVA-NeXTフレームワークをベースに構築されており、言語バックボーンに Qwen2-7B 、ビジュアルエンコーダに SigLIP を使用しています。
主要な訓練特徴
- 固定長ビジュアルトークン化
各ビデオは均一に64フレームにサンプリングされ、各フレームは210個のビジュアルトークンにエンコードされます。これにより、1サンプルあたり合計 13,440個のビジュアルトークン が生成されます。この固定長設計により、バッチ間で一貫したメモリ使用量と安定した最適化が保証されます。 - 軽量プロジェクタによるマルチモーダルアライメント
単純なMLPベースのプロジェクタがビジュアル埋め込みを言語埋め込み空間にマッピングし、訓練と推論の両方でビデオコンテンツとテキストプロンプトの効果的な融合を可能にします。 - DeepSpeedによる効率的な分散訓練
訓練は、 8× NVIDIA H100 80GB GPU 上で DeepSpeed ZeRO-3 Offload を使用して行われます。これにより、デバイス間でパラメータとオプティマイザの状態が完全に分割され、大きなバッチサイズをサポートし、GPUメモリオーバーヘッドを最小限に抑えます。 - 混合精度計算 (fp16)
精度を損なうことなく、計算を高速化し、メモリ使用量を削減するために、 混合精度訓練 (fp16) が採用されています。これはZeRO-3パーティショニングと組み合わせて使用され、訓練の拡張性をさらに向上させます。
訓練は 55時間 にわたって行われ、基本的な空間推論サブセットと複雑な空間推論サブセットの両方をカバーしています。
訓練ダイナミクス
図2: ViCA-7Bの微調整中の訓練損失、学習率スケジュール、および勾配ノルムの曲線。これらの曲線は、DeepSpeed ZeRO-3設定での安定した最適化プロセスと滑らかな収束を示しています。
データセット
ViCA-7Bは、2つの補完的なデータセットで微調整されています。
- ViCA-322K:
大規模なデータセットで、 基本的な空間推論タスク (物体の距離、サイズ、数、出現順など)と自然言語質問やシーン理解を含む 複雑な空間推論タスク の両方をカバーしています。このデータセットは、モデルの空間推論能力の核心を形成しています。 - ViCA-thinking-2.68k:
最終的な回答を出力する前に、モデルが 段階的な推論過程を生成する能力 を強化するための命令調整に使用されるデータセットです。これにより、より解釈可能で認知的に整合した応答生成がサポートされます。
詳細については、上記の各データセットのページを参照してください。
評価: VSI-BENCHベンチマーク
図3: VSI-BenchにおけるViCA-7Bとベースラインモデルの定量的比較。ViCA-7Bは、数値タスクと選択肢タスクの両方で最高の全体的な性能を達成しています。
CSRデータの影響
設定 | 平均スコア |
---|---|
基本のみ (281K) | 55.35 |
CSRを含む全データ (322K) | 60.56 |
CSR(複雑な空間推論)は汎化能力を向上させ、 学習を加速 します。中間チェックポイントでは顕著な性能向上が見られます(例:50 - 55%で+2.02)。
データ規模と性能の関係
データ使用量が 5% → 60% の間で性能が大幅に向上します。 80% を超えると、性能の向上が頭打ちになります。これは、データセットがモデルの容量と適切にマッチしていることを示しています。
図4: 様々な訓練データサイズ(5%から100%)でのViCA-7Bの性能。全データセット(複雑な空間推論、CSRを含む)は、基本のみの設定を常に上回っています。特に、CSRを強化したモデルは、50%から55%の間で+2.02のスコア向上を示し、全規模で+4.75の最終的な性能向上を達成しています。80%を超えると性能が頭打ちになり、データセットがモデルの容量と適切に整合していることを示しています。
中間チェックポイントと評価出力
詳細な分析と再現性をサポートするために、訓練データの 5%ごとに保存された2セットの中間チェックポイント を提供しています。これらのモデルは1エポックで訓練されており、訓練の進行に伴う性能の変化を理解するのに役立ちます。
また、各チェックポイントに対応する 生の評価出力 (例: .json
予測ファイル)も公開しています。これらの出力を生成するために使用される評価スクリプトは、GitHubリポジトリで入手できます。
全データセット (ViCA-322K: 基本 + CSR)
このシリーズは、基本的な空間推論と複雑な空間推論(CSR)の両方を含む全訓練セットに対応しています。
データ使用量 | チェックポイント | データ使用量 | チェックポイント |
---|---|---|---|
5% | nkkbr/ViCA-5p |
55% | nkkbr/ViCA-55p |
10% | nkkbr/ViCA-10p |
60% | nkkbr/ViCA-60p |
15% | nkkbr/ViCA-15p |
65% | nkkbr/ViCA-65p |
20% | nkkbr/ViCA-20p |
70% | nkkbr/ViCA-70p |
25% | nkkbr/ViCA-25p |
75% | nkkbr/ViCA-75p |
30% | nkkbr/ViCA-30p |
80% | nkkbr/ViCA-80p |
35% | nkkbr/ViCA-35p |
85% | nkkbr/ViCA-85p |
40% | nkkbr/ViCA-40p |
90% | nkkbr/ViCA-90p |
45% | nkkbr/ViCA-45p |
95% | nkkbr/ViCA-95p |
50% | nkkbr/ViCA-50p |
100% (このリポジトリ) | nkkbr/ViCA |
生の評価出力はこちらで入手できます。
基本のみのサブセット (ViCA-322K: 基本)
このシリーズは、ViCA-322Kの基本的な空間推論サブセットのみで訓練されており、CSRの例は含まれていません。
データ使用量 | チェックポイント | データ使用量 | チェックポイント |
---|---|---|---|
5% | nkkbr/ViCA-base-5p |
55% | nkkbr/ViCA-base-55p |
10% | nkkbr/ViCA-base-10p |
60% | nkkbr/ViCA-base-60p |
15% | nkkbr/ViCA-base-15p |
65% | nkkbr/ViCA-base-65p |
20% | nkkbr/ViCA-base-20p |
70% | nkkbr/ViCA-base-70p |
25% | nkkbr/ViCA-base-25p |
75% | nkkbr/ViCA-base-75p |
30% | nkkbr/ViCA-base-30p |
80% | nkkbr/ViCA-base-80p |
35% | nkkbr/ViCA-base-35p |
85% | nkkbr/ViCA-base-85p |
40% | nkkbr/ViCA-base-40p |
90% | nkkbr/ViCA-base-90p |
45% | nkkbr/ViCA-base-45p |
95% | nkkbr/ViCA-base-95p |
50% | nkkbr/ViCA-base-50p |
100% | nkkbr/ViCA-base |
生の評価出力はこちらで入手できます。
データソース別チェックポイント
完全な ViCA-322K データセットは私たちによって作成されましたが、基礎となるビデオと関連するメタデータは3つの異なる室内ビデオデータセットから取得されています。
各データソースがモデル性能にどのように寄与しているかをよりよく理解するために、ViCA-7Bを各データソースのデータのみを使用したViCA-322Kのサブセットで微調整しました。各サブセットについて、利用可能なデータの 10%ごとに増分 して訓練されたチェックポイントを提供しています。
すべてのチェックポイントに対応する 生の評価出力 (例: .json
予測ファイル)も提供されています。
ARKitScenesのみのチェックポイント
データ使用量 | チェックポイント | データ使用量 | チェックポイント |
---|---|---|---|
10% | nkkbr/ViCA-ARKitScenes-10p |
60% | nkkbr/ViCA-ARKitScenes-60p |
20% | nkkbr/ViCA-ARKitScenes-20p |
70% | nkkbr/ViCA-ARKitScenes-70p |
30% | nkkbr/ViCA-ARKitScenes-30p |
80% | nkkbr/ViCA-ARKitScenes-80p |
40% | nkkbr/ViCA-ARKitScenes-40p |
90% | nkkbr/ViCA-ARKitScenes-90p |
50% | nkkbr/ViCA-ARKitScenes-50p |
100% | nkkbr/ViCA-ARKitScenes |
📋 生の評価出力: ARKitScenesの結果
ScanNet++のみのチェックポイント
データ使用量 | チェックポイント | データ使用量 | チェックポイント |
---|---|---|---|
10% | nkkbr/ViCA-ScanNetPP-10p |
60% | nkkbr/ViCA-ScanNetPP-60p |
20% | nkkbr/ViCA-ScanNetPP-20p |
70% | nkkbr/ViCA-ScanNetPP-70p |
30% | nkkbr/ViCA-ScanNetPP-30p |
80% | nkkbr/ViCA-ScanNetPP-80p |
40% | nkkbr/ViCA-ScanNetPP-40p |
90% | nkkbr/ViCA-ScanNetPP-90p |
50% | nkkbr/ViCA-ScanNetPP-50p |
100% | nkkbr/ViCA-ScanNetPP |
📋 生の評価出力: ScanNet++の結果
ScanNetのみのチェックポイント
データ使用量 | チェックポイント | データ使用量 | チェックポイント |
---|---|---|---|
10% | nkkbr/ViCA-ScanNet-10p |
60% | nkkbr/ViCA-ScanNet-60p |
20% | nkkbr/ViCA-ScanNet-20p |
70% | nkkbr/ViCA-ScanNet-70p |
30% | nkkbr/ViCA-ScanNet-30p |
80% | nkkbr/ViCA-ScanNet-80p |
40% | nkkbr/ViCA-ScanNet-40p |
90% | nkkbr/ViCA-ScanNet-90p |
50% | nkkbr/ViCA-ScanNet-50p |
100% | nkkbr/ViCA-ScanNet |
📋 生の評価出力: ScanNetの結果
追加の調査
時間命令の影響
プロンプトに64フレームのタイムスタンプを含めると、性能がわずかに 低下 します。これは、モデルが時間的なアライメントを活用できず、命令の冗長性によって悪影響を受けることを示しています。
図5: 明示的なフレームタイムスタンプ(64個の値)を追加すると、VSI-Benchでのモデル性能が低下します。これは、時間的なアライメントを利用できず、プロンプトの長さに敏感であることを示しています。
フレーム数の増加
入力を64フレームから128フレームに増やすと、ビジュアルトークンの数が2倍(13,440 → 26,880)になりますが、 性能向上は見られません 。これは、固定トークン長への過学習とアーキテクチャの柔軟性の欠如を示しています。
図6: 64フレームと128フレームの入力の比較。ビジュアルトークンの数が2倍になっても、性能は変わらず、固定長入力への過学習と可変長シーケンスへの適応性の限界を示しています。
潜在的な応用分野
ViCA-7Bは、幅広い空間的に根付いたマルチモーダルアプリケーションをサポートします。
- 室内ナビゲーションアシスタント
- ロボットの計画と空間クエリ
- スマートルームの配置とARレイアウト分析
- エンボディアードAIエージェントのためのシーン理解
既知の制限事項
- 時間的推論能力が限られている:時間命令が効果的に利用されていない
- フレームスケーリングの問題:モデルは固定入力長を期待している
- 深度/ポイントクラウドがサポートされていない:RGBビデオ入力のみがサポートされている
- ゼロショット汎化能力は良好ですが、タスクに依存しないわけではない
推論
ここでは、VSI-Benchの質問に対してViCA-7Bを使用した実行可能な例を示します。
# This inference script is adapted from:
# https://huggingface.co/lmms-lab/LLaVA-Video-7B-Qwen2
# pip install git+https://github.com/LLaVA-VL/LLaVA-NeXT.git
from llava.model.builder import load_pretrained_model
from llava.mm_utils import get_model_name_from_path, process_images, tokenizer_image_token
from llava.constants import IMAGE_TOKEN_INDEX, DEFAULT_IMAGE_TOKEN, DEFAULT_IM_START_TOKEN, DEFAULT_IM_END_TOKEN, IGNORE_INDEX
from llava.conversation import conv_templates, SeparatorStyle
from PIL import Image
import requests
import copy
import torch
import sys
import warnings
from decord import VideoReader, cpu
import numpy as np
import json
from tqdm import tqdm
import os
warnings.filterwarnings("ignore")
def load_video(video_path, max_f
🔧 技術詳細
ViCA-7Bの訓練には、固定長ビジュアルトークン化、軽量プロジェクタによるマルチモーダルアライメント、DeepSpeedによる効率的な分散訓練、混合精度計算などの技術が用いられています。これらの技術により、モデルは室内ビデオに対する空間推論能力を向上させることができます。
📄 ライセンス
このプロジェクトは、Apache-2.0ライセンスの下で公開されています。










