ChatGPT 3.5 で画像から回答を生成する・BLIP-2 のプロンプトによる情報抽出
ChatGPT WebUI + GPT4 でできる、画像からの回答生成が、ChatGPT 3.5 + BLIP-2 を使うと、要件にマッチするようなら使えるよ、という話し。本当に伝えたいのは BLIP-2 使ってのプロンプトによる情報抽出です。
やってみようと思ってみた発端は、そういえばGPT4での画像からの回答生成どうやってるんだろう、と調べるとVision and Languageの現状と展望(GPT-4)のLLMにVQAタスクを組み込む例として、BLIP-2 が解説されていたこと。
BLIP は画像からキャプション生成の物、ぐらいにざっくりと思っていたのだけど、BLIP-2では後段にオープンモデルのLLMを挟んで学習させることで、画像キャプションペアだけでは表現できない情報を学ぶことができ、精度を高めている。
で、使う側にとって嬉しいのは通常のキャプション生成タスクのみならず、画像に対して「Q&Aタスクを解かせる」事で情報抽出ができること。
たとえば、この「夜の東京タワーが写っています」は単純なキャプション元にGPT3.5に回答させて生成しているが、冒頭の「レシピを複数提案して下さい」という処理の流れはこう。
- image_question_prompt で "食材は何がありますか?" を元に、画像から BLIP-2 で情報抽出
- 英語しかQAタスクに突っ込めないので、Metaのnllb-200(非商用利用のみ)で翻訳する
- "Question: What are the ingredients? Answer:" というプロンプトになる
- これで情報抽出したテキストは "Vegetables, carrots, cabbage, cauliflower, broccoli, and potatoes" となる
- 後は簡単。このテキストを元に、GPT-3.5 で FewShot で回答させる
という単純な仕組みである。なお、"image_question_prompt" に直接英語で情報抽出プロンプトを書けば、翻訳タスクを挟むこと無く処理できる。
ChatGPT GPT4 で行えるような高度なコンテキストの処理は行えないが、BLIP-2 で情報抽出可能なタスクと組み合わせて処理できるものなら、それなりに処理できたりする。
で、この記事で本当に伝えたいのは、先程書いたように BLIP-2 で適切なプロンプトを入れれば、ある程度の情報抽出タスクがこなせる、ということ。 ChatGPT本体のAPIでも画像からの情報抽出タスクはできるようになっていくだろうが、BLIP-2 + オープンなLLMモデルも今後進化が予想されるので、オープンなモデルでのzeroshotでの情報抽出がさらに良い精度でできるようになっていのであろう。楽しみである。