概要
Stable diffusionを活用する方法を考えていたのだが、RPGゲームなどのキャラクタ画像のようなものを作成するのによいのではないかとかんがえた。
Ex:クロックタワーのようなイメージ。
参考元はこちら。
しかし、普通にプロンプトをうっていくと、微妙に顔や服装が変わってしまう。なんとなく似ているけど、違う人?って思ってしまうような感じ。
以下の2枚の写真は、全く同じプロンプトで生成したものなのだが、微妙に異なるのがお分かりいただけると思う。
そこで今回は、全く同じキャラで表情を変えさせるように画像を追求していく。
その1:Seed値の固定
まず、一度生成した画像と全く同じ画像を生成するためには、プロンプトの他に、Seed値を固定させる必要がある。
WebUIから直接DLしたのであれば、pinginfoから情報を得ることが可能。ここで得た情報を、Send to txt2img
などに送って、再度generateしてみよう。
すると、全く同じ画像が生成される。
ここで出たプロンプトの中に、表情を追加する単語を追加する。追加するプロンプトの参考サイトは以下。
ここから、単語を追加した形の各画像を見ていく。
grin
(歯を見せて笑う。構図変わってるけど、表情としては成功)
sad
も試したのだが、上記の画像とほとんど一緒で変わっていない。
cry
これは悲しそうな感じはだしているが、泣いてないように見える。絵が悪かったか。
surprised
このプロンプトだと、驚くというより困ったor呆れた感じに見える。本来はもっと驚いてくれるはず
その2 in painting機能を使う。
ここまでの画像を見ていただいてお分かりかとおもいますが、イヤリングとか帽子とか、Seed値を変えても微妙に、もしくは大きくずれたりするのです。これをなんとか解消するために、WebUIのin painting機能
を使用します。
この機能は,img to imgで、画像の選択箇所のみを再生成する機能。
in painting機能の使用方法
img to img
の画像を開き、下の方のinpaint
を開く。そして、今回変更したい画像をアップロードする。
すると、黒い丸がカーソルで現れる。
その後、顔の部分だけを黒丸で隠す。
また、txt_to_imgで使用していたプロンプト、ネガティブプロンプトとシード値を入れ込んで画像を生成する。
すると、服装とかをそのままで表情を変えられる。この時、seed値が-1だったり、プロンプトを指定していない場合、画像がおかしな表示になるので忘れずに指定すること。
今回、 grinで生成してみたが、 smileとあまり大差ないかも。
cryingこれが一番わかりやすい。同じキャラだが、表情が明らかに違う。
sweat, surprised, open mouth いい感じに驚いてくれている
結論
画像の表情のみ変える場合は、以下のように作ればOK
- プロンプト、ネガティブプロンプト、Seed値などの情報を同じにする
- inpaint機能を使い、変更したい部分のみ変える。
これだけで、かなり素材として使いやすいものが出来上がる。
参考サイト