【Set-of-Mark Visual Prompting for GPT-4V (SoM)】高度な情報解析ができるGPTツールを使ってみた
WEELメディア事業部テックリサーチャーの中田です。
10月20日、画像認識AIの能力を上げてくれるプロンプト技術の「Set-of-Mark Visual Prompting for GPT-4V」がGitHubで公開され、誰でも高性能な画像認識ができるようになりました。
これにより、ただLLMに画像を理解させるだけでなく、画像内のオブジェクトに関する詳細な質問もできるんです…!
本技術に関する、とあるXのツイートではなんと500を超えるいいねを獲得しており、結構な数の人たちから注目されていることがわかります。
この記事ではSet-of-Mark Visual Prompting for GPT-4Vの使い方や、有効性の検証まで行います。本記事を熟読することで、Set-of-Mark Visual Prompting for GPT-4Vの凄さを実感し、普通のGPT-4Vのプロンプトには戻れなくなるでしょう。
ぜひ、最後までご覧ください。
Set-of-Mark Visual Prompting for GPT-4V(SoM)の概要
「Set-of-Mark Visual Prompting for GPT-4V」は、画像に数字マークを付け加えることで、GPT-4VなどのLLMに対して、「画像をより深く理解し、解釈すること」をサポートするプロンプト技術です。
例えば、以下の画像のように、入力画像内の各オブジェクトに対して数字マークを振り分けることで、GPT-4Vの画像認識の能力を高めているのです。
これらのマークは、画像の特定の部分を強調するため、LLMがその部分について詳しく説明したり、質問に答えたりするのに役立ちます。例えば、「6は何ですか?」というプロンプトをSet-of-Mark Visual Prompting for GPT-4Vに入力すれば、GPT-4Vが「6の物体はイスです」のように答えてくれるでしょう。
具体的なメカニズムは非常にシンプルで、以下の手順です。
- SoMという物体検出モデルを用いて、画像内のオブジェクトにナンバリングする
- オブジェクトにナンバリングした画像をGPT-4Vに読ませる
- GPT-4V側で通常通りプロンプトを入力する
Set-of-Mark Visual Prompting for GPT-4V(SoM)の料金体系
Set-of-Mark Visual Prompting for GPT-4Vはオープンソースであり、MITライセンスの下で公開されているため、無料で利用できます。
ただし、GPT-4Vを利用するための使用料がかかるため、その点を考慮しておく必要があります。
なお、GPT-4Vについて知りたい方はこちらの記事をご覧ください。
→【GPT-4V】ChatGPTが画像入力と音声入力に対応!使い方〜実践まで徹底解説
Set-of-Mark Visual Prompting for GPT-4V(SoM)の使い方
まず、以下のコマンドを実行してください。
# install SEEM
pip install git+https://github.com/UX-Decoder/Segment-Everything-Everywhere-All-At-Once.git@package
# install SAM
pip install git+https://github.com/facebookresearch/segment-anything.git
# install Semantic-SAM
pip install git+https://github.com/UX-Decoder/Semantic-SAM.git@package
# install Deformable Convolution for Semantic-SAM
cd ops && sh make.sh && cd ..
# common error fix:
python -m pip install 'git+https://github.com/MaureenZOU/detectron2-xyz.git'
次に、SOMのモデルをダウンロードします。
sh download_ckpt.sh
最後に、以下のコマンドを実行することで、デモページを立ち上げることができます。
python demo_som.py
また、以下のデモページ(ブラウザ上)でも実行できます。
参考記事:SoM : Set-of-Mark Prompting Unleashes Extraordinary Visual Grounding in GPT-4V
上記の「Run」を実行すると、右上の画像のように「数字のマーク」が、各オブジェクトの上に表示されている画像が生成されます。
この画像をダウンロードして、ChatGPTのGPT-4Vを開き、この画像を読み取らせましょう。そして、以下のようなプロンプトを打ち込んでみてください。
- Example1: What is on the left side of the right laptop?(右のノートパソコンの左側には何がありますか?)
- Example2: Can you count how many fruits and what are the categories in the basket?(バスケットの中の果物の数とカテゴリーを数えられる?)
このExample1のプロンプトを入力した結果が、以下の通りです。
On the left side of the right laptop, there is a blue desk lamp.(右側のラップトップの左側には、青いデスクランプがあります。)
正解!
このように、本プロジェクトは、画像を少し編集して、そのうえでChatGPTに普通に読み込ませるだけの「ちょっとした工夫」なのです。
ただし、このちょっとした工夫がとても強力で、GPT-4Vをとても賢くするのだとか。
なお、GPT-4Vを超えると言われていたマルチモーダルLLMについて知りたい方はこちらの記事をご覧ください。
→【Vcoder】GPT-4V超えの最強マルチモーダルLLMの使い方〜実践まで
Set-of-Mark Visual Prompting for GPT-4V(SoM)を実際に使ってみた
ここでは、Set-of-Mark Visual Prompting for GPT-4Vの威力を確かめるために、以下の画像で確かめてみます。
これは、あらかじめSoMでナンバリングしたものです。これをChatGPTの有料版の方で、画像のアップロードを行い、プロンプトを打ち込んでみようと思います。プロンプトは以下の通りです。
Can you list the categories of each mark with spatial identifier?(各マークのカテゴリーを空間的識別子とともにリストアップできますか?)
ナンバリングしたオブジェクトを、それぞれ説明しようというものです。結果が以下の通りです。
1. Grill Pan: This is a cooking utensil, part of the grill setup where excess oil or marinade can drip.
2. Grilled Food: These look like two pieces of grilled food, possibly fish, based on their shape and texture.
3. Marinade Bowl: A container that likely holds a marinade or sauce for the food being grilled.
4. Charred Food: More grilled items, these appear to be charred, suggesting they might have been left on the grill for a longer time.
5. Potted Plant: Part of the background decor, possibly kept on the table for aesthetic purposes.
6. Cup or Tumbler: A beverage container, likely there for someone to drink while they cook or eat.
7. Charcoal: The heat source for the grill, essential for grilling.
8. Grill Grate: Part of the grill where food is placed for cooking.
9. Raw Food: This appears to be raw meat that is prepared to be grilled.
10. Napkin or Wipe: Might be used for cleaning hands or utensils during or after the grilling process.
11. Bowl of Fruits: A bowl that contains fruits, here specifically green grapes, which might be used as a side dish or for dessert.
12. Tongs: A tool used for flipping or moving food on the grill.
13. Grilled Fruit: A piece of fruit on the grill, possibly being cooked as a dessert or a side.
画像中に存在する全オブジェクトの説明を、丁寧にしてくれました。これを応用すれば、画像中に何かわからない物体があっても、GPT-4Vが詳細に説明してくれるでしょう。
例えば、もしも「12」の「tongs」が分からない場合、SoM付だと「12番は何?」と質問するだけで良いですが、SoMなしだと「真ん中のうえらへんにある物は何?」や「七輪の上にある物は何?」というふうに曖昧な質問文になってしまいます。これでも今のGPT-4Vなら答えてくれるかもしれませんが、めんどうですよね。
加えて、ナンバリングしてあるだけで、画像を扱うLLMに関して色々と用途が広がりそうです。
Set-of-Mark Visual Prompting for GPT-4V(SoM)の推しポイントである画像認識は本当なのか?
Set-of-Mark Visual Prompting for GPT-4Vの実力を確かめるために、通常のGPT-4Vと比較してみます。具体的には、以下のタスクを解かせてみようと思います。
- 物の位置当てクイズ
- カロリー計算
- 料理方法の説明
「物の位置当てクイズ」で使用する画像は以下の通りです。
「カロリー計算」で使用する画像は以下の通りです。
「料理方法の説明」使用する画像は以下の通りです。
各プロンプトと結果は、以下の通りです。
タスク | プロンプト | 普通のプロンプト | Set-of-Mark Visual Prompting |
---|---|---|---|
物の位置当てクイズ | 右のノートパソコンの左側には何がありますか? | 画像には、右側のノートパソコンの左にあるのは白いデスクランプです。これはおそらく作業をする際に必要な照明を提供するためのものでしょう。 | 右のノートパソコン(9番)の左側にはデスクランプ(12番)があります。 |
カロリー計算 | これらの食べ物の総カロリーを計算してください。 | 写真だけから正確な総カロリーを計算することはできません。食品の量、調理方法、追加された具材や調味料など、多くの変数が影響するためです。しかし、一般的な平均値を用いておおよその見積もりは可能です。 一般的な食品のカロリーの平均値を以下に示します: ハンバーガー: 約500-800カロリー フライドポテト(中サイズ): 約300-400カロリー サンドイッチ: 約300-600カロリー チップス(一掴み): 約150カロリー ピクルス: 約5-10カロリー(小さなピクルス一本あたり) チキンウィング(3-4個): 約200-400カロリー オニオンリング(10個程度): 約275-500カロリー ケチャップ、マスタード、その他のソース: 約15-20カロリー(大さじ一杯あたり) | 写真から食べ物の正確な総カロリーを計算することはできません。これは、食品の正確な重量やサイズ、レシピ、調理方法が不明であるためです。しかし、一般的な推定値を用いることで、大まかな見積もりを提供することは可能です。 以下は一般的な食品のカロリーの見積もりです: オニオンリング:約400-500カロリー サンドイッチ:約250-500カロリー ハンバーガー:約250-600カロリー チキンウィング:約200-500カロリー ハンバーガー(もう一つ):約250-600カロリー ホットドッグ:約150-300カロリー ディップソース:約50-150カロリー フレンチフライ:約200-400カロリー ケチャップ:約15-20カロリー(大さじ1杯あたり) チップス:約150-200カロリー(一掴み) オニオンリング(他の部分):約200-250カロリー チーズスライス:約50-100カロリー ピクルス:約5-10カロリー(1本あたり) チキンウィング(他の部分):約100-250カロリー ハムスライス:約30-50カロリー(1枚あたり) チップス(他の部分):約75-100カロリー チェリートマト:約2-5カロリー(1個あたり) ホットドッグ(他の部分):約75-150カロリー |
料理方法の説明 | この料理の調理方法を教えてください。 | アップロードされた画像は、たんぱくで白い肉質を持つ白身魚のフィレが焼かれて、アスパラガス、ポテト、レモンのくし切り、そしてパセリで飾られている料理のようです。こちらは似たような料理を作る一般的な方法です: 材料: 白身魚のフィレ(たとえばタラ、ヒラメ、スズキなど) 新鮮なアスパラガス ポテト(小さめの新じゃがが良いです) レモン 新鮮なパセリ 塩、胡椒 オリーブオイルまたはバター 野菜の準備: アスパラガスを洗って硬い部分を切り落とします。 ポテトを柔らかくなるまで茹で、大きければスライスします。 アスパラガスを2-3分間茹でた後、茹で上がったら直ちに冷水に取り、調理を停止させます。 魚の調理: 魚のフィレに塩胡椒を振ります。 ノンスティックのフライパンにオリーブオイルを熱するか、バターを中火で溶かします。 魚の皮がある場合は皮目を下にしてフライパンに置きます。 動かさずに3-4分間焼き、皮がカリカリになるまで待ちます(皮無しの場合は金色になるまで)。 慎重に魚を裏返して、さらに2-3分間、または中まで火が通るまで焼きます。 盛り付け: ポテトとアスパラガスを少しオイルまたはバターを足しながら、温まり少し金色になるまでパンで再加熱します。 皿にポテトとアスパラガスを並べます。 その上に焼いた魚をのせます。 レモンの汁を魚と野菜の上に絞ります。 新鮮なパセリで飾ります。 魚のフィレの厚みや野菜の大きさによって調理時間を調整してください。常に食品安全のため、魚は内部温度が63℃(145°F)になるまで十分に加熱することを確認してください。 | アップロードされた画像に基づいて、この料理は白身魚のフィレがメインで、アスパラガスとポテト、レモンのくし切りが添えられており、パセリで飾られているようです。同様の料理を作る一般的な方法を以下に説明します: 材料: 白身魚のフィレ(例:タラ、ヒラメ、スズキ) 新鮮なアスパラガス 小さめのポテト レモン 新鮮なパセリ 塩、胡椒 オリーブオイルまたはバター 野菜の準備: アスパラガスを洗い、硬い部分を切り取ります。 ポテトを柔らかくなるまで茹で、大きければ一口大にスライスします。 アスパラガスを数分茹でた後、冷水にさっとくぐらせて色を保ちます。 魚の調理: 魚のフィレに塩と胡椒を振ります。 フライパンにオリーブオイルを熱するかバターを溶かし、中火で加熱します。 魚のフィレを皮目が下になるようにしてフライパンに置き、動かさずに皮がカリカリになるまで数分間焼きます。 それからフィレを慎重にひっくり返して、もう片面も金色になるまで焼きます。 盛り付け: ポテトとアスパラガスをフライパンで軽く炒め直します。 皿に野菜を敷き、上に魚のフィレをのせます。 レモンを絞り、魚と野菜にかけます。 最後に新鮮なパセリを上に散らします。 この料理を再現する際には、魚のフィレの厚みや野菜のサイズに応じて調理時間を適宜調整してください。また、食品安全のために魚が十分に加熱されているかを確認してください。魚は内部温度が63℃(145°F)に達するまで加熱するのが望ましいです。 |
物の位置を当てたり、詳細な説明をしたり、根拠を持った回答をしたりするのは、Set-of-Mark Visual Prompting for GPT-4Vの方が得意そうな感じでした。
料理方法の違いは、あまりなかったですね。
これを応用すれば、例えば物の破損を検知したり、ゲームコントローラーの操作方法を詳細に教えてくれたりできるでしょう。。または、事件現場の写真から、真犯人を見つけ出すこともできるかもしれませんね。
まとめ
「Set-of-Mark Visual Prompting for GPT-4V」は、画像に数字マークを付け加えることで、GPT-4VなどのLLMに対して、「画像をより深く理解し、解釈すること」をサポートするプロンプト技術です。
つまり、画像を少し編集して、そのうえでChatGPTに普通に読み込ませるだけの「ちょっとした工夫」なのです。ただし、このちょっとした工夫がとても強力で、GPT-4Vをとても賢くするのだとか。
具体的なメカニズムは非常にシンプルで、以下の手順です。
- SoMという物体検出モデルを用いて、画像内のオブジェクトにナンバリングする
- オブジェクトにナンバリングした画像をGPT-4Vに読ませる
- GPT-4V側で通常通りプロンプトを入力する
物の位置を当てたり、詳細な説明をしたり、根拠を持った回答をしたりするのは、Set-of-Mark Visual Prompting for GPT-4Vの方が得意そうな感じでした。
これを応用すれば、例えば物の破損を検知したり、ゲームコントローラーの操作方法を詳細に教えてくれたりできるでしょう。。または、事件現場の写真から、真犯人を見つけ出すこともできるかもしれませんね。
生成系AIの業務活用なら!
・生成系AIを活用したPoC開発
・生成系AIのコンサルティング
・システム間API連携
最後に
いかがだったでしょうか?
弊社では
・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
・ハルシネーション対策AIツールの開発
・自社専用のAIチャットボットの開発
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。
「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。