高橋かずひとのプログラミング、その他、備忘録。

日々調べてたことや、作ってみたものをメモしているブログ。 お決まりの断り文句ですが、このブログに書かれている内容は個人の見解であり、所属する組織の公式見解ではありません。チラ裏。

Large Language Mario:VLMはやっぱり位置関係の把握が苦手🍄?

苦手です👻 ※2024年8月30日現在

と言うか、前々から色々なVLMに対して言及されていた課題ではありますが、、、
(特にGPT4Vで指摘されることが多い印象)

お仕事でプロトタイプ検証した時も感じておりましたが、仕事の内容なので、はてブに書くわけにもいかず、、、
と思っていたところ、からあげさんのLarge Language Marioを試していく中でも、同様の課題を感じたため、メモを残します👀

ちなみにVLMが、実写の認識は得意だけど、レトロなゲーム画像の認識は比較的苦手。と言う可能性もあります。

---

プロンプトで、横方向の相対位置(左端0.0~右端1.0)を訪ねてみたところ、かなり微妙な回答でした👀
GPT-4oの他に、GPT-4o-mini、MobileVLM、MiniCPM-V 2、Heron Blip v1、Gemini1.5 flashあたりも似たような感じ。

 

この位置苦手問題に対して、いくつか改善方法も報告されていたりします。
一例ですが、visual prompting(視覚的プロンプト?)などがあり、以下のような内容をあらかじめ画像に付与すると性能向上が出来ると言うものです。

  1. 入力画像に対して物体検出を行い、バウンディングボックス描画と一意の番号を割り当てて描画する
  2. 入力画像に対してセマンティックセグメンテーションを行い、セグメンテーション結果を半透明で重畳し、一意の番号を割り当てて描画する
  3. 入力画像上に、等間隔のグリッドとグリッド座標を描画する
  4. 注視して欲しい箇所がある場合、その箇所を丸や四角で囲んでおく
  5. etc

とりあえず、準備が簡単な上記の3を試してみましたが、、、
マリオをクリアできるほどではなかったです。残念。

こう何というか分かってるのか分かってねーのか微妙な認識結果が結構出ます↓
(7, 5)とか(8, 5)ってどこやねん🦔

ちなみにプロンプトはざっくりした指示を追加しています「どのグリッドに近いか説明しろ」「グリッドを元に行動を判断しろ」「敵や落とし穴を飛び越える際は2つ前のグリッドからジャンプしろ」など。
もしかしたら、各座標に対して細かく指示を出したら、更に改善するかも?
いや、それじゃあ、もはや擬似プログラミングか。。。( ´ー`)y-~~


昨今のLLM、VLMの進歩スピードを考えると、この問題も一過性のものだと思いますが🤔
物体検出も出来るVLM(Florence-2)なども発表・公開されていますし。

いや、最近LLMでゲームをプレイするAIのニュース見たな。。。何だっけド忘れした。。。👀

 

---

追記(2024年8月30日)

visual prompting の参考サイトや参考文献探しましたが、1と4のURLが見当たりませんでした、、、どこでメモしたんだっけ。。。😇

2の参考資料 → Set-of-Mark Prompting Unleashes Extraordinary Visual Grounding in GPT-4V

3の参考資料 → Scaffolding Coordinates to Promote Vision-Language Coordination in Large Multi-Modal Models

 

---

追記(2024年9月12日)

Qwen2 VL Localization」と言う興味深いデモが、HuggingFace Spaceにありました。
上手くいくパターンもちょいちょいありますが、少し難しくなると、やはり中々うまく行かない感じでした👀