【Stable Diffusion】Hires.fixで解像度を上げて高画質化する方法
- ※当ブログはアフィリエイト・アドセンスによる収益で運営されています。
こういったお悩みにお答えします。
せっかくStable Diffusionを使うなら、なるべくきれいな画質のイラストを作りたいですよね。拡大したらガビガビ…なんてかっこ悪いですし。
でも大きなサイズを指定して生成すると…構図が崩れたりとヘンな感じに。時間だけがムダに過ぎてしまいます。
この記事では
- 【Stable Diffusion】Hires.fixとは?仕組みを解説
- 【Stable Diffusion】Hires.fixで解像度を上げて高画質化する方法
- 【Stable Diffusion】Hires.fixで高画質化されたイラストを比較
- もっとスムーズにイラストを生成したいなら…
- 生成した大量のイラストを簡単に管理する方法
- Hires.fixに関するよくある質問
これらについて解説していくので、最後まで読むとHires.fixを使ってイラストを高画質化する方法がわかり、きれいなイラストを生成できるようになります。
初心者の方・Stable Diffusionに関してわからないことがある方は以下の記事も読んでみてください。Stable Diffusionのダウンロード方法や使い方について詳しく解説しています。
>>【完全初心者用ガイド】Stable Diffusionの使い方を徹底解説!
【Stable Diffusion】Hires.fixとは?仕組みを解説
Hires.fixとは、Stable Diffusionに備わっている補正機能の一つ。高画質の画像を生成したいときに頻繁にお世話になるでしょう。
Hires.fixを使うと『大きな解像度のイラストを生成する』という作業が
- STEP1:標準サイズでイラストを生成する
- STEP2:イラストを拡大する(このとき画質は荒くなる)
- STEP3:荒く拡大されたイラストをimg2imgできれいにする
Stable Diffusionの中で、これら3つの工程に分けて行われます。
3つに分けるの?
Stable Diffusion用のモデルは高画質のイラストを生成するのがとても苦手。なぜなら、多くのモデルは512×512ピクセルの画像で学習をしたからです。
そのため、いきなり『2000×2000ピクセルのイラストを作って』と言われても困ってしまうんですよね。モデルからしたら『そんなの習ってねぇよ!』という感じでしょう。
実際に2000×2000くらいのイラストを生成してみると
完全に構図が破綻していますよね。プロンプトには『1 girl,solo』と入力しているんですが…なぜ分裂した?
高画質なぶん生成にはめちゃくちゃ時間がかかったのに、これでは使い物になりません。
そこで登場するのがHires.fix。はじめに標準的なサイズでイラストを作るので構図が破綻しづらいです。
それから(構図を維持したまま)拡大 → 高画質化していくので、元の構図を尊重したまま高画質なイラストを手に入れることができます。
まともな高画質イラストを生成するため、Hires.fixを使って解像度を上げていきましょう。
【Stable Diffusion】Hires.fixで解像度を上げて高画質化する方法
Hires.fixを使う方法はとても簡単です。イラストを生成する前に『Sampling method』の下にある『Hires.fix』にチェックを入れるだけ。
すると画面に以下の項目が表示されます。
- Upscaler
- Hires steps
- Denoising strength
- Upscale by
- Resize width to
- Resize height to
『なんのこっちゃ』という方も多いと思うので、順番に解説していきます。
Upscaler
Upscaler(アップスケーラー)はイラストを高画質化する際に用いられるアルゴリズム。
どのUpscalerを選んだかによって、生成されるイラストの質が多少変化します。普通に生成するときのSampling methodのようなものですね。
Upscalerによる絵柄の差は非常に微妙で、どれがいい・どれが悪いという議論にはなりません。いわゆる『好みの問題』です。筆者がHires.fixを使用するときは主にLatent(nearest)を使っていますが、正直あまり気にしていません。迷ったらLatent(nearest)でいいのでは。
『None(Upscalerを使わない)』だけは選ばないように注意しましょう。
Hires steps
拡大した(画質が荒い状態の)イラストからimg2imgで描画するときのstep数です。初期値の『0』だとSampling stepsと同じになります。
0のままでもいいですが、もう少し値を小さくしてもイラストの品質は下がらない印象。具体的には今後検証する予定です。
Denoising strength
ノイズを除去する強さ。生成されるイラストの品質に大きく影響する項目です。
Denoising strengthの値を小さくすると、Stable Diffusionがより強く元イラストを尊重します。
反対に、値を大きくすると元イラストを無視したものが生成されるようになります。その結果いいイラストができる場合もあるので、適正値の判断は難しいところ。
一般的には0.6あたりが無難と言われています。これも検証したい…。
Upscale by
拡大率。最終的に生成したいイラストの大きさによって数値を入力しましょう。
1.5なら元のイラストを1.5倍に拡大、2なら2倍に拡大します。
4とかにすると高確率で破綻するのでおすすめしません。やたら時間もかかりますし。
Resize width to
元イラストから縦横比を変えたい場合はこれらの項目で幅を指定しましょう。変えない場合はUpscale byでサイズを指定しているので触る必要はありません。
縦横比を変えるときの注意点としては、構図が変わってしまう可能性があることです。例えば横に引き延ばす場合、新しくできた左右のスペースに何を描くかはStable Diffusionの自由ですからね。
【Stable Diffusion】Hires.fixで高画質化されたイラストを比較
上記の設定が完了したら『Generate』を押せばOK。あとはStable Diffusionが勝手に高画質のイラストを生成してくれます。
3工程の作業をするぶん、通常よりも時間がかかることは覚えておきましょう。
Hires.fixとの生成時間を比較
具体的には、筆者の環境だと
- 普通に512×512のイラストを生成:8秒
- 普通に1024×1024のイラストを生成:32秒
- Hires.fixで512×512 → 1024×1024のイラストを生成:37秒
このような結果になりました。1024×1024のイラストを生成するときは、Hires.fixを使っても使わなくてもそれほど時間は変わりませんね。
Hires.fixとの品質を比較
次に、生成されたイラストの品質を見ていきましょう。今回は、以下のイラストをHires.fixで2倍のサイズに拡大しました。
こちらが元のイラスト。サイズは512×512です。
Hires.fixの設定は以下のとおりですが、今回あまり細かくは触れません。
- Upscaler:Latent(nearest)
- Hires steps:20(もともとのSampling steps値)
- Denoising strength:06
- Upscale by:2
一般的な設定内容で試してみます。
その結果Hires.fixにより生成されたイラスト(1024×1024)がこちら。
服装や手すりの違いなどはいったん置いておきましょう。これはDenoising strengthの値とも関係してきますからね。各数値の検証は別の機会にやりたいと思います。
Hires.fixにより生成されたイラストは高画質になっているのはもちろんのこと、描き込みの量がかなり増えています。この記事をパソコンでお読みいただいている方は、各イラストをダウンロード・拡大して比べていただければと思います。
なかでも筆者が特に違いを感じた部分は『水面への映り込み』。
元のイラスト(512×512)では木の描き込みがぼやけている印象ですが
Hires.fixにより生成されたイラスト(1024×1024)では木々の形が鮮明に映り込んでいます。
Hires.fixを使うと、ただイラストが拡大されるだけではなく、しっかりとクオリティが上がることがわかりますね。
標準の512×512サイズよりも大きなイラストを生成するときは、ぜひ積極的にHires.fixを使ってみてください。
もっとスムーズにイラストを生成したいなら…
もしあなたがもっと快適にAIイラストを生成したいなら、グラボを見直してみるのがおすすめです。
グラボはAIイラストを生成するうえで最も重要なパーツ。いくらCPUやメモリが高性能でもグラボがしょぼかったら致命的です。
本格的に取り組んでいくのなら、グラボにはケチらず投資しましょう。最低でも12GBのVRAMは確保しておきたいところ。VRAMが2GB・4GBくらいしかない古いグラボだと高解像度化や学習に大きな支障が出てしまいます。
コスパを重視する方・予算が5万円以下の方はRTX 3060一択と言っていいでしょう。
もう少し予算が確保できて、さらにハイスペックなグラボに興味がある方は以下の記事もお読みください。きっとあなたに合ったグラボが見つかりますよ。
>>【コスパ重視】Stable Diffusionにおすすめのグラボ3選!
PCごと買い替えを検討している方は以下の記事をお読みください。快適にStable Diffusionを使えるマシン3選を紹介しています。
>>Stable Diffusionにおすすめのパソコン3選と推奨スペックを解説!
生成した大量のイラストを簡単に管理する方法
Stable Diffusionで生成した大量のイラストを効率的に管理するなら『Eagle』というツールがおすすめ。
イラストを生成するとメタデータが自動でEagleに送られ、タグやメモとして保存されます。このタグを使うことで検索や管理がとても楽ちん。
例えば『a dog』というタグで検索すると、そのプロンプトで生成されたイラストだけを表示することができます。『あのイラストどんなプロンプトで生成したっけ?』『LoRAのトリガーワード忘れた』なんて迷わずに済みますよ。
Eagleは本来『約4,000円・買い切り型』の有料ツールですが、30日間の無料体験ができるので、とりあえず試してみてください。
Hires.fixに関するよくある質問
普通に高画質で生成したイラストとHires.fixで高画質にしたイラストの比較は?
残念ながら構図がまったく違うものになってしまったので比較はしていません。
Hires.fixを使ったら構図が大きく崩れた!
一気に拡大しすぎです。Upscale byの数値を下げましょう。
Hires.fixで生成しようとしたら、こんなエラー出たんけど?
-
RuntimeError: min(): Expected reduction dim to be specified for input.numel() == 0. Specify the reduction dim with the ‘dim’ a
Denoising strengthの値が小さすぎです。特にこだわりがなければ0.6くらいに設定しましょう。
『【Stable Diffusion】Hires.fixで解像度を上げて高画質化する方法』のまとめ
- Stable Diffusionは高画質のイラストを生成するのが苦手
- Hires.fixで工程を分けることで破綻せずに生成できる
- 高画質なイラストを生成するときはHires.fix必須!
ここまでお読みいただきありがとうございました!
他にもわからないことがあったら以下の記事をお読みください。初心者向けにStable Diffusionの使い方を一から解説しています。