Stable Diffusionで思い通りの絵を描画するにはコツが必要です。一番大切なのがPrompt即ち呪文といわれるもので、その次にはSEED値です。ここではその例を挙げてみたいと思います。
AIで描かれるために必要な指示はいくつかありますが、次の3要素を押さえておきます。
画像生成AIで上手に絵を描くには
Stable Diffusionで思い通りに絵を描くには、3つのパラメーターが必要になります。この3つの値を指示してあげてAIに絵を作ってもらうのです。
prompt
まずprompt。別名、呪文ともいわれていますが、どんな絵画やイラストを描きたいのか?を「英語」でテキスト指示するものです。どんな絵を描きたいのか? という内容を細かく正確に言葉巧みにテキストで指示していきます。文節や単語の区切りは“,”です。
例) A digital illustration of a medieval town, detailed, trending in artstation, fantasy,…
英語が苦手な人は、英訳サイトなどを利用して、はじめは英単語でも英文でもあまり気にせず、作成してみましょう。ただこのpromptの指示だけがすべてではなく、次のSeed値が描画に大きく影響していきますので、あまり深く考えず頭にある絵のイメージを単語に変換していきます。
Seed
PythonではSeedは乱数を表します。promptで指示された内容とSeed値によって、絵柄が大方決まります。seedは乱数であるため、同じpromptでも出力する絵は違ってきます。
scale
入力されたPromptにどれだけ近い画像を生成するかのパラメータとなります。0−20の値を選ぶことができますが、大体5~10くらいの値が良いとされています。値が大きい程、入力した文章に近い画像が表示され、あまり高すぎると画像がギラギラして見にくくなるということです。
Steps
画像を生成する際にどれだけの工程を掛けるかというパラメータで、0−150の値を選択できますが、50~80程度で十分です。値が大きいほど多くの工程を掛けることが出来ますが、その分画像生成に時間がかかり、メモリも必要になるので、50~80程度に設定するのが無難でしょう。Stepsの値を高くして多くの工程を繰り返せば、より詳細な画像になる傾向ですが、絵としての完成度が上がるとは必ずしも言えないところ。
いくつか実際の画像を見ながら確認していきましょう。
prompt 呪文の書き方
“これ!”…というルールがあるわけではありませんが、だいたい次のような原則があるようです。「手前にある文ほど強く意味が現れる、後ろにある単語ほど弱く現れる」
「最後の文はちょっと強調されて表現される」
「前置詞や関係代名詞の前の単語のほうが強くでて、後ろの単語のほうが弱くなる」
ちなみに、75文節(センテンス)のみ認識しているようですので、なんでも細かく記しすぎても前半の75文節までしか、反映しないようです。
また英語表現も様々、Cityとtownでは描写されるものにも違いが出てきます。ただ単語を並べればよい、ということでもなく、キチンと意味が通じる文章が望ましいといえます。美術館で絵画を説明するような文章が望ましいとか。
だいたい以下のような内容で示せるとよいようですが、これも目安です。
<全体のフォーマット><主題><主題の補足><作者><全体の補足><フレーバー>
画風や画質に関する呪文(例)
画風を指定する場合。
- kawaii(女の子を描くとき)
- illustration of a beautiful girl(女の子を描くとき)
- profile(横顔を描くとき)
- fromt(正面)
- beautiful big anime eye(アニメのような大きな目)
- beautiful face(美しい顔)
- detailed eyes(細い目)
- detailed mouth(小さめの口)
- Realistic(リアリズム)
- Oil painting(油絵)
- Pencil drawing(鉛筆画)
- Landscape painting(風景画)
- Granblue Fantasy(幻想的)
- rim light(リムライト、光が差し込んでいい感じになる)
画質の呪文。以下のテキストを最後につけると高画質になりやすいそうです。
- Unreal Engine (gameエンジン ゲーム画質は高いという学習をしたのか?)
- Playstation5
- aken by Canon EOS 5D Mark4 (cannonのカメラ画質が高いことを学習しているらしい)
- taken with Canon 5D Mk4
- 4K
ほかにもアーティスト名を入れる方法もあります。
- Leonardo De Vinci(ダビンチ)
- Vermeer(フェルメール)
- Van Gogh(ゴッホ)
- Banksy(バンクシー)
- Hayao Miyazaki(宮崎 駿)
- Makoto Shinkai(新海誠) など
呪文・Promptの例
では、近未来の都市の画像を生成してみましょう。Promptを以下で設定していくつかの画像を出力してみます。
prompt = "Realistic,future tense,Virtual computer town of the future,Skyscrapers with electric lights,More Details,nighttime,Playstation5,4k"
12枚位作成してみると以下のような画像が生成されます。
Stable DiffusionではSeed値を故意に指定しなければ基本ランダム(=乱数)の値となります。なので、上記の画像のpromptはすべて同じですがSeedの値がそれぞれ違うため(乱数)、異なる画風が出力されます。同じものを出力する場合はpromptとSeed値を固定にすると同じ画像が出力されます。ただしStable Diffusionのバージョンによっては異なる画像が出力されることもあるようです。
promptの影響を見るため、SEED値・Scale値・Steps値を固定してpromptを調整してみましょう。
未来の都市をImageを作成してみます。「未来の仮想都市」を意味するテキストで指示。
#◆呪文◆
prompt = "Virtual computer town of the future"
seed = 897799633
scale = 9.25
steps = 68
微妙ですね。
もうちょっと言葉を足していきます。
「リアル」「未来」という意味を付加させてみました。
#◆呪文◆
prompt = "Realistic,future tense,Virtual computer town of the future"
seed = 897799633
scale = 9.25
steps = 68
さらに言葉を足します。
「高層ビル群」「電飾」の意味を付加させてみます。
#◆呪文◆
prompt = "Realistic,future tense,Virtual computer town of the future,Skyscrapers with electric lights"
seed = 897799633
scale = 9.25
steps = 68
背景を「夜」とする情報を付加。
#◆呪文◆
prompt = "Realistic,future tense,Virtual computer town of the future,Skyscrapers with electric lights,nighttime"
seed = 897799633
scale = 9.25
steps = 68
ぼやけ気味なので「高画質」の意味を付加してみます。
#◆呪文◆
prompt = "Realistic,future tense,Virtual computer town of the future,Skyscrapers with electric lights,More Details,nighttime,Playstation5,4k"
seed = 897799633
scale = 9.25
steps = 68
ここまでできました。
もうちょっと詳細なものをと思い、steps値を150にしてみます。
#◆呪文◆
prompt = "Realistic,future tense,Virtual computer town of the future,Skyscrapers with electric lights,More Details,nighttime,Playstation5,4k"
seed = 897799633
scale = 9.25
steps = 150
描きたいイラスト、絵をとりあえず呪文に置き換え、prompt・呪文を設定します。一旦、Seed値等は何も固定せずランダムで何枚かの画像を出力して、イメージと近しいものをピックアップ。そのseed値を調べて、その後Seed値を固定させて、prompt・呪文を書き足したり修正したりして更新するのが近見とかと思います。