Visual Reasoning
視覚的推論とは、画像に対する複数段階の思考を要する質問に答えるAIモデルの能力です。たとえば、数を数える、比較する、空間的な論理を扱うといった処理が含まれます。
視覚推論とは、視覚情報に対する複数の推論ステップを必要とする結論にAIモデルが到達する能力です。条件を満たす物体の数を数える、サイズや位置を比較する、空間関係をたどる、物理的な常識を適用する、抽象的な視覚パターンを完成させる、といった処理が含まれます。マグカップを認識するのは知覚の1ステップですが、「テーブルと同じ素材でできた最も大きな物体の左側にマグカップがありますか?」に答えるには、4つの物体に関する事実を組み合わせるため、複数のステップが必要です。この能力は、事実を提供するコンピュータービジョンと、テキストで推論を連鎖させる推論モデルの中間に位置します。また、画像内の物体の名前を答えるだけでは不十分な質問を用いて、視覚質問応答(VQA)ベンチマークが測定する能力でもあります。
視覚推論を定義するベンチマーク#
視覚推論のテストはAIよりも前から存在します。John C. Ravenのプログレッシブ・マトリックス(1938年)は、3×3のパターンを完成させるタイルを選ぶ課題です。Mikhail Bongardの1967年の問題では、6枚の画像と別の6枚の画像を分ける規則を問います。機械学習のベンチマークは両方の考え方を取り入れ、さらに言語を加えました。
- CLEVR: Stanford大学とFacebook AI ResearchのJustin Johnsonらが、診断用データセットとしてCVPR 2017で公開しました。単純な3D形状からなるレンダリング済みのシーン10万件と、カウント、比較、空間関係、論理をテストする約100万件の生成済み質問で構成され、モデルが推測できてしまうデータセットのバイアスを最小限に抑えています。
- RAVEN: 機械によるパターン補完の学習とテストを目的に、Raven形式の行列を手続き的に生成した2019年のデータセットです。
- ARC: François Cholletが2019年に作成したAbstraction and Reasoning Corpusで、少数の例から変換規則を推論する必要があるグリッドパズルです。
- MathVista: グラフ、プロット、幾何学図形、写真に示された数学問題を扱う2023年のベンチマークです。
- BLINK: 相対深度や視覚的対応関係など、古典的な視覚問題14種類を多肢選択式の問題として再構成した2024年のデータセットです。
BLINKは、流暢なマルチモーダルモデルが人間の知覚にまだ遠く及ばないことを示しました。人間の平均正答率は95.70%でしたが、GPT-4Vは51.26%、Geminiは45.72%で、ランダム推測をそれぞれ13.17ポイント、7.63ポイント上回ったにすぎません。専門的な視覚モデルは、同じ問題をはるかによく解きました。
視覚推論のアプローチ#
エンドツーエンドの視覚言語モデル(VLM)は画像トークンから直接回答し、思考連鎖プロンプティングでは、回答前に中間ステップを書き出させます。2025年4月に公開されたOpenAIのo3とo4-miniは、画像を使った思考にこの機能を拡張しました。推論中、モデルは画像を切り抜いたり、拡大したり、回転させたりして、結果を再確認できます。
ニューロシンボリック手法は、認識と推論を分離します。Jacob Andreasらのニューラルモジュールネットワーク(CVPR 2016)は、「注視」や「再注視」などの再利用可能なモジュールから、質問ごとに小さなネットワークを組み立てました。Kexin YiらのNS-VQA(NeurIPS 2018)は、各CLEVRシーンを属性と位置を持つオブジェクトのテーブルに解析し、質問をプログラムに変換してテーブルに対して実行しました。記号AIに根ざしたこの手法は、回答の完全な追跡可能性を保ちながら、99.8%の正解率を達成しました。ビジュアルプログラミングは同じ考え方を実写真に応用しました。CVPR 2023の最優秀論文賞を受賞したVisProgとViperGPT(ICCV 2023)は、大規模言語モデル(LLM)に、物体検出モデル、深度推定モデル、その他のビジョンツールを呼び出すPythonプログラムを書かせて実行します。
推論の入力となる検出と深度#
相対深度はBLINKの課題の1つであり、視覚プログラムが専門モデルに委任するのに適した質問です。YOLO26は両方の入力を提供します。物体検出モデルが写真を名前付きのボックスに変換し、単眼深度モデルがピクセルごとの深度マップをメートル単位で返すため、数行のロジックで「バスよりカメラに近い人はいますか?」に回答できます。
from ultralytics import YOLO
image = "https://ultralytics.com/images/bus.jpg"
detections = YOLO("yolo26n.pt")(image)[0]
depth = YOLO("yolo26n-depth.pt")(image)[0].depth.data # (H, W) depth map in meters
# Perception to symbols: one (name, median depth) fact per detected object
boxes = detections.boxes.xyxy.int().tolist()
classes = detections.boxes.cls.int().tolist()
facts = []
for (x1, y1, x2, y2), cls in zip(boxes, classes):
facts.append((detections.names[cls], depth[y1:y2, x1:x2].median().item()))
# Reasoning over symbols: compare every person's depth with the bus
bus_depth = min(d for name, d in facts if name == "bus")
closer = [round(d, 1) for name, d in facts if name == "person" and d < bus_depth]
print(f"Bus at {bus_depth:.1f} m; people closer to the camera: {closer}")各回答は特定のボックスと深度値にさかのぼって確認できますが、エンドツーエンドモデルの回答ではそれができません。同じパターンはロボティクスや空間知能のタスクにも拡張でき、ロボットがどの物体を先に取るかを判断する場合や、行動前にシーンを確認するエージェント型ワークフローにも活用できます。
視覚推論と関連用語の違い#
VQAは、画像について質問し短く回答するタスク形式です。一方、視覚推論は、難易度の高いVQAの質問で必要となる複数ステップの能力です。マルチモーダルAIは、推論の有無を問わず、複数のデータ形式を組み合わせるあらゆるモデルを指します。空間推論は、位置、距離、向きを扱う領域です。最も単純な質問には言語モデルすら必要ありません。BLINKの相対深度問題では、印の付いた2点のどちらがカメラに近いかを尋ねますが、深度マップ上の2つのピクセル値を比較するだけで回答できます。










