casa-vl-fusion
ビジョンと言語を融合させるトークン挿入を、テキストの自己注意を維持する効率的なクロスアテンションに置き換えます。テキストトークンがローカルウィンドウ内の画像に注意を向けることが可能になり、前フレームの要点トークンを保持しながら、ストリーミングビデオのメモリコストをほぼ一定に保つことができます。リソースに制約のあるアプリケーション向けに、直接的なトークン挿入より実用的です。
description の原文を見る
Replace token-insertion for fusing vision and language with efficient cross-attention that maintains separate text self-attention. Enables text tokens to attend images within local windows, preserves gist tokens from prior images, and maintains near-constant memory costs for streaming video—more practical than direct token insertion for resource-constrained applications.
SKILL.md 本文
概要
CASA は、ビジョンと言語の融合のための直接的なトークン挿入に代わる実用的な選択肢として、クロスアテンション(CA)を再検討します。トークン挿入は高解像度画像やビデオでは禁止的なほどコストがかかりますが、CA は慎重な設計により効率的な融合を提供します。5 つの重要な設計上の違いが CA の競争力を回復させます。
コア技術
重要な洞察は、クロスアテンションがトークン挿入のパフォーマンスと同等かそれ以上を達成するには、特定の設計上の選択が必要であることです。
5 つの重要な設計上の違い:
# CASA architecture components
class CASAVisionLanguageModel:
def __init__(self):
# D1: Separate parameter layers for cross-attention
self.text_self_attention = SelfAttentionLayer()
self.cross_attention = CrossAttentionLayer() # Not shared
# D2: Joint text-image attention with local windows
self.local_window_size = 128
# D3: Reduced self-attention layers for CA layers
self.num_self_attn = 16
self.num_cross_attn = 8 # Replaces some self-attn
# D4: Optional image token FFN updates
self.image_ffn = FFNLayer()
# D5: Visual history via gist tokens
self.gist_tokens = None
def forward(self, text_tokens, image_features, prev_gist=None):
"""
Process text and image with CASA design principles.
"""
# Maintain text self-attention for robustness
text_hidden = self.text_self_attention(text_tokens)
# Joint attention: text attends to image + preceding text
# within local windows for efficiency
attended = self.cross_attention(
query=text_hidden,
key_value_image=image_features,
key_value_text=text_hidden,
window_size=self.local_window_size
)
# Optional: update image embeddings via FFN
image_features = self.image_ffn(image_features)
# D5: Compress current image into gist tokens for next round
gist_tokens = self.compute_gist(image_features)
return attended, gist_tokens
視覚履歴のためのギストトークン: メモリの増加なしに過去の画像の圧縮された表現を保持します。
def compute_gist_tokens(image_features, num_gist=8):
"""
Compress image features into small number of gist tokens
representing essential visual information for future frames.
"""
# Average pooling over spatial dimensions
spatial_mean = torch.mean(image_features, dim=(1, 2)) # [batch, hidden]
# Project to gist token dimension
gist = apply_projection(spatial_mean, output_dim=hidden_dim)
# Take top-k tokens by importance score
importance_scores = compute_importance(gist)
gist_tokens = select_top_k(gist, importance_scores, k=num_gist)
return gist_tokens
一定のメモリを備えたストリーミング効率: トークン挿入とは異なり、KV キャッシュは画像解像度ではなくギストトークンでスケーリングします。
def streaming_forward(model, text_query, new_frame, history_gist):
"""
Process new frame without storing all prior image tokens.
Memory is O(gist_tokens), not O(image_resolution).
"""
# Current image gist
gist_current = model.compute_gist(new_frame)
# Combine historical gists (constant size)
gist_memory = history_gist + [gist_current]
# Cross-attention over gists (efficient)
output = model.cross_attention(
query=text_query,
key_value=gist_memory
)
# Memory complexity: O(num_frames * gist_tokens)
# vs O(num_frames * image_resolution²) for token insertion
return output, gist_memory
この技術を使用するべき場合
以下の場合に CASA を使用してください:
- 高解像度画像またはビデオストリームを処理している
- メモリバンド幅が制約されている
- ストリーミングを伴うマルチ画像会話
- トークン挿入のメモリコストが禁止的である
この技術を使用してはいけない場合
以下の場合はこのアプローチを避けてください:
- 単一の低解像度画像のタスク(トークン挿入で十分)
- ピクセルレベルの微細な理解が必要(空間的詳細を失う)
- 画像/フレームが非常に少ない(トークン挿入のメモリは管理可能)
実装上の注釈
フレームワークには以下が必要です:
- 別のクロスアテンションとセルフアテンションレイヤーの実装
- 結合されたテキスト画像アテンションのためのローカルウィンドウイングメカニズム
- ギストトークンの計算と圧縮
- ビデオ用のストリーミング推論パイプライン
主要パフォーマンス
- ストリーミングビデオのほぼ一定のメモリコスト
- トークン挿入と同等またはそれ以上のパフォーマンス
- 効率的なマルチ画像会話サポート
- 様々な VLM ベンチマークでの強力なベースライン
参考資料
- トークン挿入への効率的な代替としてのクロスアテンション
- 結合されたテキスト画像アテンションのためのローカルウィンドウイング
- 視覚メモリ圧縮のためのギストトークン
- ストリーミング対応のアーキテクチャ設計
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- ADu2021
- リポジトリ
- ADu2021/skillXiv
- ライセンス
- MIT
- 最終更新
- 2026/3/26
Source: https://github.com/ADu2021/skillXiv / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。