画像をうまくアップスケールするのに、24GBのカードもオンラインサービスも必要ありません。Ultimate SD UpscaleはGPUに小さなタイルを1つずつ与えるので、VRAM 4GBのカードでも、ローカルで、無料で、検閲なしに、4Kや8Kの画像を作れます。品質は本当に良好です。ここではワークフローをゼロから構築し、重要な設定を説明して、うまくいく場所と失敗する場所を紹介します。
ポイント
- ノード: Ultimate SD Upscaleと、(image comparer用の)rgthree。
- モデル: SD 1.5のチェックポイント(epiCPhotoGasm)と、OpenModelDBのアップスケールモデル。
- 設定: 4倍、20〜30ステップ、dpmpp_2m_sde_gpu / karras、denoise 0.25、タイル512 × 512、CFG 6〜8。
- VRAM 4GBでの速度: 512 → 2048 pxが73秒、1600 → 6400 pxが約11分。
- もっと大きく: 2つのノードを連結して16倍。
ComfyUIが初めてなら、ComfyUIのノードの基本とComfyUI Managerのインストールをご覧ください。
手早い方法:ワークフローを読み込む
完成したワークフローは私のPatreonで無料です。出力画像の1枚をComfyUIにドラッグすることもできます。ワークフローは画像のメタデータに保存されています。足りないノードはManagerからインストールして、再起動してください。
ワークフローが記憶しているのは、モデルの名前であって、ファイルではありません。同じアップスケールモデルやチェックポイントがフォルダにない場合、欄には「undefined」と表示されるので、自分のものを選んでください。Load Imageに画像をアップロードして、Queueを押します。
ゼロから構築する
1. ノードをインストールする
Manager → Custom Nodes Managerで、Ultimate SD UpscaleとrgthreeのComfyUI nodes(私がよく使う比較ノードがあります)をインストールします。再起動します。
2. メインのノードと、その入力
- Ultimate SD Upscaleを追加します。パラメータが多いので、詳細は後述します。
- SD 1.5のモデル(私はepiCPhotoGasm)を使ったLoad Checkpointを追加し、そのモデルとVAEを接続します。
- ポジティブとネガティブの入力用に、2つのCLIP Text Encodeノードを追加し、空のままにします。見るものがないので、それぞれの灰色の点をクリックして折りたたみます。
- Load Upscale Modelを追加して接続します。
- アップスケールする画像のLoad Image、出力用のSave Image、rgthreeのImage Comparerを追加します。アップスケールした出力をimage_a、元の画像をimage_bに入れます。
3. OpenModelDBからアップスケールモデルを入手する
OpenModelDBは、アップスケールモデルを探すのに最適な場所です。顔に向くもの、物体、アニメや漫画のスタイルに向くものがあります。各ページに、ビフォーアフターのサンプル、類似モデル、ライセンスが表示されるので、商用利用を考えているなら確認してください。ファイルは小さく、ギガバイトではなくメガバイトです。
私が使っているものはこちらです。
| モデル | 得意なこと |
|---|---|
| 4x-UltraSharp | 鮮明なディテール。私のデフォルト |
| 4x-FaceUpSharpDAT | 顔、よりシャープ |
| 4x-FaceUpDAT | 顔、より柔らかく滑らか |
| 4x-Nomos2-hq-drct-l | 建築。私は岩に使います |
ファイルをComfyUI/models/upscale_models/に置き、Edit → Refresh Node Definitionsでリストに表示させます。
線をすっきりさせる: Settings(左下) → LiteGraphで、リンクの描画モードをsplineからstraightまたはlinearに変更します。
重要な設定
- upscale_by: 4。 ノードは元の4倍まで対応します。ノードを連結すれば、16倍、32倍、それ以上にもできます。
- Steps: 20〜30。 40〜50でわずかに品質が上がりますが、かなり時間がかかります。効果が薄れる点があります。
- Sampler: dpmpp_2m_sde_gpuはリアルな画像に向き、スケジューラーはkarrasです。試す価値があります。
- Denoise: 0.25。 これは非常に重要です。1.0では完全に新しい画像になります。0.2〜0.25では画像の大部分を保ち、少しディテールを足します。9割が残り、1割が変わる感覚です。ときどき0.35にしますが、画像が変わり始める前のほぼ上限です。
- Tile width / height: 512。 SD 1.5は512 × 512の画像で学習されているので、512のタイルで最もよく機能します。ノードは巨大な画像でも多くのタイルに分割して、それぞれを別々に処理するので、非力なカードでも動きます。ただ時間がかかるだけです。他の多くのアップスケール方法は、VRAMが足りなくなると単にクラッシュします。
- CFG: 6〜8。 低いとバリエーションが増え、非常に低いとノイズになります。非常に高いと、過度なシャープ化のようなアーティファクトが出ます。8で問題ありません。
SDXLのチェックポイントなら、タイルは1024 × 1024になります。試しました。品質はわずかに高いものの、はるかに遅くなります。512のSD 1.5ははるかに速く、品質はほぼ同じです。
よく知っている写真でテストする
まず、よく知っている画像から始めてください。私は、背景にパターンがあり、シャツにロゴがある、カンボジアのアンコール・ワットでの自撮りを使い、どれだけ回復するか見るために、意図的に512 × 512まで縮小しました。
コマンドウィンドウには、キャンバスのサイズ、タイルの数、進行状況が表示されます。512 → 2048の4倍では、16タイルです。4Kや8Kでは、数が一気に増えます。64、128、300、400タイル。
VRAM 4GBの私のノートPCでは、73秒かかりました。comparerのスライダーをドラッグすると、ロゴは鮮明なまま変わらず、寺院の天井の彫刻も保たれ、眼鏡は実物とまったく同じに見えます。覚えのないニキビが鼻に足されていましたが。
4x-FaceUpDATに切り替えると、より柔らかく、見栄えの良い仕上がりになりました。肌をよりノイズ除去し、眼鏡と目は素晴らしい出来で、UltraSharpより良いかもしれません。ただ、ひげは実際よりずっと滑らかになり、極端なクローズアップでは、背景の壁に髪の毛のような筆跡が出ました。
さらに大きく、そして効果がなくなる点
8Kの画像にする最も簡単な方法は、2Kの出力をLoad Imageに読み込み直して、もう一度実行することです。
Encyclopaedia Britannicaにあったドナルド・トランプの400 × 300の写真を使いました。1回目で幅約1600 pxになりました。2回目の1600 × 1200 → 6400 × 4800には、130タイルが必要で、それぞれ約4〜5秒、683秒かかりました。より速いコンピューターなら、タイルあたり1秒以下にできます。ノードには現在のタイルが表示されるので、残り時間を確認して、コーヒーを飲みに行けます。
結果はかなり滑らかになりましたが、必ずしも良い意味ではありません。超ズームでは良く見えましたが、ミディアムショットではあまり向上していないと思います。余計なノイズ除去で、肌の品質が失われました。2回目のパスではモデルを変えるのも手で、例えばUltraSharpにすれば、顔の過度な平滑化を防げます。
元画像と最終結果を比較する
comparerはグラフが実行されたときにしか更新されないので、再アップスケールせずに小さな元画像と6Kの結果を比較するには、アップスケールのノードを選択してCtrl+Bでバイパスし、2つのLoad Imageノード(最終画像と元画像)を追加してcomparerに接続し、キューに入れます。数秒で実行されます。
16倍:2つのアップスケールノードを連結する
- Ultimate SD Upscaleノードを選択してCtrl+C、続けてCtrl+Shift+Vで、すべての接続付きで貼り付けます。
- 最初のノードの画像出力を、2つ目のノードの画像入力に接続します。
- 2つ目のノードの出力を、Save Imageと、comparerのimage_aに接続します(元画像はimage_bのまま)。
- 両方のノードが、チェックポイント、空のプロンプト、アップスケールモデルを共有します。パスごとに異なるアップスケールモデルを使うには、Load Upscale Modelノードもコピーしてください。
プロンプトに入力すると結果に影響しますが、私の場合はうまくいかなかったので、空のままにしています。
ノートPCでは、30分かかることもあります。VRAMの少ないコンピューターには、簡単な作業ではありません。調べた多くのアップスケーラーは、まったくできないか、ノイズを加えすぎるものでした。
結果:得意な場面と失敗する場面
image-to-imageの結合のガイドで作った頭蓋骨のティーポットは、UltraSharpで512 pxから8Kになり、超ズームでも非常に高いディテールでした。印刷して壁に飾りたいくらいです。
もともと、自分の仕事のためにAIアップスケーリングを始めました。3D-Coatでデザインした香水瓶では、ボクセルのカットが粗いエッジを残しますが、1500 pxから約3000 pxにすると、美しく滑らかになりました。
ロボットのデザインでは、UltraSharpは3D-Coatのギザギザしたポリゴンのエッジを、逆にシャープにしました。4x-FaceUpDATは、私が欲しかった、はるかに滑らかな線を出しました。顔の細かいディテールの一部は潰れて変わりましたが、最終レンダリングを素晴らしく手早くアップスケールするための、小さな代償です。
失敗した場面: 幅2500 pxの水中サンゴのGoProの写真を10〜12Kにしたときです。モデルはサンゴをあまり学習していなかったようです。300 pxの部分を切り出して、ディテールを作り出す余地を増やしても助けになりませんでした。水中の画像には、まったく別のアップスケールモデルが必要でしょう。
シーンファイルを失くした古い岩のレンダリングでは、中間の2000〜3000 pxの結果が本当にきれいでした。8〜10Kでは滑らかになりすぎ、ノイズ除去が過剰になりました。小さな元画像よりははるかに良いものの、気に入る見た目ではありません。
もっと良い、他のアップスケール技術をご存知なら、動画にコメントを残してください。これは私のワークフローにすぎません。
動画版を見る (22:11)
上の内容はすべて動画でも説明しています。画面を見ながら進めたい方はこちらをどうぞ。 動画は英語です。
よくある質問
VRAM 4GBだけで画像をアップスケールできますか?
はい。Ultimate SD Upscaleは画像を512 × 512のタイルに分割し、1つずつ処理します。VRAM 4GBのノートPCでは、512 pxの画像が73秒で2048 pxになり、6400 × 4800の出力は、タイルが130枚でそれぞれ約4〜5秒でした。
アップスケールには、denoiseをいくつにすべきですか?
0.25なら画像の大部分を保ち、少しディテールを加えます。0.35が、画像が変わり始める前のほぼ上限です。1.0では完全に新しい画像になります。
最良のアップスケールモデルはどれですか?
画像によります。4x-UltraSharpはディテールを鮮明に保ちます。4x-FaceUpDATはより柔らかく滑らかで、顔やギザギザのエッジを隠すのに向きます。Nomos2は建築や岩に向きます。水中のサンゴの写真では、どれもうまくいきませんでした。
4倍より大きくアップスケールするにはどうしますか?
出力をもう一度ノードに通すか、2つのUltimate SD Upscaleノードを連結して16倍にします。レンダリング時間は非常に長くなり、8K以上では過度の平滑化に注意してください。
