Stable Diffusionで人物の全身を出した時、顔が崩れて違和感があることがあります。ここでは画像の顔をなるべくきれいに出す方法を研究しました。好みの問題もありますが、Hires. fixやLLULをうまく使うことで顔をきれいに出すことができました。
ターゲット画像
今回、ターゲットは実写系モデルBrav4から生成した800×640の画像にします。条件は以下の通りです。顔がちょっと残念な感じになっています。
parameters 1girl, solo, embressed, (RAW photo, best quality), (realistic, photo-realistic:1.3), masterpiece, an extremely delicate and beautiful, extremely detailed, CG, unity , 2k wallpaper, Amazing, finely detail, light smile, extremely detailed CG unity 8k wallpaper, huge filesize, ultra-detailed, highres, outdoor, university, garden, full body, white dress, ponytail, long hair, long shot, standing Negative prompt: EasyNegative, bad-image-v2-39000, badhandv4, ulzzang-6500-v1.1, paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans, extra fingers, fewer fingers, ((watermark:2)), (white letters:1), (multi nipples), bad anatomy, bad hands, text, error, missing fingers, missing arms, missing legs, extra digit, fewer digits, cropped, worst quality, jpeg artifacts, signature, watermark, username, bad feet, {Multiple people}, blurry, poorly drawn hands, poorly drawn face, mutation, deformed, extra limbs, extra arms, extra legs, malformed limbs, fused fingers, too many fingers, long neck, cross-eyed, mutated hands, polar lowres, bad body, bad proportions, gross proportions, wrong feet bottom render, abdominal stretch, briefs, knickers, kecks, thong, {{fused fingers}}, {{bad body}}, bad-picture-chill-75v, ng_deepnegative_v1_75t, EasyNegative, bad proportion body to legs, wrong toes, extra toes, missing toes, weird toes, 2 body, 2 pussy, 2 upper, 2 lower, 2 head, 3 hand, 3 feet, extra long leg, super long leg, mirrored image, mirrored noise, (bad_prompt_version2:0.8), aged up, old, ((mosaic)) Steps: 20, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 750707007, Size: 800x640, Model hash: 9c03252bea, Model: braBeautifulRealistic_v40
Restore faces(顔の修復)を使ってみる
Sampling methodの下にある「Restore faces(顔の修復)」にチェックを入れて使ってしました。
しかし、あまり変わらず違和感は変わりません。
Hires. Fix(High Resolution Fixing: 高解像度修正)を使ってみる
Hires. FixはWebUIに標準で備え付けれつけているアップスケーラーです。元の画像の構成を維持しつつ、高解像度に修正してくれます。使うにはSampling methodの下にある「Hires. Fix」にチェックを入れます。そうすると下にUpscalerの設定欄が出てきます。Upscalerはいろいろありますが、それぞれ結果が異なってきます。「Latent」や「ESRGAN_4x」あたりが個人的におすすめです。Upscale倍率(Upscale by)は私は1.5倍に設定しました。大きければそれだけ高解像度のものが得られますが、その分、GPUのVRAMを使います。私のPCの場合は1.7倍くらいが限界でした。Hires stepは20に設定しました。レイアウトが変わってしまう場合は、下げてください。
かなり良くなります。
LLUL拡張機能を使ってみる
さらに良くするために、LLUL拡張機能を使ってみます。LLUL拡張機能は「Extensions」の「Available」のリストから探すか、「Install from URL」に「https://github.com/hnmr293/sd-webui-llul」を入力し、「Install」ボタンを押すことで導入できます。
LLUL(Local Latent UpscaLer)は局所的にアップスケーラーとダウンスケーラーを適用することで、画像の一部分の緻密さを向上させる処理方法です。
設定は以下のようにします。Enableのチェックボックスにチェックを入れます。また、「load BG」から画像を読み込むことができます。灰色の四角を修復したいところに重ねます。だいたい場所があっていればよいので、画像を呼び出さなくてもおよその位置に置いておけばよいです。灰色の四角の大きさは、「Multiplication」から変えることができます。大きければ範囲が狭くなります。修復する部分が覆われるように設定します。WeightはLLULの適用の強さですが、大きすぎるを画像崩壊するので、適度な強さにします。この状態で画像を生成します。
雰囲気は悪くないのですが、いかんせん解像度が低いので良くありません。
そこでLLULとHires. Fix(ESRGAN_4x)を組み合わせてみます。どうでしょう。個人的な好みもありますが、美しい女性が生成できました。
まとめ
少し分かりにくいので顔の部分を切り出して比較してみます。LLULを使うか、使わないかは本当に個人の好みによるところがあるかと思いますが、最後はアップスケールで解像度を上げるのがポイントですね。GPUのVRAM次第ではありますが。。。
コメント