Stable Diffusionで画像を生成すると、短時間で様々なアニメ絵が作れて面白いですよね。しかし、一発でよい画像が出来るとは限りません。
その中でも「構図や背景は好みなのに、人の絵だけぼやけてしまって微妙な感じになってしまった」という経験をした人は多いと思います。
今回はそんなStable Diffusionで生成した画像がぼやける原因と対処法を紹介していきたいと思います!
Stable Diffusionで生成した画像がぼやける原因
ぼやける原因ですが、基本的にはプロンプト・ネガティブプロンプトが悪いか画像サイズが小さいかなどが挙げられます。
プロンプトに関しては、命令が悪いとうまくいかないのは使ってみるとわかると思います。
またStable Diffusionで絵を描く場合、ノイズまみれのキャンパスからノイズを取り除いて描くため、画像サイズが小さいとどうしても細かいノイズ除去が出来ず画像がぼやけてしまいます。
生成した画像がぼやける場合の対処法
画像がぼやける場合の対処法は複数あるので、それぞれ説明します。
まず下記プロンプトで比較元となる画像を出力します。
<Prompt>
A girl
上記のように女の子の画像で今回は比較していきます。
これだけで見ると、そこまで違和感なく見えますが、ここからどう変わるかを確認していきましょう。
①品質・高解像度に関する呪文(プロンプト)を入力する
基本的に品質や解像度を設定しておかないとぼやけた画像になる可能性が高くなります。これはAIがどこまでの品質・解像度を要求されているか理解していないためです。
人間の感覚で絵を描こうとすると、アニメの絵ならこれぐらいの書き込み、写真風ならこれぐらいの書き込み、水彩画ならこれぐらいの書き込み、と大体の品質や解像度を頭の中で設定できます。
しかし、AIではモデルやSampling methodによって、どのぐらいの書き込み量にするかは暫定でしかないため、人間の考えている書き込み量とズレが生じ、それが品質と解像度に影響を与えてしまうのです。
そのため下記の品質、解像度に関するプロンプトを入力することで解消することがあります。
best quality
masterpiece
16k or 8K
ultra detailed
デフォルトだと背景に対して少しピントが合っていないような人物がはっきりしていない画像でしたが、プロンプトを追加したことで人物像がはっきりと出力されました。また髪の毛(特に頭頂部)の書き込みも多くなり、全体的にぼんやりとした感じが減っています。
これらはアニメ絵や実写風など、絵の種類にかかわらず良い画像を出すために入れておくとよいでしょう。
②低品質・低解像度に関する呪文(ネガティブプロンプト)を入力する
プロンプト同様にネガティブプロンプト側にも品質や解像度の呪文を入れることでぼやけるのを解消することができます。
プロンプト側だけでなく、ネガティブプロンプト側で品質と解像度の下限閾値を命令しておくことで、
「品質と解像を最高で出力、ただしノイズ除去の過程で最高にならなかったとしても、最低限普通の画像(ぼやけていない画像)を出力して」というような命令にすることができます。
有効なネガティブプロンプトは下記になります。
worst quality
low quality
blurry
lowres
先ほどのプロンプト追加よりも絵柄がはっきりとしています。これは「blurry」を追加したことによる影響が大きいと考えられます。「blurry」は直訳すると「ぼやけた」という意味になり、ネガティブプロンプトに入れることで直接「ぼやけた画像を出さない」という命令になり、このような絵柄の違いとして出力されました。
ネガティブプロンプトもプロンプト同様に絵の種類にかかわらず、絵をはっきりさせるためには入れておくとよいでしょう。
※「ネガティブプロンプト」については、以下の記事で詳しく解説しています。
③画像のサイズを大きくする
Stable Diffusionで絵を描く場合は512×512を基準として絵を出力することが多いと思います。
学習モデルの参照元や生成速度の関係でこの解像度となっていることが多いですが、実際にAIで画像生成するには少し解像度が足りないです。
ノイズまみれのキャンパスからノイズを取り除いて描く都合上、どうしても解像度が低いと取り除くノイズが荒くなってしまい、絵の境界付近の色分けが出来ずに絵がぼやけてしまうのです。
単純に出力を1024×1024で出力してみます。
ネガティブプロンプトに何も入れてなくても、「blurry」を追加した時同様に絵柄がはっきりしました。
ただし512×512と1024×1024ではキャンパスサイズが違うので、出てくる絵の構図も変わってしまうので、ある程度絵の構図が決まっている場合は注意が必要です。
④高解像度化する機能「Hires.fix」を使う
画像のサイズは大きくしたいけど、構図は変えたくない。こんな時に使える機能が「Hires.fix」です。
「Hires.fix」とは高解像度補助を行ってくれる機能で、標準で備わっているため余計なダウンロードをしなくても使える便利な機能です。
通常の高解像度の絵を生成する手順ではなく、下記の手順を踏むことで高解像度化を行っています。
1.低解像度での画像生成
2.1の低解像度の画像をアップスケールして高解像化
3.2の高解像度化された画像をimg2imgで再生成を行って出力
この手順1で低解像度の画像を生成するため、高解像度でも構図が変わることなく生成することができます。
少し手が変になっていますが、全体的に画像がはっきりとして、構図もベースとなったデフォルトの絵に近くなっています。
安定してぼやけが少ない良い画像が生成されやすいですが、普通に高解像度の絵を出力するよりも手順が多く、どうしても時間がかかってしまうため、大量の画像を生成するときには注意が必要です。
⑤拡張機能「After Detailer」を使う
できるだけ512×512で出力した絵から変えたくない。という時に役立つのが「After Detailer」です。
標準機能ではないためインストールなどの手間がかかりますが、手間に見合った以上の効果を発揮してくれます。
「After Detailer」は「Hires.fix」と違い、画像の中から顔や体を自動抽出し、その部分だけを新たに描きなおします。そのため背景や服装などを変化させることなく、ぼやけた画像をはっきりした画像へと変化させることができます。
ここでは簡単にインストール手順と使い方を説明していきます。
インストール
まずは「Extensions」の「Install from URL」タブから「URL for Extension’s git repository」に下記をと入力します。
入力したらInstallボタンを押します。
https://github.com/Bing-su/adetailer.git
成功するとInstallボタンの下に下記の表示がされます。
xxxはStableDiffusionが入っているディレクトリになります。
Installed into xxx\extensions\adetailer. Use Installed tab to restart.
インストールが無事終了したら、一度WebUIを再起動します。
その後、「Extensions」の「Installed」にadetailerが表示されていることを確認します。
※表示されていない場合はインストールが失敗しているか、WebUIが再起動していない時なので、再度インストール再起動を行ってください。
adetailerにチェックを入れた状態で[Apply and restart UI]ボタンを押すと再び再起動します。
これで準備は完了です。
After Detailerの使い方
txt2imgタブを開くと、Seed値の下に新しくADetailerのタブが出来ています。
[ADetailer]をクリックし展開すると、下図の画面が表示されます。
「Enable ADrtailer」にチェックを入れます。これによってAfter Detailerが有効になります。
「ADetailer model」で変えたい部位について選択します。今回は顔をはっきりさせたいため、
「face_yolov8n.pt」を使用します。
これでAfter Detailerの準備は完了です。
後はプロンプト、画像サイズなど設定をデフォルトの絵と全く同じにして、[Generate]ボタンをクリックして画像を生成します。
After Detailerの出力結果
画像を出力すると下記のようになります。
少しわかりにくいですが、顔の部分がはっきりしました。
よく見ると瞳の書き込みの量や、顔に映る髪の影など、より精密に描かれていることがわかります。
「face_yolov8n.pt」の代わりに他のADetailer modelを使用することでも、顔のぼやけを解消したり、印象を変えることが出来ます。
一例ですが「mediapipe_face_short」を使用すると下記のようになります。
よりはっきりと顔が出力されましたが、若干表情が恥ずかしがっているような感じに仕上がりました。
このように、Detailer modelによって顔の印象は変わるので、自身の絵に一番合ったDetailer modelを探してみてください。
After Detailerで他に出来ること
After Detailerでは狙った部位をはっきりとさせるだけでなく、顔であれば表情を変えることもできます。先ほどの設定に追加でlaugh:笑う。というプロンプトを追加します。
画像を出力すると下記のようになります。
デフォルトの画像のまま表情だけ変えることが出来ました。
今回は顔に注目したのでこのような結果となりましたが、手や他の部位のDetailer modelもあるので、微調整で困っていた方はぜひ試してみてください。
このようにAfter Detailerでは、他の機能では難しかった微調整を行うことも可能です。
他にも様々な機能があるので、気になった方はぜひ下記の記事から詳細を確認してください。
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい
まとめ
いかがでしたでしょうか?
について解説してきました。
今回のポイントをまとめると、以下のようになります。
- ぼんやりとした画像を出さないためには、プロンプト、ネガティブプロンプトにそれぞれ品質と解像度に関する記述をしておくことが大切
- 画像サイズを大きくすると絵がはっきりするが、構図が変わるの注意が必要
- Hires.fixを使うと構図を変えずに高解像度化出来るが、時間がかかることには注意が必要
- After Detailerを使うことで、元画像をほとんど変えずに顔など特定部位をはっきりさせることが可能
- After Detailerを使うことで表情だけを変えるなどの微調整も可能
StableDiffusionを使い始めて困るのが、絵のクオリティが自分の想像していたものと違うこと。
ですが、この記事を読んだ後は今まで以上に自分が思い描いた絵に近い絵を出力できているはず。
ぜひこの記事を参考に、Stable Diffusionでクオリティの高い絵をたくさん描いてみて下さい!
- Stable Diffusionのプロンプトの見本が知りたい
- 画像生成が思ったようにできない
- 色々なプロンプトを探したい