コード生成を通じたモジュラーなビジュアル質問応答
モジュラーなビジュアル質問応答のコード生成
投稿者:UCバークレーの博士課程生であるSanjay SubramanianとGoogle Researchの研究科学者であるArsha Nagrani、Perception Team
ビジュアル質問応答(VQA)は、画像または複数の画像に関する質問に対する回答をモデルに求める機械学習のタスクです。従来のVQA手法では、数千の人間による質問-回答ペアが画像に関連付けられたラベル付きトレーニングデータが必要でした。近年、大規模な事前トレーニングの進歩により、少なくとも50のトレーニング例(few-shot)や人間によるVQAトレーニングデータ(zero-shot)なしで優れたパフォーマンスを発揮するVQA手法の開発が行われています。しかし、これらの手法とMaMMUTやVinVLなどの最先端の完全教師ありVQA手法との間にはまだ大きなパフォーマンスの差があります。特に、few-shot手法は空間的な推論、数え上げ、および多段階の推論に苦労しています。さらに、few-shot手法は通常、単一の画像に関する質問に答えることに制限されています。
「Modular Visual Question Answering via Code Generation」では、複雑な推論を必要とするVQAの精度を向上させるために、ACL 2023で発表される予定の論文で、CodeVQAというプログラム合成を使用したビジュアル質問応答のフレームワークを紹介します。具体的には、画像または画像セットに関する質問が与えられた場合、CodeVQAは画像を処理するための簡単なビジュアル関数を持つPythonプログラム(コード)を生成し、このプログラムを実行して回答を決定します。few-shotの設定では、CodeVQAはCOVRデータセットで約3%、GQAデータセットで約2%の改善を示し、従来の手法を上回ることを示しています。
CodeVQA
CodeVQAアプローチでは、PALMなどのコード生成の大規模言語モデル(LLM)を使用してPythonプログラム(コード)を生成します。これらの関数を正しく使用するために、これらの関数の説明と、関連するPythonコードとの対になる視覚的な質問の「in-context」の例が含まれるプロンプトを作成します。これらの例を選択するために、入力質問と注釈付きプログラムの質問のエンベッディングを計算します(ランダムに選択された50の質問のセット)。そして、入力に最も類似した質問を選択し、それらをin-contextの例として使用します。プロンプトと回答を求めたい質問が与えられた場合、LLMはその質問を表すPythonプログラムを生成します。
CodeVQAフレームワークを具体化するために、3つのビジュアル関数である(1)query
、(2)get_pos
、および(3)find_matching_image
を使用します。
Query
は、単一の画像に関する質問に答えるために、few-shot Plug-and-Play VQA(PnP-VQA)メソッドを使用して実装されます。PnP-VQAは、数百万の画像キャプションペアで事前トレーニングされた画像キャプション変換モデルであるBLIPを使用してキャプションを生成し、これらを質問の回答を出力するLLMに入力します。Get_pos
は、物体の説明を入力として受け取り、画像内のその物体の位置を返すオブジェクトローカライザです。この関数はGradCAMを使用して実装されています。具体的には、説明と画像はBLIPのテキスト-画像ジョイントエンコーダを通過し、画像-テキストのマッチングスコアを予測します。GradCAMは、このスコアの画像特徴量に対する勾配を取り、テキストに関連のある領域を見つけます。Find_matching_image
は、複数の画像の質問で与えられた入力フレーズに最も一致する画像を見つけるために使用されます。この関数は、BLIPテキストエンコーダと画像エンコーダを使用してフレーズのテキスト埋め込みと各画像の画像埋め込みを計算します。そして、テキスト埋め込みと各画像埋め込みの内積は、各画像のフレーズへの関連度を表し、この関連度が最大となる画像を選択します。
これらの3つの関数は、非常に少ないアノテーション(例えば、ウェブから収集したテキストや画像テキストのペアと少数のVQAの例)を必要とするモデルを使用して実装できます。さらに、CodeVQAフレームワークは、ユーザーが実装するかもしれない他の関数(例:オブジェクト検出、画像セグメンテーション、または知識ベースの検索)にも簡単に拡張できます。
CodeVQAメソッドのイラスト。まず、大規模言語モデルが質問を表すPythonプログラム(コード)を生成します。この例では、簡単なVQAメソッド(query )が質問の一部に答えるために使用され、オブジェクトローカライザ(get_pos )が言及されたオブジェクトの位置を見つけます。そして、これらの関数の出力を組み合わせて元の質問に対する回答を生成します。 |
結果
CodeVQAフレームワークは、単一画像の質問だけでなく、複数画像の質問に対しても正確にPythonプログラムを生成および実行します。例えば、2つのパンダをそれぞれ表示する2つの画像が与えられた場合、質問として「4匹のパンダが存在すると言えるでしょうか?」といったものがあります。この場合、LLMは画像のペアに関するカウントの質問を、各画像でオブジェクトのカウントを取得するプログラム(クエリ関数を使用)に変換します。そして、両方の画像のカウントを合計して、元の質問の数値と比較してはいまたはいいえの回答を生成します。
CodeVQAは、GQA(単一画像)、COVR(複数画像)、NLVR2(複数画像)の3つの視覚的な推論データセットで評価されます。GQAでは、各メソッドに対して12のインコンテキストの例を提供し、COVRとNLVR2では、各メソッドに対して6つのインコンテキストの例を提供します。以下の表は、CodeVQAがすべての3つのデータセットでベースラインのfew-shot VQAメソッドに比べて一貫して改善されていることを示しています。
メソッド | GQA | COVR | NLVR2 | ||||||||
few-shot PnP-VQA | 46.56 | 49.06 | 63.37 | ||||||||
CodeVQA | 49.03 | 54.11 | 64.04 |
GQA、COVR、NLVR2のデータセットにおける結果。CodeVQAはfew-shot PnP-VQAに比べて一貫して改善されています。指標は完全一致の正解率であり、予測された回答が正解と完全に一致する例の割合です。 |
GQAでは、CodeVQAの精度は、空間的推論の質問ではベースラインよりも約30%高く、”and”の質問では4%高く、”or”の質問では3%高いことがわかりました。3番目のカテゴリには、「写真には塩の入れ物またはスケートボードがありますか?」などのマルチホップの質問が含まれます。生成されたプログラムは以下の通りです。
img = open_image("Image13.jpg")
salt_shakers_exist = query(img, "塩の入れ物はありますか?")
skateboards_exist = query(img, "スケートボードはありますか?")
if salt_shakers_exist == "はい" or skateboards_exist == "はい":
answer = "はい"
else:
answer = "いいえ"
COVRでは、入力画像の数が多いほど、CodeVQAのベースラインに対する利点が大きくなることが表の下に示されています。この傾向は、問題を単一の画像の質問に分解することが有益であることを示しています。
画像の数 | |||||||||||
手法 | 1 | 2 | 3 | 4 | 5 | ||||||
Few-shot PnP-VQA | 91.7 | 51.5 | 48.3 | 47.0 | 46.9 | ||||||
CodeVQA | 75.0 | 53.3 | 48.7 | 53.2 | 53.4 |
結論
CodeVQAは、コード生成に依存してマルチステップの視覚的推論を行うためのfew-shot visual question answeringのフレームワークを提案しています。将来の研究の興味深い方向性としては、使用されるモジュールのセットを拡大し、VQA以外の視覚タスクにも同様のフレームワークを作成することが挙げられます。ただし、CodeVQAのようなシステムを展開するかどうかを検討する際には注意が必要です。なぜなら、視覚言語モデルは社会的なバイアスを示すことが示されているためです。同時に、モノリシックなモデルと比較して、CodeVQAは追加の解釈可能性(Pythonプログラムを通じて)と制御性(プロンプトまたは視覚関数を変更することによって)を提供し、プロダクションシステムで有用です。
謝辞
この研究は、UCバークレーの人工知能研究所(BAIR)とGoogle Researchの共同研究であり、Sanjay Subramanian、Medhini Narasimhan、Kushal Khangaonkar、Kevin Yang、Arsha Nagrani、Cordelia Schmid、Andy Zeng、Trevor Darrell、Dan Kleinによって行われました。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles