Multi-Modal Model
マルチモーダルモデルは、画像、テキスト、音声など複数のデータ型を1つのネットワークで処理します。融合手法、モデルの種類、コードを解説します。
マルチモーダルモデル(multi-modal modelとも表記)は、画像、テキスト、音声、動画、深度マップ、センサー読み取り値など、複数種類のデータ、つまりモダリティを入力に受け取り、場合によっては複数種類のデータを出力する単一の機械学習(ML)モデルです。モダリティをまとめて処理するため、それぞれを他のモダリティのコンテキストとして利用できます。たとえば、写真について音声で質問に答えたり、文の内容に当てはまる動画フレームを見つけたり、カメラとレーダーのデータから同時に歩行者を検出したりできます。音声認識器の出力をテキスト専用のチャットボットに渡すような、個別の単一モダリティモデルを連結したパイプラインでは、各モデルの最終出力を介してのみモダリティ間の情報が渡されます。一方、マルチモーダルモデルは、モダリティ間の関係を学習します。
マルチモーダルモデルの仕組み#
各モダリティは、まずそれに適したエンコーダーを通ります。たとえば、画像にはVision Transformer(ViT)、テキストにはtokenizerと埋め込みレイヤーを使用し、テキストをベクトルに変換します。次にモデルはそれらのベクトルを融合し、統合された表現からテキスト、ラベル、ボックス、アクションを予測します。融合を行う場所によって、主な設計方式が決まります。
- 早期融合: 入力を最初のレイヤーより前、または最初のレイヤーで結合します。位置合わせされたセンサーのデータは、追加の画像チャンネルとして積み重ねられます。Ultralytics YOLO26はこれを直接サポートしており、データセットYAMLの
channelsキーを設定すると、3チャンネルを超える画像で検出器をトレーニングできます。たとえば、RGBに熱画像または深度バンドを加え、1つのマルチチャンネルTIFFとして保存できます。10チャンネルのCOCO8-Multispectralデータセットがその例です。 - 中間融合: 各モダリティを個別にエンコードし、通常はアテンションを介して特徴を中間層で結合します。DeepMindのFlamingoは、凍結した言語モデルにクロスアテンションレイヤーを挿入し、テキストトークンが画像特徴に注目できるようにします。また、多くの視覚言語モデル(VLM)は、画像特徴を「視覚トークン」に変換し、大規模言語モデル(LLM)がプロンプトとともに読み取れるようにします。
- 後期融合: 個別のモデルで予測を行い、最後に結合します。一方のセンサーが故障しても頑健ですが、モダリティ間の相互作用は学習できません。
- 共同埋め込み: エンコーダーによって各モダリティを1つの共有ベクトル空間に写像し、対応するペアが近くに配置されるよう対照学習でトレーニングします。CLIPは画像とテキストを対応付けます。MetaのImageBindは、画像とペアになったデータのみを使用して、画像、テキスト、音声、深度、熱画像、モーションセンサーデータの6種類のモダリティに共有埋め込み空間を拡張します。
どの設計が適しているかは、主にデータとタスクによって決まります。
Vision-and-Language TransformerであるViLTは、コンパクトな早期融合の例です。画像をパッチに分割し、質問の単語とともに埋め込み、結合したシーケンス全体を1つのTransformerで処理します。次の例では、Hugging Face Transformersを通じて視覚的質問応答(VQA)用にファインチューニングされたViLTチェックポイントを使用します。
import requests
import torch
from PIL import Image
from transformers import ViltForQuestionAnswering, ViltProcessor
# ViLT embeds image patches and question tokens into one sequence for a single transformer
processor = ViltProcessor.from_pretrained("dandelin/vilt-b32-finetuned-vqa")
model = ViltForQuestionAnswering.from_pretrained("dandelin/vilt-b32-finetuned-vqa")
image = Image.open(requests.get("https://ultralytics.com/images/bus.jpg", stream=True).raw)
# Ask different questions about the same image; each answer is one of the model's 3,129 answer classes
for question in ["What vehicle is this?", "What color is the bus?", "How many people are there?"]:
inputs = processor(image, question, return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
answer = model.config.id2label[logits.argmax(-1).item()]
print(f"{question} {answer}")モデルは同じ画像からbusとblue and whiteに正しく回答し、人数を数える質問には3と回答します。ただし、写真には4人が写っており、そのうち2人は端で一部が切れています。人数のカウントは、視覚言語モデルによく見られる弱点です。
マルチモーダルモデルの種類#
- 視覚言語モデル: 画像とテキストを読み取り、キャプションの生成、質問への回答、文書の読み取り、プロンプトで指定された物体の位置特定を行います。この位置特定タスクはグラウンディングと呼ばれます。
- ネイティブマルチモーダルアシスタント: 2024年に公開されたOpenAIのGPT-4oは、テキスト、視覚、音声を対象に、単一のネットワークでエンドツーエンドにトレーニングされました。GoogleはGeminiモデルを最初からマルチモーダルとして設計しており、1つのモデルが同じプロンプト内のテキスト、画像、音声、動画を組み合わせて入力できます。
- 音声言語モデル: 音声やサウンドをテキストと組み合わせ、文字起こし、翻訳、音声会話を行います。
- 視覚言語アクションモデル: VLMを拡張し、ロボットのモーター指令を出力します。これにより、ロボットは「リンゴをボウルに入れて」などの指示に従えます。
- センサーフュージョンによる認識: 自動運転車は、カメラ、ライダー、レーダーの入力を1つのモデルで融合し、3D空間で物体を検出して追跡します。
マルチモーダルモデルと関連用語の比較#
- マルチモーダルAI: 単一モダリティモデルを連結するシステムも含め、複数種類のデータを扱うAIのより広い分野です。マルチモーダルモデルは、その分野に含まれる単一のモデルです。
- マルチモーダル学習: 対照的なアライメントやクロスモーダル事前学習など、マルチモーダルモデルを生み出すトレーニング手法です。
- センサーフュージョン: 複数のセンサーからの読み取り値を組み合わせることです。学習済みモデルではなく、カルマンフィルターなどの従来型推定器を使用することもよくあります。
- 基盤モデル: 多くの下流タスクに向けて事前学習された大規模モデルです。近年の基盤モデルの多くはマルチモーダルですが、テキスト専用LLMなど、1つのモダリティだけを扱うものもあります。
課題#
マルチモーダルモデルには、キャプション付き画像や文字起こし済み音声など、大量のペアデータが必要です。また、推論時にカメラがまぶしい光で見えなくなるように、モダリティが欠落したりノイズを含んだりする状況にも対処する必要があります。画像や動画の入力はコストが高く、画像1枚ごとにLLMのコンテキストへ数百から数千のトークンが追加されます。また、モデルが扱いやすいモダリティに頼り、難しいモダリティを無視する場合もあります。初期のVQAモデルは質問文のパターンだけで回答することがよくありました。そのためVQA v2ベンチマークでは、同じ質問に対して異なる回答につながる類似画像を2枚ずつ組み合わせ、画像と質問のペア数をおよそ2倍にしました。










