はじめに
昨年11月のOpenAI DevDayにて、前回投稿したCode Interpriterも本家API(Assistant API)のみで利用できるようになるなど、ChatGPTの機能追加が連打されました。中でもGPT-4 with vision(以降「GPT-4V」)は、遂に画像の認識も可能となり、いよいよマルチモーダルの本領が表れたと言えます。
一方、後を追うように、Googleも12月にGemini(画像認識可)を発表し、熾烈な追い上げを見せています。LLaVa-1.5など、OSSのマルチモーダル大規模言語モデル(以降「MLLM」) の動向もあり、今年も生成AIを取り巻く状況は、複雑な様相を呈することになりそうです。
今回はGPT-4VとGemini Proの画像認識について、気になった点を試してみました。どちらも現時点ではプレビュー版のため、真価の程は定かではありませんし、私が恣意的に選択した画像やプロンプトを使用した上での雑感となりますのでご了承ください。また「画像」には個人情報や企業の機密情報が含まれやすいため、試される際には十分にご注意ください。
GPT-4V
以下のAPIドキュメントに利用方法や制限などの記載があります。GPT-4の全機能が利用できる訳ではなく、回答のJSON固定化などもまだできません。モデルは「gpt-4-vision-preview」となり、2023年4月までのデータで学習されています。
モデルの安全性に関しては、SystemCardのドキュメントに記載されています。プライバシーやセキュリティへの配慮から、応答が抑制される画像もあります。
以下のレポートでは、多岐にわたるタスクの例を紹介しています。
Gemini Pro
こちらも現時点はプレビュー版で、今のところ無料で利用できます。画像だけでなく動画も入力できます。近々リリース予定とされるGemini Ultraは、いくつかのベンチマークにおいてGPT-4を凌ぐ性能と言われています。
試した環境
GPT-4V
Google Colabにて「GPT-4V」のAPIを実行して確認しました。(OpenAIのPlayGroundはまだ対応されていませんでした)
モデルには「gpt-4-vision-preview」を指定し、画像(PNG)をBASE64文字列に変換してパラメータに指定しています。
Gemini Pro
Google AI StudioのPlayGroundを利用し、モデルには「Gemini Pro Vision」を指定しています。プレビュー版の段階では、レートリミットの制限や、入力データが学習に利用される可能性がある点に留意が必要です。
試したこと
両者の画像認識力については、すでに様々な記事で紹介されています。
一方で、GPT-4Vの以下の制限事項が気になりました。
画像中のオブジェクトの位置の特定に課題があるように読み取れます。
位置の特定が曖昧であるとすると、応答文の正確性にも影響しそうです。
また、画像のどの部分を基に応答をしたかの判断の根拠を示す意味でも、物体検出、レイアウト情報の抽出といったタスクや、今後期待されるGUIナビゲーションでの利用においても、位置の特定は重要であると考えます。
そこで、非常に単純な図形のみを配置した二次元の画像を使って、GPT-4VとGemini Proでオブジェクトの位置情報の取得を確認してみました。
GPT-4Vは、このプロンプトに対して、以下のように「オブジェクトの正確な位置情報を提供することはできません。」と応答しました。
一方でGemini Proは拒否することなく、オブジェクトの座標とサイズを返しました。
しかしながら、Gemini Proの応答文を基に、領域を赤枠でオーバーレイしてみると、オブジェクトの位置関係は漠然と掴んでいそうではあるものの、期待する結果ではありませんでした。
絶対座標の取得にGPT-4Vが拒否反応を示しているように思えたため、相対的な位置情報を取得するようにプロンプトを変更してみました。
するとGPT-4Vも結果を返してくれるようになりました。
位置情報もかなり近づいてきました。
Gemini Proの位置情報も前回より改善されました。
その後、プロンプトを調整したり(「あなたは位置情報の特定に関して卓越した専門知識を持つエキスパートです。」などを加えたり)、領域をマーキングしてヒントを与えてみたりもしましたが、正確な位置を捉えることはできませんでした。
もう少し複雑な画像でも確認してみました。
プロンプトの調整などで改善の余地があるかもしれませんが、モデルの特性のようにも見受けられます。
現時点のGPT-4VとGemini Proですと、オブジェクトの位置情報取得にはMLLMを用いず、事前の画像解析によりオブジェクトを特定し、位置を把握しておき、画像内に番号などをマーキングしておくことで、MLLMには付番された領域の解釈のみを任せる方が賢明なのかもしれません。
このようなアプローチには、「Visual Referring Prompting」や「Set-of-Mark(SoM)」のような手法があり、入力画像の「意味のある領域」を事前にマーキングすることで、応答精度を向上させることができるようです。
おわりに
両者ともに、現時点では画像中のオブジェクトの位置の特定には課題があるようでした。正式版で改善されるのでしょうか。
以下のベンチマークの結果を見ると、様々なMLLMが、独自の強みを持っており、位置の特定に強いモデルもあるようですので、今後試してみたいです。