見出し画像

Stable Diffusionの呪文や個人的なコツをまとめてみる

Google Colaboratory で動かせるので自前でもやってみましたが、なかなか最初は上手くいかないものですね。
ここでは私が試行錯誤した呪文や設定のコツなどをメモがてら残してみます。
当たり前ではありますが、txt2imgとimg2imgでは扱いが変わってきますのでご注意下さい。

スチームパンク風金髪美少女


■ガイダンススケール設定(Guidance Scale)

標準では7.5に設定されていますが、最小1~最大20までの幅があります。
背景中心にするか人物中心にするかで、この設定は変えた方が良さそうです。

背景中心では値を大きくすると代わり映えがしにくくなり、値を小さくするとバリエーションが増える感じがします。
似たような背景を連続して出したい場合は大きめの数字を、パターンが欲しい場合は数値を小さくするのがお勧めです。
閾値としては4.5~7.2辺りでちょうど良く感じます。

人物中心だとスケール値を小さくするとクリーチャーが生み出されやすくなるのでお勧めしません。この場合は少し大きめの数値にすると良いでしょう。
感覚的には、8.2~9.5辺りでしょうか。これ以上大きくしても代わり映えがあまりしません。

■推測値(Inferance Step)

この数値が低いと処理が速くなりますが、画像全体の印象が荒くなりがちです。油絵などの場合には低い方が味が出るかもしれないです。
逆にディティールを細かいものを描写する時(例えばレースの付いたドレス)などを描写する場合や、背景の細かさなどを出したい場合には大きめの数字を設定すると良いでしょう。
初期値は50ですが、最大200まで設定可能です(その分、時間もGPU処理も多くなります)。
細かい描写をさせたい場合は、70以上をお勧めします。高品質なイラストや写真のようなものは150近くにすると良いでしょう。

■呪文(Prompt)

最初に像全体の指定を行います。
それが写真なのかイラストなのか、といった感じです。
a photograph of や a Illustration of といったもの、concept idea of などといった主文を最初に入れておきます。
その述語として、人物なのか場所なのか等の指定と、簡単な説明(少女なのか老人なのか、未来都市なのか欧州風なのか)を足しておきます。

その次にはカンマ区切り(ここ大事)で印象を羅列していきます。
油絵なのか水彩画なのか、リアリスティックなのか抽象的なのか…。
また、時代背景などもここに入れておくと良いでしょう。近未来や過去、ファンタジー風などといった感じです。
また視点などもここで指定しておきます。顔のアップだったり、全体像だったり、俯瞰だったりです。

次にクオリティについて記述していきます。
〇〇風のように、だとか実写的だとかCGっぽくだとかです。
また照明についても記述しておくと良いでしょう。ハイコントラストにしたり、カラフルにしたりだとかです。

最後の付け足しで、おまじない的な文言を入れると出力を安定する事ができます。
MMDでいうところの、MMEポストエフェクトみたいなものですね。
逆光気味だとかグローだとか、モノクロだとか古文書的なのとか、ですね。

ファンタジー風異世界の繁華街のコンセプトアート


■呪文例

・冒頭
a photograph of
concept idea of
Illustoration of
Illustration concept art
Anime key visual

・人物
Anime Girl with white dress(白いドレスのアニメ風少女)
blond hair woman with black suite(黒スーツの金髪女性)
(基本的に人物 with 服装で指定可能)

・場所
at  ruins(廃墟)
at nearfuture city(近未来都市)
at cyberpunk bar(サイバーパンクなバー)

・時代
retrofuture
another world
old style
fantasy

・その他
カンマ区切りで思いついた単語を羅列していきましょう。
流行りの新海誠風であれば「makoto shinkai」とか、ジブリ風であれば「ghibli」だとかです。
CGっぽくしたかったらUnrealEngineとかゲームの名前とか。
イラスト風であればpixiv FANBOXとか入れてみるとそれっぽくなる確率はあります。

・例文
a photograph of beautiful girl with short blonde hair having a drink in bar, human face head hair forehead temple face eye eyebrow eyelash eyelid eyeball iris cornea nose cheek mouth lips ear jaw neck upper hand palm finger arm elbow wrist shoulder chest finger kawaii pixiv emotional, makotoshinkai, masamuneshirou, finalfantasy, dramatic lighting, very colorful, beautiful face, intente beautiful light, high contrasthigh detail, high quarity

※途中に出てくる
human face head hair forehead temple face eye eyebrow eyelash eyelid eyeball iris cornea nose cheek mouth lips ear jaw neck upper hand palm finger arm elbow wrist shoulder chest finger kawaii pixiv emotional
ですが、これは人物描写をする時に入れておけば顔や体型が崩れにくくなるおまじないです。
「emotional」の前がpixivになっていますが、ここをsmileにすれば笑顔になりますしanglyにすれば怒った顔になります。
何にせよ、目があって鼻があって口があって…みたいな指定をしてしておけばクリーチャー化は防げます。

■呪文の応用(文言の演算)

Promptは演算子が使えます。
美少女+(京都アニメーション - ジブリ)
といった感じで入れると、京都アニメ風からジブリ風味を削れたりします。

美少女*0.5(京都アニメーション - ジブリ)
とやると、それぞれを半々で混ぜます。
美少女*0.7(京都アニメーション - ジブリ)
とやると、7割京都アニメっぽく、3割をジブリっぽくできます。

この辺りの演算を上手く使いこなせば、風味や絵柄、ディティール等を細かく指定できます。

■乱数設定

コードを弄る必要がありますが

generator = torch.Generator("cuda").manual_seed(シード値)
image = pipe(prompt, generator=generator)["sample"][0]

という感じでジェネレーターを定義すればいけます。シード値が固定されれば同じ絵を出力しますので、細かい調整に役立ちます。

■最後に

Stable Diffutionに限らずAIでの芸術活用は面白いですね。色々試行錯誤していると深みにハマっていきます。
Stable~はまだまだ画素数制限や計算速度での課題は残りますが、今後サウンドやら3DCGやらにも広がっていくかもしれません。
権利の法的問題などの整備がまだまだではありますが、道具は利用してナンボな所もあるので、今のうちに楽しめる事はやっておく事をお勧めします。

どこにでも居るバーチャルJC MMDユーザーの一人。 MMDアニメーター、動画制作・編集、VTuber関連制作などを行っているただのJC。