Googleのブログによると、最近の進歩により、限られたトレーニング例や人間による注釈付きのVQAデータがなくても良好に機能するビジュアル質問応答(VQA)手法の開発が可能になった。これらの改善にもかかわらず、完全に監視された方法と比較すると、パフォーマンスにはまだ差がある。 これに対処するために、研究者らは、モジュール式の視覚的な質問応答のためのコード生成を利用するフレームワークであるCodeVQAを開発した。このフレームワークはモジュール式の推論を可能にし、VQAモデルの機能を拡張する。

CodeVQAは、プログラム合成を利用して、モデルが画像を処理し、視覚的な質問に正確に回答できるようにするPythonコードを生成する。CodeVQAは、事前トレーニングされたモデルのみに依存するのではなくコードを生成することで、特に複雑な推論を含むシナリオでの精度を向上させることを目指している。少数ショット設定では、CodeVQAは以前のアプローチよりもCOVRデータセットで約3%、GQAデータセットで約2%優れている。

CodeVQAアプローチでは、コード記述大規模言語モデル(LLM)を利用して、視覚的な質問応答用のPythonコードを生成する。LLMは、関数の説明と限られた数の「コンテキスト内」の例を含むプロンプトによってガイドされる。これらの例は、関連するPythonコードと組み合わせられた視覚的な質問で構成され、LLMに関連するコンテキストを提供する。

CodeVQAは、query、get_pos、find_matching_imageという3つの主要なビジュアル関数に焦点を当てている。クエリー機能は、少数ショットのプラグ アンドプレーVQA (PnP-VQA)方式を使用して、単一の画像に関する質問に回答する。PnP-VQAは、画像キャプション変換機能であるBLIPを利用してキャプションを生成し、LLMによって処理されて回答が生成される。

get_pos関数はオブジェクトローカライザーとして機能し、画像内のオブジェクトの位置を決定する。GradCAMを利用して、画像とテキストの一致スコアを計算し、画像の特徴に関する勾配を分析することで、最も関連性の高い領域を特定する。

find_matching_image関数は複数画像の質問用に設計されており、指定された語句に最もよく一致する画像を選択する。BLIPテキストおよび画像エンコーダーを使用してテキストと画像の埋め込みを計算し、フレーズに対する各画像の関連性を評価する。関連性が最も高い画像が選択される。

CodeVQAフレームワークはこれら3つの機能を拡張でき、ユーザーはオブジェクト検出、画像セグメンテーション、ナレッジベース検索などの追加タスクを実装できる。 ウェブおよび少数のVQAサンプルから収集したテキストと画像とテキストのペアを利用して、最小限の注釈だけが必要なモデルを活用する。

GoogleのBLOG

“Modular visual question answering via code generation”

https://ai.googleblog.com/2023/07/modular-visual-question-answering-via.html
より引用

Modular visual question answering via code generation
Modular visual question answering via code generation