StableDiffusionのPrompt(呪文)を自然言語処理モデルGPT-3で自動生成する方法

  • URLをコピーしました!

今回はStable Diffusionなどの画像AIに生成するための指示を与えるPromptを、GPT-3を使ったライティングツールCatchyで自動生成する方法について解説します。

私のように英語が苦手でStable DiffusionのPromptを考えるのが面倒という方には特におすすめの方法ですので、ぜひ試してみてください。

また、Stable Diffusionに関する記事を以下のページでまとめていますので、あわせてご覧ください。

目次

Stable Diffusionとは

Stable Diffusion(ステーブル・ディフュージョン)は2022年8月に無償公開された描画AIです。ユーザーがテキストでキーワードを指定することで、それに応じた画像が自動生成される仕組みとなっています。
NVIDIAのGPUを搭載していれば、ユーザ自身でStable Diffusionをインストールし、ローカル環境で実行することも可能です。
(出典:wikipedia)

Stable Diffusionについては以下のページでまとめていますので、あわせてご覧ください。

GPT-3を使ったAIライティングツールCatchy

出典:Catchy公式
今回、Stable DiffusionのPrompt生成に使用するのは、AIライティングツールCatchy です。

Catchyは自然言語処理モデルGPT-3を使って様々な文章を生成できるサービスです。

Catchyには様々な文章を作成する機能がありますが、その中にはMidjourneyやStable Diffusionのような画像生成AIに対するPrompt(指示)を生成するのに特化した機能が用意されています。
今回はこの画像AI用のPrompt生成機能を使ってStable DiffusionのPromptを生成してみます。

また、Catchyは無料枠が用意されており毎月無料クレジットが割り当てられますので、課金せずに使うことも可能です。ぜひ気軽に試してみてください。

英語でPromptを考えるのが苦手な方にもおすすめですし、Catchyで生成したPromptで良さそうなものを手作業でカスタマイズして使用すれば、Promptを考える時間の節約にもなります。

GPT-3とは

GPT-3 (Generative Pre-trained Transformer 3)は、OpenAIによって開発された大規模な自然言語処理の人工知能モデルです。GPT-3は1700億個のパラメータを持ち、自然言語生成、文章の翻訳、Q&Aなど様々なタスクに対応することができます。

GPT-3は、非常に高い精度で人間による文章を生成することができ、GPT-3を外部のアプリケーションから使用するためのAPIとして提供されていますので、開発者はGPT-3を活用してアプリケーションを開発することができます。

Catchyの使い方

まず以下のCatchyの公式サイトにアクセスします。

Catchyのユーザー登録が完了すると、以下のようなメニュー画面が表示されます。左のメニューの「生成ツール」をクリックします。

生成機能の一覧が表示されたら、下の方にスクロールしていきます。
「画像生成AI用の英文」という項目がPrompt生成機能ですので、こちらをクリックします。

Promptを生成するための情報を入力する画面が開きますので、この赤枠の部分にどんな絵を描いてほしいかを日本語で記述します。
今回は例として「近未来的な大都市に佇む一人の少女。サイバーパンクな風景。」と入力してみました。

続いて絵のスタイルと文章の雰囲気を入力します。
今回はスタイルは「アニメ」、文章の雰囲気は「カジュアル」を選んでみました。

最後に、入力欄の下にある「作成する」のボタンをクリックします。

数秒待つと以下の画面の赤枠の部分に英語のPromptが生成されました。これをStable Diffusionに入力し、イラストを生成させます。

Stable Diffusionでイラストを生成するためのソースコード

使用する学習済みモデル Anything V4.0

今回、イラストを生成するのに使用するStable DiffusionのモデルはAnything V4.0です。
セットアップ方法は以下の記事で解説していますので、あらかじめ済ませておいてください。

作成したソースコード

Stable Diffusionを実行するためのPythonのコードは以下の通りです。
先ほどのAnything V4.0のページで掲載したコードと同じもので、16行目のPromptを指定している部分にCatchyで生成した英文を入力しています。

from datetime import datetime
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
import torch

#使用するモデルを設定
model_id = "andite/anything-v4.0"

#StableDiffusionパイプライン設定
scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, torch_dtype=torch.float16)

#使用する計算機を設定(GPUがない場合は"cpu"に変更)
pipe = pipe.to("cuda")

#画像生成の指示(呪文)
prompt = "A girl with brown hair wearing a white hoodie and purple cargo pants stands in a futuristic metropolis with tall, imposing buildings that stretch high up into the sky. The city is illuminated with bright neon colors at night and the ground is covered with a maze of wires that stretch beneath her feet. In the background, the moon glows a deep purple and giant searchlights illuminate the cityscape. The girl looks amazed and encouraged by the possibilities ahead. Art style: animation."


#描画する回数を設定
num_images = 5

#イラスト生成
for i in range(num_images):
  #推論実行
  image = pipe(prompt, height=768, width=768).images[0]

  #生成日時をファイル名にして保存
  date = datetime.now().strftime("%Y%m%d_%H%M%S")
  path = date + ".png"
  image.save(path)

実行結果

先ほどのプログラムを実行した結果は以下の通りです。
今回はCatchyで全く同じ条件で3回Promptを生成して、それぞれの結果を確認します。

Catchyで生成したPrompt その1

まず1つ目のPromptです。

 A girl with brown hair wearing a white hoodie and purple cargo pants stands in a futuristic metropolis with tall, imposing buildings that stretch high up into the sky. The city is illuminated with bright neon colors at night and the ground is covered with a maze of wires that stretch beneath her feet. In the background, the moon glows a deep purple and giant searchlights illuminate the cityscape. The girl looks amazed and encouraged by the possibilities ahead. Art style: animation.

近未来の大都市に黒髪の少女が立っているというPrompt通りに画像が出力されました。

サイズを横長にして試しましたが、Anythingの特性上、正方形の方がキャラクターが安定しているように感じました。

Catchyで生成したPrompt その2

続いて2つ目のPromptです。

 A young girl with bright blue hair stands in a bustling futuristic metropolis. She is surrounded by sky-scraping buildings of various shapes and sizes, all illuminated in a brilliant orange light. The streets are lined with neon signs. Indistinct shapes whiz by in the sky, and the girl looks up in amazement. In the background there are people walking and cars zooming, and the sky is a mix of blues, pinks, and purples. Art style: animation.

一人の少女と指定しているのですが他の人物も写っています。この辺はネガティブプロンプトで指定するといいかもしれません。

Catchyで生成したPrompt その3

3つ目のPromptです。

 A girl with dark hair is standing in a futuristic metropolis. The buildings are brightly lit and have neon-colored signs. Behind the girl, cars are streaming by on the high-tech highways, and the skyline is illuminated with bright lights. The girl is wearing a purple jumpsuit and has the city glow in her eyes. The background is a cyberpunk landscape with high tech robots and mechanical drones hovering around. The sky is blue and the ground poured in a mix of silver and midnight shades. Style: Animation.

人気コミックGANTZで登場するようなスーツを着た少女が出てきました。
同じ条件でも、生成されたPromptによってずいぶん雰囲気が変わります。

まとめ

今回はStable DiffusionのPromptをGPT-3を使ったライティングツールCatchyで生成する方法について解説してみました。

Anything V4.0が優秀であることもあって、非常にクオリティの高いイラストを生成することができました。Catchyは無料で利用できるクレジットが用意されていますので、画像AIでもぜひ活用してみてください。

また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。

スキルアップや副業にぜひ活用してみてください。

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。

講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。

それでは、また次の記事でお会いしましょう。

よかったらシェアしてね!
  • URLをコピーしました!
目次