Image Captioning
画像キャプショニングは、視覚言語モデルを使って画像を自然言語で説明します。用途や制約、YOLOを使ったキャプションのグラウンディングについて解説します。
画像キャプション生成は、画像の自然言語による説明を自動生成するAIタスクです。たとえば、街路の写真に対して、システムが「交差点で歩行者のそばを市バスが通り過ぎています」と出力することがあります。このタスクは視覚認識と言語生成を組み合わせているため、モデルは重要な内容を特定し、オブジェクト間の関係を理解して、その情報を明確に表現する必要があります。
キャプション生成には、一般に視覚データとテキストデータを扱うビジョン・ランゲージモデルが使われます。人が手作業で書いた写真のキャプションとは異なり、AI生成のキャプションは、画像とテキストのペアから学習したパターンに基づく予測です。
画像キャプション生成の仕組み#
画像キャプション生成システムは通常、連携する2つの段階で構成されます。
- ビジョンエンコーダーは、ピクセルを、オブジェクト、テクスチャ、位置、より広いシーン情報を表す特徴表現に変換します。
- 言語デコーダーは、視覚特徴を単語の列に変換します。
多くのシステムではTransformerデコーダーを使用します。開始トークンから始まり、次のトークンを予測してシーケンスに追加する処理を、終了トークンが生成されるか長さの上限に達するまで繰り返します。このトークン単位の処理を自己回帰生成と呼びます。
エンコーダーとデコーダーの全体的なループは次のようになります。
アテンション機構により、デコーダーは各単語を選ぶ際に関連する画像領域に注目できます。「bus」を生成するときは車両に重点を置き、「street」を生成するときは周囲の道路に注目する場合があります。完全な画像キャプション生成モデルは、画像特徴量、トークン化、クロスアテンション、テキストデコーダーを組み合わせます。
トレーニングでは通常、1つ以上の人手によるキャプションとペアにした画像が必要です。同じ画像でも「犬と遊ぶ子ども」や「ペットにボールを投げる若者」のように、異なる表現で正しく説明できるため、複数のキャプションが役立ちます。
関連するビジョンタスクとの違い#
画像キャプション生成はいくつかのAIタスクと重なりますが、出力は異なります。
- 画像分類は、「ビーチ」など、画像全体に1つ以上のラベルを割り当てます。キャプション生成では、物体、動作、属性、コンテキストを説明する文章を生成します。
- 物体検出は、バウンディングボックスを使って、事前に定義された物体を識別し、位置を特定します。キャプション生成ではそうした物体に言及できますが、「2人の自転車乗りが車の横を走っている」のように、物体同士の関係も説明します。
- 光学式文字認識は、標識、文書、パッケージに見える文字を抽出します。キャプションは、すべての文字を書き起こすのではなく、シーンを要約します。
- 視覚的質問応答は、画像に関する特定の質問に回答します。キャプション生成では、質問を必要とせず、一般的な説明を作成します。
- 代替テキストは、特定の文脈における画像の目的を伝えます。自動生成されたキャプションは下書きとして使えますが、装飾的な画像、機能的な画像、複雑な画像には、W3Cの画像チュートリアルに沿って異なる対応が必要なため、自動的に適切な代替テキストになるとは限りません。
実際のアプリケーション#
-
アクセシブルなWebコンテンツ: コンテンツ管理プラットフォームは、新しくアップロードされた写真の説明文の下書きを生成できます。ニュース画像の場合、編集者が正確さと関連性を確認する前に、キャプションで主な人物、場所、動作を特定することがあります。複雑な図には、一般的な視覚的要約ではなく、構造化された長文の説明が必要です。
-
検索可能なメディアライブラリ: 小売業者やメディア企業は、大規模な画像コレクションのキャプションを生成し、生成されたテキストをインデックス化できます。これにより、ファイルに手作業でタグが付けられていなくても、ユーザーは「テントのそばにある赤いバックパック」のような語句で検索できます。キャプションは視覚的な埋め込み表現やメタデータを補完し、大規模なカタログでの検索性を高めます。
Ultralytics YOLOによる実践的なグラウンディング#
特に混雑したシーンや見慣れないシーンでは、キャプション生成モデルが根拠のない詳細を作り出すことがあります。実践的な設計の1つは、Ultralytics YOLO26から得られる構造化された観察結果で生成をグラウンディングすることです。以下に示す、文書化されたYOLOの予測ワークフローでは、検出されたオブジェクト名を抽出します。これらの名前は、後段の言語コンポーネントが視覚的な文脈として利用できます。
from ultralytics import YOLO
# 後段のキャプション生成モデルの根拠となるオブジェクトを検出します
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# 検出結果を簡潔なテキストの文脈に変換します
detections = result.summary()
object_names = sorted({item["name"] for item in detections})
visual_context = ", ".join(object_names)
print(visual_context)このワークフローは最終的なキャプションを生成しません。代わりに、言語モデルの出力を制約できる、検証可能なオブジェクトラベルを提供します。カスタムドメインの場合、Ultralytics Platformでは、キャプション生成パイプラインの認識コンポーネント向けに、クラウドでのデータセットアノテーション、トレーニング、デプロイ、モニタリングを行えます。
制限事項と評価#
キャプションでは重要な物体が省略されたり、関係性が誤認されたり、データセットバイアスが再現されたり、見えていない詳細がハルシネーションとして生成されたりすることがあります。画像説明APIが返すような信頼度スコアは、候補となる説明の順位付けに役立ちますが、流暢な文章が必ずしも事実に即しているとは限りません。
そのため、評価ではオブジェクトの網羅性、事実との整合性、読みやすさ、バイアス、想定する対象者にとっての有用性を検証する必要があります。複数のキャプションが同じように正しい場合があるため、チームは生成AIの評価や、より広範なNIST AIリスク管理フレームワークなどの実践例に沿って、自動評価と人によるレビューを組み合わせる必要があります。アクセシビリティ、医療、安全性が重要な用途、または一般公開コンテンツでは、特に人による承認が重要です。










