MetaがLLaMA、LLaMA2と公開したことで、どんどん加速しているように見えるLLMに関する研究ですが、LLMに関するOpen Challengesの一つとも考えられている様々なモダリティの取り込みに関する研究で、Video-LLaMAを読んでみました。
Video-LLaMAで出来ること
GitHubのREADMEにある図を見ると分かりやすいです。
例えば、下の図では、Video-LLaMAに「何が聞こえるかを述べて」と尋ねると、「足音と家の中で犬が吠えている」と回答してます。また、「サングラスはかけているか?」に対してもYesと回答していて、動画の視覚的な内容と聴覚的な内容に対して、正しく回答を生成できています。
他にも、動画の時系列な認識が出来ている例として「船はどちらの方向に動いているのか」に対して、正しい方向を回答できています。
Video-LLaMAのアーキテクチャ
Video-LLaMAでは、動画における視覚と聴覚の内容を認識できるようにするために、動画における時間変化を捉え、視覚と聴覚のデータを扱う二つのブランチを持つアーキテクチャを提案しています。
Vision Language Branchは、4つの要素で構成。動画フレームを入力として、フレーム毎の特徴を抽出するためのVisual Encoder、位置情報を追加するPosition Embedding Layer、フレーム毎の特徴を統合するVideo Q-former、LLMのテキスト埋め込みと同じ次元のベクトルを出力するためのLinear Layerです。 Visual Encoderは事前学習済みのViT-G/14とQ-formerを利用、Video Q-formerはBLIP2のQ-formerを実装している。
Audio Language Branchも同じように、4つの要素で構成。動画を短いクリップ(2秒間)にして、クリップ毎の音声データから特徴を抽出するAudio Encoder、位置情報を追加するPosition Embedding Layer、クリップ毎の特徴を統合するAudio Q-former、出力を生成するLinear Layerです。 Audio Encoderは事前学習済みのImageBind、Audio Q-formerもVideo Q-formerと同様にBLIP2のQ-formerを実装している。
Multi Branch Cross Modal Training
学習は2ステージで行い、最初のステージでは大規模なキャプションデータセットを使って学習、次のステージではinstruction following データセットでFine-tuningを行う。 二つのブランチは別々に学習を行うが、Audioとテキストが含まれるデータは希少なので、Audio BranchでもVision Branchと同じ動画キャプション(WebVid2M)、画像キャプション(CC595K)データセットを用いて学習する。Audio Branchは、Audio EncoderとしてImageBindをつかったことで、音声データで学習していないにも関わらず、推論時には音声を理解するように学習されたと述べている。 二つ目のステージでは、MiniGPT-4のimage-detail-description dataset、LLaVAのimage-instruction dataset、Video-Chatのvideo-instruction datasetを統合して使用する。
まとめ
以上が、Video-LLaMAのざっくりの内容です。Vision Language BranchとAudio Language Branchを用意して、動画フレーム/音声データに基づいた回答を行えるようにしているのはシンプルな仕組みだと思います。Audio Language Branchと言いながら、学習には音声データが使われていないのは不思議な感じですが。