GPT-4 with Vision API で画像を読もう

GPT-4 with Vision とは

GPT-4 with Visionとは、OpenAIによって訓練された大規模言語モデルの一つで、既存のGPT-4の言語理解の機能に画像理解の機能を加えたものです。今までのGPT-4は入力としてテキスト情報しか入れることができませんでしたが、GPT-4 with Vision では画像の情報も読ませることができます。2023年12月現在、GPT-4 with Vision はプレビュー版としてAPIが提供されています。この記事ではその使い方と、それを使って何ができるのか理解することを目指します。

GPT-4 with Vision API で何ができるようになったのか、理解することを目指します

まずはAPIを使ってみよう

というわけで、早速 GPT-4 with Vision を使ってみます。この記事では詳細を省略しますが以下のセットアップができているものとします。

Pythonの対話環境で以下のコードを実行し、GPT-4 with Vision API のモデル “gpt-4-vision-preview” が利用可能かどうか確認しましょう。

from openai import OpenAI
print([m.id for m in client.models.list() if 'gpt-4' in m.id])

ここで ‘gpt-4-vision-preview’ が表示されればOKです。(注意: 2023年12月現在、アカウントの課金状況等によってはこのモデルにアクセスできないこともあるようです)

まずは、画像のURLを渡すことでGPT-4に画像を読み取らせてみましょう。画像は何でも良いのですが、Wikipediaのドラえもんのページかららこの画像のURLを取ってきたので、これをAPIに渡します。

from openai import OpenAI
client = OpenAI()

response = client.chat.completions.create(
  model="gpt-4-vision-preview",
  messages=[
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "Who is in the image?"},
        {
          "type": "image_url",
          "image_url": {
            "url": "https://upload.wikimedia.org/wikipedia/en/c/c8/Doraemon_volume_1_cover.jpg",
          },
        },
      ],
    }
  ],
  max_tokens=300,
)

print(response.choices[0])

このリクエストの中では、”Who is in the image?” という質問と、画像のURLが渡されています。私の実験では得られた結果は以下のようになりました。

The image shows a Japanese manga cover featuring the character Doraemon, who is a robotic cat from the future. The manga “Doraemon” was created by Fujiko F. Fujio.

出力は英語ですが、「Doraemon」 や 「Fujiko F. Fujio」 などの基本的な情報は認識できているようです。ただし、OpenAIのドキュメントによると画像内の日本語の認識能力はアルファベットに比べると劣るとのことです。

入力するするテキスト、つまりは質問を変えることで、様々な出力を得ることができます。この質問はプロンプトとも呼ばれます。プロンプトを変えていくつか実験してみたので表にまとめてみました。ちなみに画像はすべて先程と同じドラえもんの画像です。

質問(プロンプト)応答
Which volume is this comic? Answer in Japanese.(このコミックは第何巻ですか?)このコミックは第1巻です。
What is the title of this comic? Answer in Japanese.(このコミックのタイトルはなんですか?日本語で答えてください。)このコミックのタイトルは「ドラえもん」です。
Output the author and the title of this comic in JSON format. The field values must be in Japanese. (このコミックの著者とタイトルをJSON形式で出力してください。ただし値は日本語にしてください。)json\n{\n "author": "藤子・F・不二雄",\n "title": "ドラえもん"\n}\n

ちなみに質問の日本語訳は、わかりやすさのために私がつけたものです。日本語で応答を得たい場合、GPT-4 with Vision に “Answer in Japanese” と指令を与えることで応答を日本語にする事が可能です。最後のプロンプト例では、”in JSON format” と指定することでJSON形式で出力させています。このようにプロンプトをうまくカスタマイズすることで必要な情報を画像から抽出することができます。

今回の例では、URLを指定することで画像を渡していましたが、この方法ではWeb上で公開された画像しか渡すことができません。画像をWeb上に公開したくない場合は、Base64を使って画像をエンコードしてそれを直接APIに渡すことも可能です。興味のある方はOpenAIのドキュメントを御覧ください。

アプリケーションのアイディア

GPT-4 with Vision については様々なアプリケーションが考えられますが、現時点で実用可能なものを列挙していきたいと思います。

画像検索

画像検索のアプローチとしては大きく分けて2つの方法があります。1つ目は画像にタグ(テキスト)をつけてそれを検索する方法です。2つ目は画像の特徴ベクトルを計算し、ベクトルとしての類似度を使って検索する方法です。GPT-4 with Vision を使うと、この1つ目のアプローチを容易かつ高精度で実現する事ができます。

例としてファッションモデルの写真をアウターに関して検索することを考えてみます。

この写真に “List 10 search keywords for the outerwear of the model. Answer the keywords only” (このモデルのアウターに関する10個の検索キーワードをリストアップせよ)という指令を与えると、”Faux fur coat, Oversized coat, Double-breasted coat, Neutral color coat, Wool blend coat, Winter fashion, Luxurious outerwear, Fashion show outerwear, Designer coat, Beige coat” のようなキーワードが得られました。これらのキーワードを(必要なら日本語に翻訳して)検索インデックスに入れておけば、”ダブルブレストコート” のような検索キーワードでこの画像を発見することができます。同様のことをボトムス、靴、帽子などについても実現できます。

このような検索を既存の機械学習技術を使って実現しようとすると、データ集めやモデルの学習が必要になりますが、GPT-4 with Vision ではプロンプトをいじるだけで多様な検索機能を実現できる点が優れています。

書類画像からの文字情報抽出

紙に印刷された書類から、書かれている文字情報を取り出すにはOCR(Optical Character Recognition)の技術がよく使われます。OCR技術の難しい点は、欲しい情報の種類がケースバイケースであり、文字を読み取ったあとに別途処理が必要になります。

例えば以下のような領収書画像のケースで、領収書の日付、金額、概要の3つの情報を取り出したいとします。この画像をOCRにかけると、すべての文字と数字が読み取られてしまい、どの数字が金額なのかよく分からないという新たな問題が発生します。

一方この画像を GPT-4 with Vision に渡して、”Extract ‘price’, ‘date’, ‘product or service description’ of this receipt. Answer in JSON format. The field values must be in Japanese.” という命令文(プロンプト)を渡すと以下のように構造化された状態で情報を取り出すことができます。これなら価格が明確です。

{
  "price": "¥210(消費税込み)",
  "date": "2010年3月11日",
  "product_or_service_description": "JR乗車券"
}

ここでは領収書を例として上げましたが、他には書類画像から作成者、作成日、タイトルなどの情報をJSON形式で取り出すといった応用も考えられます。

まとめ

この記事では GPT-4 with Vision の使い方を紹介しました。GPT-4 with Vision のAPIを使うと様々な画像認識機能がプロンプトを変えるだけで実現できます。GPT-4 with Vision を使ったAI機能の開発にご興味がある場合は、弊社にぜひご相談ください。