こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- Pythonを用いた画像認識モデルの作成に興味がある!
- GPTを用いた生成AIによる画像認識モデルの構築方法が知りたい!
【OpenAI】Pythonと生成AIを用いた画像認識モデル構築
本記事では、Pythonを用いてOpenAI社が提供するGPTモデルを呼び出すAPIを活用し、画像認識モデルを構築する方法について解説します。
【参考】OpenAI社のAPI利用方法
本記事ではChatGPTを用いたPythonプログラミングについて解説します。その際、Open AIが提供するAPI情報が必要になります。「ChatGPTの概要」および「API情報の取得手順」については、こちらの記事で詳しく解説しています。
【参考】ChatGPTを詳しく学びたい方向けの学習講座
ChatGPTを詳しく学びたい方向けに安価で学べるオンライン講座も併せてご紹介します。
【参考】OpenAI API 呼出用Pythonライブラリのインストール
OpenAI社が提供するAPIをPythonで利用する場合、以下のライブラリを事前にインストールする必要があります。
コマンドプロンプト(WIndows)またはターミナル(Mac)を開き、以下を実行しましょう。
pip install openai
【実践】Pythonを用いたChatGPT画像認識モデル構築
それでは実際にPythonコードを記述しながら画像認識モデルを構築していきます。
Pythonライブラリ・API認証情報
はじめに、Pythonプログラムの先頭にライブラリとAPI認証情報を記述します。
前述で取得したAPIシークレットキー
を入力しましょう。
from openai import OpenAI
API_Key = "<APIシークレットキーをここに入力>"
画像認識モデルの呼び出し関数作成
続いて、画像認識モデルをAPI経由で呼び出す関数を作成します。
# 関数作成
def gpt_image_recognition(prompt:str, image_url:str):
client = OpenAI(api_key=API_Key)
response = client.chat.completions.create(
model = "gpt-4-vision-preview",
messages = [{
"role": "user",
"content": [
{"type": "text", "text": prompt},
{"type": "image_url","image_url": image_url},
],}],
max_tokens = 300,
)
result = response.choices[0].message.content
return result
【実践】画像認識モデルの活用
前述で作成した画像認識モデルの呼び出し関数を実際に活用してみましょう。
画像の説明
画像認識モデルに渡した「画像の説明文」を回答として生成する場合、以下のコードを実行します。
入力画像
今回の例では以下の入力画像を画像認識モデルに渡します。
コード
# プロンプト
prompt = "指定された画像の説明をしてください。"
# 入力画像
image_url = "https://di-acc2.com/wp-content/uploads/2024/02/image-cat.jpg"
# 関数実行
res = gpt_image_recognition(prompt, image_url)
print(res)
出力イメージ
# これは猫の画像です。この猫は体を横にして、おそらく芝生か緑色のマットの上に横たわっています。
# 猫の姿勢はリラックスしていて、前足を伸ばし、目を開けて前方を見据えています。
# 瞳は大きく、注意深い視線を感じさせます。模様は灰色と黒のまだらで、耳は直立しています。
# 背景はぼやけており、緑色の自然な色合いが見て取れます。全体的に穏やかで平和的な雰囲気が漂う非常に美しい写真です。
画像の分類モデル
プロンプトに画像認識モデルの出力方法を指定すると、画像の分類モデルとしても利用できます。
入力画像
コード
# プロンプト
prompt =\
"""
## 背景
あなたは動物を見分けることができる画像認識モデルです。
ユーザーはあなたに動物が写った1枚の画像を共有します。
あなたは何の動物が写っていたか判別し、その動物名を回答として渡してください。
## ルール
回答時は動物の名前のみ回答すること
(例)ネコ
(例)イヌ
"""
# 入力画像
image_url = "https://di-acc2.com/wp-content/uploads/2024/02/image-cat.jpg"
# 関数実行
res = gpt_image_recognition(prompt, image_url)
print(res)
出力イメージ
# ネコ
2つの画像の類似度比較
画像認識モデルに2つの画像を渡し、それらの類似度を確認することもできます。
入力画像
以下2つの画像が類似する画像であるかを画像認識モデルで判別することとします。
コード
# =============================================================================
# 関数を一部修正
# =============================================================================
def gpt_image_recognition(prompt:str, image_url1:str, image_url2):
# APIクライアント
client = OpenAI(api_key=API_Key)
response = client.chat.completions.create(
model = "gpt-4-vision-preview",
messages = [{
"role": "user",
"content": [
{"type": "text", "text": prompt},
{"type": "image_url","image_url": image_url1},
{"type": "image_url","image_url": image_url2},
],}],
max_tokens = 300,
)
result = response.choices[0].message.content
return result
# =============================================================================
# 関数利用
# =============================================================================
# プロンプト
prompt =\
"""
## 背景
ユーザーはあなたに2つの画像を共有します。
その画像には猫が写っています。
あなたは画像に映る猫が同じ種類の猫であるか判別し、類似度を0-10で評価してください。
類似度とは0が異なる画像を意味し、数字が高くなるにつれて2つの画像が類似することを意味しています。
## ルール
出力結果は以下の2つを出力すること
類似度:2つの画像の類似度
理由:上記結果の回答理由
"""
# 入力画像
image_url1 = "https://di-acc2.com/wp-content/uploads/2024/02/image-cat2.jpg"
image_url2 = "https://di-acc2.com/wp-content/uploads/2024/02/image-cat3.jpg"
# 関数実行
res = gpt_image_recognition(prompt, image_url1,image_url2)
print(res)
出力イメージ
# 類似度:
# 7
# 理由:
# 2枚の画像に写っている猫はともにタビー(斑点)の模様を持っています。
# タビーは模様の一種で、猫のコートに縞模様、斑点、渦巻きなどを形成します。
# 1枚目の画像では猫の模様がはっきりとしており、顔に「M」型のマーキングがあることが分かります。
# 2枚目の画像でも同様の「M」型のマーキングが顔に見受けられます。
# また、両方の猫の被毛には類似した色合い(褐色とグレーのシェード)があります。
# しかしながら、コートの色の強さや模様の明瞭さには若干の違いがあります。
# また、両猫の体型や姿勢、写真の撮影環境などに多少の違いが見受けられる
【参考】PythonによるLLM実装|ChatGPT・LangChain
本記事では、PythonでLLMを構築し、様々なタスクをこなす機能の実装方法を多数解説しています。
Python × ChatGPT関連記事
Python × LangChain関連記事
自然言語処理の学習におすすめの書籍
自然言語処理の概要について詳しく学びたい方向けに、厳選したおすすめの学習教材を紹介しています。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら