Stable Diffusionで大きい画像を作成したいとき、hires.fixで目標サイズまでアップスケールすると、時間がかかってしまう場合があります。
アップスケールの処理を分けることで、処理速度の短縮や、4K・8Kなど大きい画像の生成も可能です。
今回はExtrasタブでアップスケールする方法について、ご紹介します。
Extrasとは?
ExtrasはStable Diffusion Web UIにあるタブの名称です。
このExtrasタブでは、主に画像の加工・修正が行えます。
アップスケール・トリミング・顔の修正・プロンプトの抽出、画像分割など。
今回はアップスケール機能の使い方をご紹介します。
Extrasでアップスケールするメリット
最終的な画像サイズが同じ場合、アップスケールを分割して行うと、処理時間が速くなる可能性があります。
例えば私のPCで1080×1920を作るとき、540×960をhires.fixで2倍にすると、1分20秒ほどかかります。
これを360×640でhires.fix2倍、Extrasで1.5倍のように処理を分けると、合計30秒くらいです。
最終的なサイズは同じになり、元の画像が崩れていなければクオリティもそこまで変わりません。
Extrasタブに送る操作が手間に感じそうですが、バッチ機能があるので画像を一括で処理できます。
ですので、タイムロスはほとんどなく、総合的な生成時間を考えると分けて処理した方が効率は良いです。
またGPUによってhries.fixだと4Kや8Kサイズは生成できませんが、処理を分割すると大きいサイズも作れるようになります。
Extrasタブでアップスケールする方法
画像、またはパスをセットして、実行するだけです。
画像1枚をアップスケールする場合
まず画像をセットして、倍率、またはサイズを指定してください。
縦横比を変える場合はScale toで指定できます。Crop to fitにチェックを入れるとはみ出た部分は切り取られて調整されます。
次にUpscaler 1でアップスケーラーのアルゴリズムを選択します。
アップスケーラーを2つ使用したい場合はUpscaler 2も選択してください。
Upscaler 2 visibilityで影響力の調整が可能です。
これでGenerateを押せば、指定した倍率・サイズにアップスケールされます。
バッチ機能を使う場合
Batch Processでは複数枚画像を指定、Batch from Directoryではフォルダ内の画像を一括で処理できます。
Batch Processを使う場合は、処理したい画像を複数枚選択またはドラッグで取り込んでください。
Batch from Directoryでフォルダ内の画像を処理する場合は、Input directoryにフォルダのパスを入力します。
Output directoryはsettingで指定しているパスに保存されるので、未入力でも問題ありません。別途指定したい方は入力してください。
あとは1枚画像と同じく倍率、アップスケーラーを指定して、generateを押すだけです。
これで指定した画像、またはフォルダ内の画像が全て処理されます。
Extrasのバッチ機能でアップスケールが止まってしまうバグ
何らかの原因により、以下のエラーが出て止まってしまうバグが報告されています。
OSError: unrecognized data stream contents when reading image file
複数エラーの回避方法が報告されており、以下のようなものがあります。
- Show result imagesのチェックを外す
- 元画像の拡張子をjpgにする
- コマンドプロンプトのみでWeb UIを削除する
- Stable Diffusion Web UI forgeを使う
Show result imagesのチェックを外す
これはWeb UIで処理後の画像を表示するかどうかです。
チェックが入っていると途中で止まってしまうという報告が上がっています。
元画像の拡張子をjpgにする
元画像がpng形式だと途中で止まってしまう方がいるようです。
jpgにしてから処理することでエラーを回避できるかもしれません。
なお、フォルダ内の画像であれば一括で拡張子を変更できます。
処理したい画像があるフォルダのアドレスバーにcmdと入力してenterを押してください。そのフォルダのパスでコマンドプロンプトを開けます。
以下のコマンドを実行すると、ファイル名はそのまま拡張子のみjpgに変えることができます。
ren *.png *.jpg
コマンドプロンプトのみで処理する
これは単純にバッチ処理を開始したらWeb UIを消しておくという意味です。
Web UIを消してもコマンドプロンプトは動いたままなので、処理に問題はありません。
私も200枚くらい処理したとき止まってしまったのですが、Web UI消してやったら最後まで処理できました。
redditでバグ報告や改善方法があがっているので、こちらも参考にしてみてください。
OSError: unrecognized data stream contents when reading image file : r/StableDiffusion
Stable Diffusion Web UI forgeを使う
バグが発生するのはStable Diffusion Web UIのみのようで、今年リリースされたforgeで試したところ、特に対策を行わなくても止まることなく処理できました。
ほぼWeb UIと同じ操作感で扱えるので、バグなしで処理したい方はforgeの利用も検討してみてください。
Extrasタブでアップスケールする方法まとめ
今回はExtrasタブでアップスケールする方法について紹介しました。
小さい画像を作ってからExtrasでアップスケールすることで、処理速度の向上や4K・8Kサイズの画像が簡単に作れるようになります。
もしPCスペック的にhires.fixだと処理が重い、大きい画像が作れないという方は、Extrasのアップスケールを試してみてください。