はじめに
エミリーちゃん、おめでとう。nikkieです。
明日1/8がお誕生日なのでイブから前祝いです!1
12月にGoogleから発表されたGemini2。
触ってみる時間が取れたので、気になっていたnotebookに沿って(嘘です。かなり暴走して)触りました。
目次
- はじめに
- 目次
- notebook: Use Gemini to prompt Stable Diffusion
- Gemini Proでプロンプト生成
- Stable Diffusionで画像生成
- 終わりに
- P.S. プロンプトの秘密
- P.S. GeminiのAPIキー周りのトラブル
notebook: Use Gemini to prompt Stable Diffusion
以下のツイートを見かけて「動かしてみたいな〜」と思っていました
Gemini, Google's latest and most advanced model, is also great at generating prompts for Stable Diffusion! In this notebook, use Gemini to assist you in creating the best possible prompts for generating images in Stable Diffusion: https://t.co/8dPDKwGCa0
— Colaboratory (@GoogleColab) 2023年12月15日
notebookはこちら
https://colab.research.google.com/github/googlecolab/colabtools/blob/main/notebooks/Gemini_and_Stable_Diffusion.ipynb
このnotebookでやっていることなのですが、
- コンピュータをタイプしている子猫の絵を描きたい
- Stable Diffusionでお絵描き
- Stable DiffusionのプロンプトをGemini Proで作る
- ここはGPT-4など他のLLMに交換可能だと思います
- Gemini Proで作ったプロンプトに基づいてStable Diffusionがお絵描き
つまり、2つのAIで合作させるという理解です。
Gemini Proの出力がStable Diffusionに入力できればよいと理解したので、(小さいものが好きな私は)環境を分けて動かしました。
2つの間を埋めるアダプタが私、nikkieです🙋♂️
Gemini Proでプロンプト生成
ローカル環境構築
- Python 3.11.4
pip install google-generativeai
- Gemini APIのキーを https://makersuite.google.com/app/apikey から作ります
- Google Cloudのプロジェクト1つ(作る or あるものから選ぶ)にAPIキーを紐付ける
- 呼び出し頻度の制約はありますが、無料で使えるんですね! NANTO
- ref: https://ai.google.dev/pricing 「Free for everyone」
インストールされたライブラリのバージョン
cachetools==5.3.2 certifi==2023.11.17 charset-normalizer==3.3.2 google-ai-generativelanguage==0.4.0 google-api-core==2.15.0 google-auth==2.26.1 google-generativeai==0.3.2 googleapis-common-protos==1.62.0 grpcio==1.60.0 grpcio-status==1.60.0 idna==3.6 proto-plus==1.23.0 protobuf==4.25.1 pyasn1==0.5.1 pyasn1-modules==0.3.0 requests==2.31.0 rsa==4.9 tqdm==4.66.1 typing_extensions==4.9.0 urllib3==2.1.0
Gemini APIの概要を掴む
PythonのQuickstartがありました。
同内容がnpakaさんにより日本語でカバーされていそうです。
以下でテキスト生成できると完全理解しました。
import google.generativeai as genai genai.configure() model = genai.GenerativeModel("gemini-pro") response = model.generate_content("こんにちは") # response.text に生成されたテキスト
GeminiのAPIキーは、(プログラム中で指定しない場合)環境変数GOOGLE_API_KEY
を見ます3。
Stable Diffusionのプロンプトを作るスクリプト
「Use Gemini to prompt Stable Diffusion」notebookのプロンプトを日本語にした上で、何回かプロンプトエンジニアリングを試しました(まだよくできると思います)。
「地球に飛来した隕石を野球バットで打ち返そうとする猫を描いて」に対して生成された1つが
A highly detailed illustration of a cartoon cat standing on two legs with a determined expression, swinging a baseball bat at a large flaming asteroid hurtling towards Earth. The muscular cat is wearing a red baseball cap, a blue baseball shirt with white sleeves, and black baseball pants. The sky is dark and stormy with bolts of lightning illuminating the scene.
このプロンプトは、私には絶対書けないですね〜
GPT-4でいうtemperatureに当たるものはなにかはまだ分かっていなくて、現状スクリプトを走らせるたびに生成されるプロンプトは変わります。
Stable Diffusionで画像生成
ColabでGPUを使って動かしていきます。
Colab環境
- Python 3.10.12
- インストールしたライブラリ
- diffusers==0.25.0
- accelerate==0.25.0
- mediapy==1.2.0
Stable Diffusionでお絵描きnotebook
以下のモデルを使ってるんですね。
動かし方はpipelineを作ってと、transformersで親の顔を見るより見てきたやつ4ですね。
こんなムッキムキのネコチャン🐈💪が生成されました(おま、隕石に勝ってね? ヤバいw)
ちなみにプロンプトの指定は全部守られていなくて、
The muscular cat is wearing(着ているものについて)
- a red baseball cap
- ✅ 赤い帽子ですね
- a blue baseball shirt with white sleeves
- ❌ 赤と白のシャツですね
- black baseball pants
- ❌ 赤いズボンですね
めっちゃ赤推しです。
Stable Diffusion先生の好きな色なのかな?
あれ、ひょっとして、この組合せ相性悪い?(もうちょい試行錯誤してみたい)
終わりに
Gemini Proで作ったプロンプトから、Stable Diffusionでお絵描きしました。
ジェミ×デフカップリング爆誕です!(ムフフ... しかも、このカップリングはGoogle公式ということですよ)
どちらも初めて触りましたが、
と簡単に使い出せました🙌
引き続き生成AIのカップリングを妄想していきたいと思います!(「Python界の七尾百合子」目指してるのでね!6)
P.S. プロンプトの秘密
本日発売、『生成AIで世界はこう変わる』で知ったプロンプトです(※そのままではありません)。
手を動かしたくなっちゃったんですよ〜
『生成AIで世界はこう変わる』、1章で挙がっていた事例の中のMidjourneyの例をやってみたよー
— nikkie / にっきー (@ftnext) 2024年1月7日
なおMidjourney (Discord Bot) はsubscribe必須と言われ、無料枠があったMuse AIアートジェネレータ製
「地球に飛来した隕石を野球バットで打ち返そうとする猫」、ばーん!
バット投げつけるんだw pic.twitter.com/6pwAMrDr1E
P.S. GeminiのAPIキー周りのトラブル
- https://makersuite.google.com/app/apikey から作ったキーを削除した後、再度作れなくなりました😭
- コンソールの「APIとサービス」 https://console.cloud.google.com/apis/credentials から作って復旧できました
解決策は以下を参照したものです。ありがとうございました!
Gemini, MakerSuite, API Keys, and ‘The caller does not have permission’ by Allen Firstenberg https://t.co/mremytgIfN
— nikkie / にっきー (@ftnext) 2024年1月7日
GeminiのAPIキーを削除してもう1回作ろうとしたらGoogle AI Studioでは「The caller does not have permission」
記事参照し、コンソールの「APIとサービス」から作って解決
- エミリーちゃんについてはこちらの怪文書をどうぞ! ただただ か わ い い です↩
-
♊️
↩Geminiって「ふたご座」なんだ。
— nikkie / にっきー (@ftnext) 2024年1月7日
ジェミナイともジェミニとも読むんだ
あっ、ヂェミナイ・エルフってあったな。英語名はGemini Elfhttps://t.co/os3Pjje7SH - https://github.com/google/generative-ai-python/blob/v0.3.2/google/generativeai/client.py#L53-L54↩
- 例えば ↩
- webuiをCPUで動かすと、20秒は待ちます ↩
- 読み返して思ったのですが、この暴走の仕方、松田亜利沙みもありますな〜↩