1. システムとオフィスの融合
  2. media
  3. Azure Open AI
  4. Azure OpenAI GPT-4 Turbo with Visionで画像解説してみた

QESブログ

Azure OpenAI GPT-4 Turbo with Visionで画像解説してみた

  • LINEで送る
  • このエントリーをはてなブックマークに追加
Japan EastリージョンにAzure OpenAI GPT-4 Turbo with Visionモデルが追加されていました。
どんなものか使ってみたいと思います。

Azure OpenAI GPT-4 Turbo with Visionモデルとは

GPT-4 Turbo with Vision は、OpenAI によって開発された大規模マルチモーダル モデル (LMM) であり、画像を分析し、それらに関する質問に対するテキスト応答を提供できます。 自然言語処理とビジュアル解釈の両方が組み込まれています。

とあります。
拡張機能としてAzure AI Visionを使うことでOCR(光学式文字認識)やオブジェクトを識別して検出することもできるようですね。

画像を解説させる

早速使ってみます。まずは解説する画像を用意しましょう。
せっかくなのでdall-e-3モデルを使用して画像を生成しました。
(dall-e-3モデルはJapan Eastリージョンでは使用できませんので注意してください。)

※dall-e-3モデルで「地獄の月曜日」とプロンプトへ入力して生成された画像です。

解説させていきます。今回以下を参考にPythonで実行しました。
GPT-4 Turbo with Vision を使用する
(予めAzure OpenAIリソースの作成やGPT-4 Turbo with Visionモデルのデプロイは済ませておきましょう。)
from openai import AzureOpenAI
import base64
from mimetypes import guess_type

api_base = '' # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
api_key=""
deployment_name = ''
api_version = '2023-12-01-preview' # this might change in the future

client = AzureOpenAI(
    api_key=api_key,  
    api_version=api_version,
    base_url=f"{api_base}openai/deployments/{deployment_name}/extensions",
)

# Function to encode a local image into data URL 
def local_image_to_data_url(image_path):
    # Guess the MIME type of the image based on the file extension
    mime_type, _ = guess_type(image_path)
    if mime_type is None:
        mime_type = 'application/octet-stream'  # Default MIME type if none is found

    # Read and encode the image file
    with open(image_path, "rb") as image_file:
        base64_encoded_data = base64.b64encode(image_file.read()).decode('utf-8')

    # Construct the data URL
    return f"data:{mime_type};base64,{base64_encoded_data}"

image_path = '<解析する画像のパス>'
data_url = local_image_to_data_url(image_path)

response = client.chat.completions.create(
    model=deployment_name,
    messages=[
        { "role": "system", "content": "あなたは優秀な画像解析者です。与えられた画像からあらゆる情報を取得、分析します。" },
        { "role": "user", "content": [  
            { 
                "type": "text", 
                "text": "この画像を解説してください。" 
            },
            { 
                "type": "image_url",
                "image_url": {
                    "url": data_url
                }
            }
        ] } 
    ]    
    max_tokens=2000 
)
print(response.choices[0].message.content)
実行した結果がこちらです。
この画像は非常に活動的であり、多くの要素が含まれているため、混沌としています。画像の中心には、目と長い舌を持った一つ目の大きな生物が描かれており、その背景は炎に包まれています。生物の目は、恨みや苦痛を伝える赤い色で際立っています。
これは文明の崩壊や機能不全を表しているかもしれません。火災と建築物のダークなカラーパレットは、イメージにさらに恐ろしい雰囲気を加えています。

全体的に、画像は月曜日、特に働く人々にとってのストレス、圧力、絶望を表現していると考えられます。イラストのスタイルは、グラフィックノベルやコミックブックを彷彿とさせるもので、視覚的な影響力が非常に強いです。
いい感じに「地獄の月曜日」が解説されています。

拡張機能で画像内の文字も加味して解説させる

次は拡張機能の一つであるOCR(光学式文字認識)を使って、文字だらけの画像を解説させてみたいと思います。
※拡張機能を使用すると追加で課金されますので注意してください。 (特別価格情報)
画像は9_事業年報全体版 の「後期高齢者医療事業状況報告」(年報:確報)_令和元年度の9_事業年報全体版(p5)をキャプチャしたものを使用しました。


コードはextra_body部分が追加となります。
予めComputer Visionのリソースを作成しておきましょう。
(リージョンはGPT-4 Turbo with Visionと同じリージョン(Japan East)。価格はStandard (S1)で作成してください。)
    messages=[
        { "role": "system", "content": "あなたは優秀な画像解析者です。与えられた画像からあらゆる情報を取得、分析します。" },
        { "role": "user", "content": [  
            { 
                "type": "text", 
                "text": "この画像を解説してください。" 
            },
            { 
                "type": "image_url",
                "image_url": {
                    "url": data_url
                }
            }
        ] } 
    ],    
     extra_body={
         "dataSources": [
             {
                 "type": "AzureComputerVision",
                 "parameters": {
                    "endpoint": "", # your_computer_vision_endpoint
                    "key": "" # your_computer_vision_key
                 }
             }],
         "enhancements": {
             "ocr": {
                 "enabled": True
             },
             "grounding": {
                 "enabled": True
             }
         }
     }
このような結果になりました。
画像は日本語の文章が記載された文書であり、題名は「まえがき」となっています。本文は、高齢者医療制度に関する詳細な説明を含んでおり、特に「後期高齢者医療制度」の導入背景や、それを構成する過去の制度の歴史が述べられています。
また、制度の創設から10年以上の経過が述べられており、その間に達成された安定的な制度運営についても触れられています。

文末には、この報告書をまとめた厚生労働省保険局長の署名「演谷 浩樹」と日付「令和3年7月」が記されています。これにより、文書が公式な政府の報告書であることを示しています。

OCRテキスト情報を基に、画像中の文字が不鮮明でなければ、この説明を補足する必要はありません。画像上のテキストはOCRによって正確に認識されていると思われます。もしテキストが不鮮明な部分があれば、OCRテキストはその確認に役立ちますが、現時点ではその必要はなさそうです。
結構画像は荒かったのですが、きちんと文字を認識して解説できています。
「演谷 浩樹」の部分は惜しかった。「濵」が「演」になっています。漢字の形自体はかなり似ているのですが。
とはいえ、かなりの精度が出ていると思います。


拡張機能でComputer Visionを使用した場合としなかった場合の比較

では拡張機能を使用しないで文字だらけの画像を解説させたらどうなるのでしょうか。
比較してみます。
【拡張機能あり】
画像は日本語の文章が記載された文書であり、題名は「まえがき」となっています。本文は、高齢者医療制度に関する詳細な説明を含んでおり、特に「後期高齢者医療制度」の導入背景や、それを構成する過去の制度の歴史が述べられています。
また、制度の創設から10年以上の経過が述べられており、その間に達成された安定的な制度運営についても触れられています。

文末には、この報告書をまとめた厚生労働省保険局長の署名「演谷 浩樹」と日付「令和3年7月」が記されています。これにより、文書が公式な政府の報告書であることを示しています。

OCRテキスト情報を基に、画像中の文字が不鮮明でなければ、この説明を補足する必要はありません。画像上のテキストはOCRによって正確に認識されていると思われます。もしテキストが不鮮明な部分があれば、OCRテキストはその確認に役立ちますが、現時点ではその必要はなさそうです。
  
【拡張機能なし】
残念ながら、提供された画像はテキスト文書であり、通常の画像のように視覚的なコンテンツ(風景、オブジェクト、人物など)が含まれていないため、画像解析の観点からの具体的情報を提供することはできません。
しかし、画像に含まれるテキスト 情報を読み取り、それに基づいた解説を行うことが可能です。

画像には「美人 が 棄て」というタイトルが付けられた文書が表示されており、文書は日付け「令和3年7月」と署名「貞井 洋輔」で締めくくられています。本文の内容については、画像の解像度が低いため、
文字がぼやけていて完全には読み取ることができません。しかし、いくつかの文字や節を解析することで、文書が何らかの報告書、意見書、またはエッセイであると推測することはできます。

文書の全内容を正確に解析するためには、画像の解像度を高めるか、テキストをクリアにする必要があります。また、テキストのデジタルバージョンがあれば、それを使用して内容を完全に把握することができます。

画像から直接的な情報提供が難しい場合、追加の情報やより高解像度の画像が必要になることがあります。
  
全然違いますね。拡張機能なしはOCRが効いていないことがわかります。

まとめ

いかがでしょうか。画像解析がこの精度でできるとなると、AIを使用する幅が更に広がるのではないかと思います。
社内システムでエラーが出てしまった場合、その画面のキャプチャを入力して、解説させることなんかもできそうです。
例えばAzure AI Searchと組み合わせれば、エラーキャプチャと解消方法をChatで質問すれば社内システムのマニュアルから対処方法を回答させることもできるかもしれません。いろいろと夢が広がりますね。

QESでは、「AIチャットボット構築サービス」をはじめとして、各AIサービスを利用したシステム導入のお手伝いをしております。それ以外でも QESでは様々なアプリケーションの開発・導入を行っております。提供するサービス・ソリューションにつきましては こちら に掲載しております。
システム開発・構築でお困りの問題や弊社が提供するサービス・ソリューションにご興味を抱かれましたら、是非一度 お問い合わせ ください。

※このブログで参照されている、Microsoft、Azure、Azure OpenAI、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。
※その他の会社名、製品名は各社の登録商標または商標です。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

お気軽にお問い合わせください。

ページのトップへ