Stable DiffusionではAIイラストを生成する事ができますが、プロンプトによってはあまり反映されない事が多かったりします。今回はプロンプトとしてイラストの品質を左右するクオリティタグについてどれくらい違いがあるかをまとめてみました。
検証環境
- version: v1.8.0-RC
- python: 3.10.6
- torch: 2.0.1+cu118
- xformers: 0.0.20
- gradio: 3.41.2
- checkpoint: AnythingV5Ink_ink.safetensors [a1535d0a42]
- vae:vae-ft-mse-840000-ema-pruned.ckpt
- サンプリング:DPM++ 2M SDE Heun Karras
- ステップ数:50
- CFGスケール:7
クオリティタグ
・使用するプロンプト
以下のプロンプトにクオリティタグをつけ足してみます。
・ポジティブ・ネガティブプロンプト無し
以下の3枚の画像を出力してみました。一見可愛いイラストが生成されているように見えますが太ももが多かったり、指が変な形になっていますね。それでもちゃんとしたイラストが生成される技術に驚くばかりですね。
・ポジティブプロンプト有り、ネガティブプロンプト無し
先頭から4つプロンプトを新しく入力して生成してみます。
今回はよく使われるクオリティタグとしてmasterpieceとbest qualityを高画質用にhighres,incredibly absurdresを用意してみました。
ポジティブプロンプトを入れた後は結構変わってますね。光の加減や影が大きく違うように見えますね。ただ指は不自然な形のままなのでやはりこのままではだめですね。
・ポジティブプロンプト有り、ネガティブプロンプト有り
表現したくない要素はネガティブプロンプトとして記述することでイラストに反映されにくくなります。今回はよく使用されるlow quality、bad anatomyを入れてみました。以下みたいに(プロンプト:数字)でプロンプトの重みを増やすができます。いろんなAIイラストを見ているとネガティブプロンプトは重みが増やされている事が多いようにかんじました。
ネガティブプロンプトを入れたら肌の質感が変わっている事がわかります。全体的にクリアになっている印象ですね。また胴体の作りもしっかりしており右の画像のように太ももから足までしっかり描かれてますね。しかし指の生成は安定しないので、手は隠すようにポージングさせるか、根気よく生成するしかないようです。
Embedding
ネガティブプロンプトを手入力する方法以外にEmbeddingを使用する方法もあります。
こちらは指定するだけでネガティブプロンプトを簡単に記述できるものとなっていおります。
以下のEmbeddingを使用しました。
- bad-hands-5
手の描写をよくしてくれるEmbeddingです。
ダウンロードはこちら - bad_prompt_version2
入力するだけに簡単に埋め込まれたネガティブプロンプトを使用できます。
ダウンロードはこちら - EasyNegative
こちらもbad_prompt_version2と同じように入力するだけで埋め込まれたネガティブプロンプトを使用できます
ダウンロードはこちら
bad-hands-5
以下が生成した結果です。
やはり完璧とは言えないですが、指の生成がだいぶましになった印象がありますね。これなら満足いくイラストができるまでガチャができそうです。また2Dイラストが強くなった感じがしますので、3Dに近いイラストを生成したい場合は別途ポジティブプロンプトに「3D」などの要素を追加する必要がありそうです。
bad_prompt_version2
以下が生成した結果です。
絵の描き方がきめ細かくなった感じがします。指が怪しいのはいつもの事なので、上記のbad-hands-5と組み合わせ使用した方がいいように見えます。マスピ顔が比較的マシになっているように見えるのでこのEmbeddingを使用して生成したい画風にしていけばいいのではないでしょうか。
EasyNegative
以下が生成した結果です。
こちらは元のプロンプトのタッチを引き継いでイラストを生成している感じですね。こちらも指が不安定なので、bad-hands-5と組み合わせて使用する事が重要な気がします。マスピ顔がそのまま残っている感じがするので画風は要調整ですね。
結論
色々と試しましたが、ポジティブ・ネガティブプロンプトは基本的に定形化されているので、新しく考える必要はそんなにないです。ただモデルやステップ数など様々な影響を受けるので一概にただクオリティタグを入れておけばいいという訳ではなく、状況に応じてキーワードの重みを増やしたり減らしたりと自分なりに試行錯誤する必要がある事が分かりましたね。まぁ結局のところは上手に生成されている方のデータを見てパクるのが一番手っ取り早いですけどね。