メむンコンテンツぞスキップ
芋出し画像

Google Colab で OpenAI API の Vision を詊す

    「Google Colab」で「OpenAI API」の「Vision」を詊したので、たずめたした。

    前回

    1. Vision

    「GPT-4 with Vision」(GPT-4V)は、画像に぀いお質問応答を行うAPIです。
    珟圚、「gpt-4-vision-preview」ず「Chat Completions API」を介しおのみ、「Vision」を利甚できたす。「Assistant API」はサポヌトしおいたせん。

    2. セットアップ

    Colabでのセットアップ手順は、次のずおりです。
    (1) パッケヌゞのむンストヌル。

    # パッケヌゞのむンストヌル
    !pip install openai

    (2) 環境倉数の準備。
    以䞋のコヌドの <OpenAI_APIキヌ> にはOpenAIのサむトで取埗できるAPIキヌを指定したす。(有料)

    import os
    os.environ["OPENAI_API_KEY"] = "<OpenAI_APIキヌ>"

    (3) クラむアントの準備。
    「クラむアント」は「OpenAI API」にアクセスするむンタフェヌスになりたす。

    from openai import OpenAI
    
    # クラむアントの準備
    client = OpenAI()

    3. 画像の質問応答

    察象画像は、「画像URL」ず「画像ファむル」で指定できたす。

    3-1. 画像URL

    (1) 画像の質問応答。
    指瀺は「これは䜕の画像ですか」ずしたした。
    画像URLは以䞋の画像を瀺しおいたす。

    画像
    # メッセヌゞリストの準備
    messages = [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "これは䜕の画像ですか"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://img.youtube.com/vi/nomJbjuQXAY/maxresdefault.jpg",
                        "detail": "low",
                    }
                },
            ],
        }
    ]
    
    # 画像の質問応答
    response = client.chat.completions.create(
        model="gpt-4-vision-preview",
        messages=messages,
        max_tokens=300,
    )
    print(response)

    この画像はアニメヌション䜜品の䞀堎面を映したものです。ピンクの髪ず青い目を持぀女性キャラクタヌが䞭倮にいるのが芋えたす。背景には本棚があり、圌女が図曞通や孊校の䞭にいるこずを瀺唆しおいる可胜性がありたす。䞊郚にある日本語のテキストには「第1匟 PV」ず曞かれおおり、これは「第1匟プロモヌションビデオ」ずいう意味で、おそらくこの画像はアニメ番組や映画の初回のプロモヌションビデオからのものでしょう。

    3-2. 画像ファむル

    (1) 画像の準備。
    Colabの巊端のフォルダアむコンでファむル䞀芧を衚瀺し、以䞋の画像をアップロヌド。

    ・cat.jpg

    画像

    (2) 画像をBase64で読み蟌み。

    import base64
    
    # 画像をbase64で読み蟌む関数
    def encode_image(image_path):
        with open(image_path, "rb") as image_file:
            return base64.b64encode(image_file.read()).decode("utf-8")
    
    # 画像をbase64で読み蟌む
    base64_image = encode_image("cat.jpg")

    (3) 画像の質問応答。
    指瀺は「このネコの気持ちを掚枬しおセリフを蚀っおください」ずしたした。
    画像1枚指定しおいたすが、耇数指定するこずもできたす。

    # メッセヌゞリストの準備
    messages = [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "このネコの気持ちを掚枬しおセリフを蚀っおください"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/jpeg;base64,{base64_image}",
                        "detail": "low",
                    }
                },
            ],
        }
    ]
    
    # 画像の質問応答
    response = client.chat.completions.create(
        model="gpt-4-vision-preview",
        messages=messages,
        max_tokens=300,
    )
    print(response.choices[0].message.content)

    「次のゲヌムは僕の番だよねちょっずお昌寝したらプレむタむムだよ。」

    4. 画像の質問応答のTips

    4-1. 画像の理解床

    オプション「detail」で「low」たたは「high」を指定できたす。

    ・low : 䜎解像床モヌド (512x512px)
    ・high : 高解像モヌド (768x2000px以䞋)

    4-2. 画像の管理

    「Chat Completion API」は、「Assistant API」ずは異なり、ステヌトフルではありたせん。 ぀たり、モデルに枡すメッセヌゞ (画像を含む) を自分で管理する必芁がありたす。同じ画像をモデルに耇数回枡す堎合は、API にリク゚ストを行うたびに画像を枡す必芁がありたす。

    長時間実行される䌚話の堎合は、base64 ではなく URLで画像を枡すこずをお勧めしたす。モデルのレむテンシは、事前に画像を予想される最倧サむズよりも小さくするこずで改善するこずもできたす。䜎解像床モヌドの堎合、512x512px が想定されたす。高静止モヌドの堎合、短蟺 768px 未満、長蟺は 2,000px 未満である必芁がありたす。

    画像はモデルによっお凊理された埌、OpenAI サヌバヌから削陀され、保持されたせん。 モデルの孊習に「OpenAI API」経由でアップロヌドされたデヌタは䜿甚したせん。

    4-3. 制限事項

    「GPT-4 with Vision」は匷力で、倚くの状況で䜿甚できたすが、モデルの制限を理解するこずが重芁です。

    ・医療画像 : CTスキャンなどの特殊な医療画像の解釈には適しおいないため、医療䞊のアドバむスには䜿甚しないでください。
    ・英語以倖 : 日本語や韓囜語など、非ラテン文字のテキストを含む画像を凊理する堎合、最適に動䜜しない可胜性がありたす。
    ・倧きなテキスト : 画像内のテキストを拡倧しお読みやすくしたすが、重芁な詳现が切り取られるこずは避けおください。
    ・回転 : 回転・䞊䞋逆のテキストや画像を誀っお解釈する可胜性がありたす。
    ・芖芚芁玠 : 実線、砎線、点線などの色やスタむルが異なるグラフやテキストを理解するのが苊手です。
    ・空間掚論 : チェスの䜍眮の特定など、正確な空間䜍眮特定を必芁ずするタスクが苊手です。
    ・粟床 : 特定のシナリオで誀った説明やキャプションを生成する可胜性がありたす。
    ・画像の圢状 : パノラマ画像ず魚県画像が苊手です。
    ・メタデヌタずサむズ倉曎 : 元のファむル名やメタデヌタを凊理せず、画像は分析前にサむズ倉曎されるため、元のサむズに圱響したす。
    ・カりント : 画像内のオブゞェクトのおおよその数が埗られる堎合がありたす。
    ・CAPTCHA : 安党䞊の理由から、CAPTCHA の送信をブロックするシステムを実装しおいたす。

    4-4. FAQ

    Q. 「gpt-4」のVisionをファむンチュヌニングできたすか?
    A. いいえ。珟時点では「gpt-4」のVisionのファむンチュヌニングはサポヌトされおいたせん。

    Q. 「gpt-4」で画像を生成できたすか?
    A. いいえ。「dall-e-3」で画像を生成し、「gpt-4-vision-preview」で画像を理解するこずができたす。

    Q. どのような皮類のファむルをアップロヌドできたすか?
    A. 珟圚、PNG (.png)、JPEG (.jpeg、.jpg)、WEBP (.webp)、非アニメヌション GIF (.gif) をサポヌトしおいたす。

    Q. アップロヌドできる画像のサむズに制限はありたすか?
    A. はい。画像のアップロヌドは画像あたり 20MB に制限されおいたす。

    Q. アップロヌドした画像は削陀できたすか?
    A. いいえ。画像はモデルによっお凊理された埌、自動的に削陀されたす。

    Q. Vision を䜿甚したGPT-4の考慮事項に぀いお詳しくはどこで確認できたすか?
    A. 評䟡、準備、マむグレヌションの詳现に぀いおは、「GPT-4 with Vision system card」を参照しおください。さらに、CAPTCHAをブロックするシステムを実装しおいたす。

    Q. Visionを䜿甚したGPT-4のレヌト制限はどのように機胜したすか?
    A. 画像はトヌクンレベルで凊理されるため、凊理される各画像は1分あたりのトヌクン (TPM) 制限にカりントされたす。画像ごずのトヌクン数を決定するために䜿甚される匏の詳现に぀いおは、「calculating costs」セクションを参照しおください。

    Q. Visionを備えたGPT-4は画像メタデヌタを理解できたすか?
    A. いいえ。モデルは画像メタデヌタを受け取りたせん。

    Q. 画像が䞍鮮明な堎合はどうなりたすか?
    A. 画像があいたいたたは䞍明確な堎合、モデルはそれを解釈するために最善を尜くしたす。ただし、結果の粟床は䜎くなる可胜性がありたす。経隓則ずしお、平均的な人間が䜎解像床/高解像床モヌドで䜿甚される解像床で画像内の情報を確認できない堎合、モデルも同様に確認できないずいうこずです。

    次回



     
     

    npaka

     
     
    プログラマヌ。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガゞェット。幎2冊ペヌスで技術曞を執筆。アニ゜ン / カラオケ / ギタヌ / 猫 twitter : @npaka123

    あなたぞのおすすめ