google gemini pro visionで絵描き歌を解説してもらう
こんにちはmakokonです。
今日はgoogle gemini pro visionで絵描き歌を解説してもらう。
gemini pro visionは複数の画像を渡して、回答を生成することができるので、きっと絵描き歌もわかるに違いない。
google 生成AIの準備
ライブラリをインストールして、APIキーをGEMINI_API_KEYにセットしておきます。
export GEMINI_API_KEY="your API KEY"です。
pip install --upgrade google_generativeai
一応現時点のモデルを確認
import os
import google.generativeai as genai
GEMINI_API_KEY=os.getenv('GEMINI_API_KEY')
genai.configure(api_key=GEMINI_API_KEY)
print("サポートしているモデル")
for m in genai.list_models():
if 'generateContent' in m.supported_generation_methods:
print(m.name)
おや、知らないうちにサポートしているモデルが増えていますね。
どれもgemini-proの文字が入っているので、アップデートがあったのでしょうか。
現在のGeminiモデルのバージョンは1.2.0で、2024年2月13日にリリースされたようです。いくつかの機能強化とバグフィックスがあるようです。
(gemini 1.5のリリースも発表されていますのでそちらは後日機会があれば)
とりあえず、以前のプログラムが問題なく動いたので今回は気にしません。
映像の準備
絵描き歌は、「かわいいコックさん」です。
下記のサイトの画像を使わせてもらいました。
画像そのものをブログに乗せるのは問題かもしれないのでどんな画像かは、リンクを確認してください。
cook_image \$ ls
cook01.jpg cook03.jpg cook05.jpg cook07.jpg cook09.jpg
cook02.jpg cook04.jpg cook06.jpg cook08.jpg cook10.jpg
10枚の画像があったので、jpgイメージに変換して保存しました。
全体コードの説明
import glob
import os
from PIL import Image
import google.generativeai as genai
GEMINI_API_KEY=os.getenv('GEMINI_API_KEY')
genai.configure(api_key=GEMINI_API_KEY)
# 指定したディレクトリ内のgifファイルのリストを取得
file_list = glob.glob("cook_image/*.jpg")
# ファイル名でソート
file_list.sort(key=os.path.basename)
model_image = genai.GenerativeModel('gemini-pro-vision')
sys_prompt = """これらの画像は、全10枚の相互に関連する画像です。
この画像を個別に日本語で説明してください。
また、これらの画像の関連性について説明してください。"""
prompts=[]
prompts.append(sys_prompt)
images =[]
for i,file in enumerate(file_list):
img = Image.open(file)
images.append(img)
prompts=prompts+images
response = model_image.generate_content(prompts)
msg=f"画像の説明:{response.text}"
print(msg)
最初に、画像を保存したフォルダcook_image/を指定して、そのフォルダに存在するJPGファイルの名前を、ソートしてリストimagesに格納します。
モデルネームとしてgemini-pro-visionを指定して、プロンプトを書きます。
今回は、それぞれの画像の説明と、相互の関わりについて訪ねました。一応promptsというリストにしておきます。
実際のプロンプトはテキストと、イメージのリストなので、先程作ったpromptsとimagesを接続します。
あとは、model_image.generato()にpromptsを渡して出来上がり。
実行結果
実行結果を示します。
成績はどうですかね。
1,2はOK
3は目はついていますが、手足はどこにあるんでしょうね。
4は頭がついたところなので、口がへの字といわれても。
5で手がつきましたが、尻尾はわかりません。
6の尻尾は真ん中の線なのでしょうか
7はOK、たしかに服らしく見えます。
8,9もOK。耳がついて、地面に足がつきました。
10 防止を被って可愛いコックさんといってほしかったが、猿と言われてしましました。
総括はまあ、まともですね。
わかっていたことですが、画像の抽象性が高い間は、評価が安定しません。繰り返し実行しても3,4,5あたりは結構好きなことをいいます。
具体的なイメージが固まってくると、評価も安定するようです。
段階的に画像を評価するおかげで総括もまあ、まともでした。
残念なのは何回繰り返しても出来上がりが猿だと言われることで、たまには人間と言ってほしかった。
おまけ1 絵描き歌から絵がかけるのかな。
なお、DALLE3を使って、この絵描き歌を使って、イラストを生成してもらいました。結果はまあ、しょうがないな。というところですね。
おまけ2 逆に作った絵を解説してもらった by GPT-4V
画像は、10段階に分かれたイラストで構成されており、各ステップが食べ物の調理工程をユーモラスな視点で捉えたものです。不正確な言葉遊びや言葉の音韻の類似を使い、実際の料理用語や成分ではなく、類似した響きを持つ英語を面白おかしく紹介しています。例えば、"Two sound re verserates of in a trian g eral ruler." など文脈から離れた表現が見られます。キャラクターが登場しており、中央では緑色のキャラクターがボウルの中で何かを混ぜたり、料理されたりしているのが見えます。全体としては、実際の料理プロセスを楽しく模倣した漫画的な作品です。
この記事が気に入ったらサポートをしてみませんか?