Stable Diffusion プロンプトウィザードを目指して 1
最近AI画像生成にハマったので、kawaii二次元キャラ画像生成を効率的にするべく
思考整理件備忘録件研究のため
自身の術式構築解説と最近流行(22/9/~9)のプロンプト等を追っていきます。
※Danbooruのテキストと画像のペアでファインチューニングされたwaifu-diffusionが公開されました。簡単に言うと二次元特化のSDです。導入方法は下記等。この界隈の進歩のスピードは凄まじいですね。
※現在(22/10/25~)はNovelAIが主流です。この記事の一部内容は古く必要なくなっている部分もありますのでご注意ください。
NovelAIは231トークンまで、AUTOMATIC1111版ではトークン制限は開放されてますので以下前提は読み飛ばしてください。
前提
私のPCはクソ雑魚GPUなのでColab環境で実行しています。前提としてSeed,Scale,Steps,等の知識は持っているものとしてプロンプトを中心に解説していきます。環境構築等は偉大な先人を参照してください。
さて、SD1.4にはトークン制限と言うものがあります。75トークンを超えたプロンプトは認識しなくなるので呪文の長さを短く納める必要があります。
1 つのトークンは通常、一般的な英語のテキストの約 4 文字に相当します。下記URLはSDではない別モデルでのトークン数分析機です。トークンと言われてもピンと来ないと思うのでテキストボックスに適当な文字列を入れてみてください。~80Tokens辺りまでに呪文を納めることをおすすめします。
SDの具体的なトークン数を知りたい場合はこちらの記事が非常に参考になります。
※追記
SD用トークナイザーwebサービスが公開されました。下記URLのテキストボックス内に呪文を入力するとトークン数を計測してくれます。ネガティブプロンプトも75トークンまでです。
個人的にはトークン数は少し超過している位が丁度いいと思っています。呪文を改変した際に空きが出るともったいないので。勿論、出力対象が定まっている場合のシンプルな短い呪文もまた魅力的。
SDのプロンプトは基本英語で記述します。一部日本語、絵文字も使えます。使える単語を調べたい時は下記URLから検索してみてください。SDの学習元の単語と画像の紐づけを検索出来るサイトです。
用語について
本文にて解説。
呪文=プロンプト
術式構成=プロンプトの構成
短縮詠唱=プロンプトを短縮あるいは日本語、絵文字等意味を圧縮された単語を使い術式を短縮しトークン制限を回避するテクニック
術式構築の基礎
前置きが長くなりましたが本文です。
大原則として呪文の効力は入力順に影響力が強くなりますので、主題は先頭の方に持っていきます。
語尾に!マークで単語を強調すると効力が強く、単語を()で囲むと効力が弱くなります。
フォークされたローカル環境では強弱ワードが変わっていたりするのでリドミを参照してください。
二次元キャラを生成したい場合の自分のテンプレはこんな感じです。
⇔で挟まってる呪文は出力によって入れ替えます。主に背景よりも主題を強調したい時は主題を先頭に、絵が曖昧でハッキリしない時は画質画風系呪文を先頭の方に持っていきます。全身が映らない場合はアングル系呪文を先頭の方に持っていく等。順番は参考までに、自由に入れ替えて頂いて結構です。出力から強弱を意識してください。実際の例で見ていきましょう。
こちらの呪文を元に解説していきます。
selfie,overlooking,から始まってますね。これは行動とアングル指定呪文ですが、呪文自体の持つ効力が弱いので先頭に持ってきました。
他のアングル指定呪文としてfull-bodyやwide-angle等があります。Bird eye viewは鳥が出てくるのでおすすめしません。寄りたい場合はclose‐upや
zoom-shot等。アングル系は効き目が他の呪文と比べて弱めなので、先頭に持ってくるか!で強調するか、破綻しやすくなりますが縦長,横長画像にしてください。記事末尾にアングル系呪文の参考になるnoteへのリンクがあります。
行動指定は研究中です。翻訳して突っ込んだら大体なんとかなる。back of bodyで後ろ姿。
glow landscape,背景呪文です。Backgroundで指定するよりlandscape
で指定した方がより広角な背景を見せてくれます。主題のgirlと繋げるよりも分けて記述した方がわかりやすいです。
stands in (場所)と書くことによって足と全体像を見せるテクニックもあります。
風景メインで見せたい場合はthe (landscape) with the (girl)等で良いです。
Beautiful portrait of cute anime angel girls,主題です。このBeautiful portrait of~は非常に強力な修飾呪文なので覚えてください。girlだけで出力していたパッとしない絵が劇的に良くなります。欠点として上半身にアングルが合ってしまうのでBeautiful full body portrait~~等とうまく組み合わせてください。
Beautiful illustration of a very cute anime girlも使われているようです。こちらはportraitほど主題にカメラが寄らないので引きたい時はおすすめです。extremely detailed CG unity 8k wallpaper of ~で画質とディテールを盛り込んだ高品質な女の子。主題系呪文も奥が深い。
他に主題系修飾呪文が知りたい場合は下記リンクの全体フォーマットを参照してください。主題は生のまま詠唱せず修飾呪文と組み合せるのがコツです。
Angel girls,とすることで服装が天使の衣のようになり、複数人が出力さたりします。二人の絵が欲しい時はcouple呪文もおすすめです。Angel Circle&wings,で天使の羽と輪の指定。容貌の指定は地の英語力が試されますね。私の英語力は中学レベルです。blonde long hair等で髪型髪色の指定が出来ます。
spiral curls hair style,お嬢様風ロールヘア。wavy hair style,ウェーブヘア。
red eyes,blue dress,等で複数の部位の色を指定すると服、目、背景にも指定色が混ざってしまう弊害があります。AIは特定の部分の色を変えるのは苦手なようです。マスクしたimg2imgで対応するなど。
今回は厳密に服装を求めなかったので指定しませんでした。あえて指定せずに出力に幅やランダム性を求めるのも術式構築のポイントです。背景を指定した上で、呪文の中盤~末尾にsky,night,rain,等で状況を指定すると反映されたりされなかったりします。ランダム性を高めるテクニックです。
擬人化系の女の子を出力したい場合はmech girlやdragon girl等。
kitty girlで猫耳、Miqoteのワードでケモ耳が生えます。
〇〇 ears on headで任意の動物の耳が付く。fox,rabbit,horse,等。
chibi,imouto,loli,little,dwarf girl,large eyes,12yo,(年齢。year-old)等で等身が低い女の子になります。
girlをlady,venus,female,ojousama,Vtuber,senpai,oneesan,に置き換えるとまた表現が変わってきます。
concept art,画風指定です。筆で描いたような厚塗りになります。構図がくどくなるので無い方が自然体な絵になる場合もあります。artgerm,は主題が大きく表示され自然な厚塗りに、背景に謎の粒子が散ります。気持ちバストアップが多いです。どちらも呪文の中間辺りに配置すると丁度いい効き目になります。絵がパッとしない場合は思い切ってOctane Render,artgerm,を先頭に持っていきましょう。絵を引き締めてくれます。
pencil drawingで鉛筆画、oil paintingで油絵風、Ink paintingで水墨画風、voxel artでローポリ風、2d vector illustration(1px) ,pixsell art,等でドット絵風になります。塗りの指定がある場合は呪文の先頭に記述しましょう。
人の絵師は顔を注力して描いてくれますがAIはそうではありません。殆どの場合で顔が崩れると思いますので、各種強化呪文で補強します。very beautiful and highly detailed face,等。余裕があれば完全詠唱で良いですが、トークン制限が厳しい場合はdetailed face,facing,loli face,等で短縮します。
目も補強したい場合&eyesと語尾に付け加えましょう。ディテール呪文は貫通して全体に効力が発生するので風景等にも効きます。おすすめです。
shine Highlight Spot on eyes,でハイライトの大きい目になります。
otocador eyes,sharp eyes,等も使われているようですが、個人的には目や表情が固定されて後述する作家の画風が反映されづらくなりますので、特に崩れが気になる場合以外はあまり多様しない方が良いと思われます。
こちらを見てほしい場合はlooking front,を挟みましょう。
表情はemotional girlで頬を染めたり染めなかったり。記事末尾にfaceに関する参考リンクあり。
metalic,latex,Oily,等で対象物がヌルテカになります。肌や服等に。
飛び道具としてglitter particlesで光のオーブが散って神絵っぽくなります。glitter flower particlesで花が舞う。
他の部位について
ample chest,:デカパイで頼む!
Full buttocks,:デカケツで頼む!
nice-bodied,:ナイスバディ!
full body of beautiful thicc cute girl,:主題。ムチムチガール!
stand voluptuously,:官能的に立ってくれ!足を見せる効果もあります。
big breast! huge tits! gigantic boobs!:巨乳!巨乳!爆乳!この呪文を唱えるとAIは一人に付きおっぱい2つまでと学習してないのでおっぱい6個のクリーチャーが出てきます。おっぱい呪文は一つに絞りましょう。おっぱいがいっぱいでお得だね。ふざけんな。
noteでは大人の事情により画像は出せませんので君の目で確かみてくれ。
手に関してはhands is illustでイラストっぽくすると誤魔化せますが基本崩れやすいのでガチャって良いのを引くか隠すかimg2imgかPhotoshopで修正するしかないです。
Yoshitoshi ABe,Range Murata,mucha,Nendoroid-like,ilya kuvshinov,krenz cushart,greg rutkowski,Bouguereau,Pixiv ranking 1st,
こちらに含まれているのは全て画風指定呪文です。画家名も作品名もPixiv ranking 1stも画風指定の要素だと思ってください。ただし、先頭の方に配置すると対象固有の要素が出始めます。muchaだと背景に花やフレームが、Arknightsだと制服の女の子がといった具合です。Granblue Fantasyを入れると背景に空が出やすくなります。
作家名はbyや〇〇styleで囲む場合もありますが、トークン制限を考慮しそのまま入れています。painted byを付けると画風に与える効力が強くなるような気がします。好みの画家や作品名の順番を入れ替えて呪文の強弱を見るのも面白いです。ここの順番調整が沼。
特筆すべきはNendoroid呪文です。体型、画風を全てねんどろいどに染め上げる強力な呪文なので、なるべく後ろの方に配置してください。Nendoroid-likeとすることで等身高めのままねんどろいど風にしてくれるので便利です。人物の体型が崩れたり腕や足が増えたりする場合この呪文で解決出来ます。逆にねんどろいどの画風を全面に出したい時は前の方に持ってきてみましょう。メカと相性が良かったりします。
顔が崩れる場合はBouguereauの力を借りましょう。顔を整えてくれます。イラストライクな画風のmuchaと組み合わせて使うのがおすすめです。
画家名はググって絵柄を確かめて使ってください。自分の好きな絵師名や作品名を加えれば良し。取捨選択が一番重要な部分です。
よく使われる画家、要素
ilya kuvshinov,
greg rutkowski,
krenz cushart,(こちら上記3名が最近(22/9/~9)の呪文に大体入っている作家名。顔の出力と厚塗りが綺麗に)
Cygames,(これを先頭に持ってくる呪文もよく見ます)
Granblue Fantasy,(アニメっぽいドレス衣装)
Azur lane,
Arknights,
by mucha,(短縮してmuchaでも可。効果が若干変わるので出力を比較してください)
by William Adolphe Bouguereau,(短縮してBouguereau,でも効果あり。顔補正効果が強い)
by makoto shinkai,(キャラがアニメ塗りに。背景を入れてくれる)
Tsutomu Nihei(画面が白黒になりがちですが細部の造形が素晴らしい)
Range Murata,
Akihiko Yoshida,
Studio Ghibli style,
Kyoto-Animation style,(Kyoani Styleで短縮化)
japanese anime style,(主題のBeautiful portrait of cute anime~で代用可)
pixiv fanbox,
Pixiv ranking 1st,
painted by KANNA HASHIMOTO,(ハシカンの整った顔立ちを参照する。顔補正等に)
最後にトークン制限の許す限り画質呪文を詰め込みます。
指定したい画質がある場合は先頭の方に持っていきましょう。
ライティング、カメラの指定もこの辺りです。Canon 5D Mk4,cinematic lighting,perfect shadow,等詳しくは記事末尾のチートシートのLightingへ。
Octane Render,の効力が顕著です。ボケを追加し光を良い感じに当ててテカテカになるのでartgerm,等厚塗り呪文で中和してください。
Octane Render,
Unreal Engine,(ボケ感がミニチュアっぽくなるのでお好みで)
photorealistic,
Ultra Realistic,
Extreme Detailed,
8k,4k,
cinematic,
cell shaded,
上記に記述した呪文の効力を確かめたい場合
対象の呪文,+beautiful portrait of cute anime girl,だけの単純なプロンプトを作って効果を確かめてください。結果はこれらの複合です。
多重詠唱について
Highly detailed,Extreme Detailed,ultra detailed,highquality details,
こちらはディテール系の呪文を修飾語を変えて多重詠唱しています。一つの物事に対して多角的に多重詠唱すると呪文の効力が強まります。メカ、風景、女の子の衣装等がより緻密に、複雑になります。!で強調を知らなかった頃の試行錯誤の結果なので今は殆ど使わないかも知れません。トークン制限に余裕があればディテール系は一つ入れると良いです。
画像生成フロー
始めは好きな呪文をlexica等で探してコピペして使ってみましょう。
Twitterで#StableDiffusionkawaii プロンプト で検索するのもおすすめ。
出力したい構想が決まったら、
deepl等翻訳サイトを片手にプロンプトを練る、2~3枚出力する、練るを繰り返し、
呪文の順番を入れ替えたり、付け加えたり消したり。出力の相違から呪文の効力が見えてきます。一日が消し飛ぶ。
私はランダムシードの一発出力で満足してますが、完璧を求めたい方はSEED固定後にScaleとStepsの調整、img2imgでマスク機能を使い部分修正 or Photoshop等のレタッチソフトで合成&修正後GFPGAN等アップスケーリングを使い画像を大きくして完成かな。
最後に
呪文構築練度を上げるには、人の呪文をちゃんと読んで自分も唱えて生成してみるのが一番早い。いわゆるPDCAサイクルを回すこと。私は何処とは言いませんがAIスレに入り浸って公開された呪文をグリモワール.txtにまとめています。日本ライクなLexicaのようなサービスがあると良いですね。あれは本場なので使いにくい。
それと日本語を使える系のSDを利用したサービスですが、日本語テキストと画像で再学習したモデルを使用していると明記されてない限り、日本語を一度英語に翻訳してpipeに渡しているものと思われます。正確なプロンプトを探るには向かないのでプロンプトを探究する場合はローカルかcolab環境の構築をおすすめします。
別の画像生成AI、SDのバージョン変化でこのような術式構築が通用しなくなる時が来ると思いますが、基礎のような物は身につきます。
気に入った呪文が出来て、出力を繰り返してるとハッとするような画像に出会う事もあります。
画像生成は一期一会のコミケの新刊を漁る楽しみと似てますね。だから面白い。
参考までに:
こちらのチートシートも参考になります。頻出呪文をまとめてます。
アングル、写し方、ピントの指定等の呪文の参考になります。
頻出呪文についてまとめてあります。
修飾呪文についての所感。
表情についての研究。一部nsfw表現がありますのでご注意。
日本語版元素法典。
おまけ:
colabで使っている出力用のコード
for文のrange()内の数だけ繰り返し、時刻で保存
stepsだけ30に指定
サイズの指定は64の倍数で
promptは先に別コードで実行
# 繰り返し保存用_縦
import datetime
for i in range(5):
image = pipe(prompt, num_inference_steps=30,height=768,width=512)["sample"][0]
now = datetime.datetime.now()
filename = 'img_'+now.strftime('%Y%m%d_%H%M%S')+ '.png'
image.save(filename)
display(image)
SeedとScaleも指定したい場合はこちら
Seedは4294967295まで指定出来る、-1でランダム
こちらは繰り返すと同じ画像を出力するので1枚づつ
# 詳細出力用
import torch
generator = torch.Generator("cuda").manual_seed(-1)
image=pipe(prompt, num_inference_steps=30,
generator = generator,guidance_scale=10,height=768,width=512)[""][0]
image.save(f"Output.png")
この記事が気に入ったらサポートをしてみませんか?