Paperspaceで高精細AI画像を生成する
Contents
Paperspace上のstable-diffusion-webui(AUTOMATIC1111)を使って高精細な生成AI画像を作成する方法をご紹介します。
512×512画素の元画像を生成から始めて、最終的に3072×3072画素の画像を生成します。
3072×3072画素の画像は、512×512画素の画像を高画質化したのでなく高精細化しています。
- 元画像:512×512 ⇒ 高精細化:3072×3072
ここで、高精細化と高画質化は以下の意味で使用しています。
- 高精細化:細部まで描きこまれた状態
- 高画質化:細部は何らかの補完で色が付いた状態
そのため、高精細化した画像には新たな要素が描きこまれています。
- 高精細化:細部に新たな要素が描きこまれる
- 高画質化:細部に新たな要素は描きこまれない
途中、Adobe PhotoshopやAdobe Bridgeを使いますが、代替品があれば大丈夫です。
以下、概要です。
- 元画像 :512×512画素の元画像を生成
- 中間画像 :元画像から768×768画素の中間画像を生成
- 高精細画像:中間画像から3072×3072画素の画像を生成
開発環境
- 開発用PC(低スペック可)
- Paperspace Proプラン(クラウドGPU)
- stable-diffusion-webui(AUTOMATIC1111)
- checkpoint:Beautiful Realistic Asians v6.0(Base Model SD1.5)
- Textual Inversion:EasyNegative
- Extensions:ControlNet v1.1.227, Tile(control_v11fle_sd15_tile)
- Adobe Photoshop(代替品可)
- Adobe Bridge 2024(代替品可)
性能限界
Paperspace Proプランでフリーで使えるGPUは 5種類あります。Free-A4000の場合だと、RAMが45GBでGPUが16GBです。
- Free-A4000:RAM45GB, GPU16GB
今回ご紹介する方法は、ProプランGPUの性能限界ギリギリのところで動いています。
例えば、1024×1024画素の画像でControlNet-Tileを動かすと、エラーになり動きません!
- エラー:CUDA out of memory …
GrowthプランのGPUだと動くかも知れませんが、Proプランではここら辺が限界ではないかと思います。
元画像生成
Paperspace上のAUTOMATIC1111で、512×512画素の元画像を生成します。
512×512画素のすすめ
生成する画像サイズは、512×512画素を強くおすすめします!
- Width:512
- Height:512
理由は生成される画像が多彩で綺麗だからです。
今回用いたBeautiful Realistic Asians v6.0のベースモデルは、Stable Diffusion1.5です。
その場合、学習に使用した画像サイズは512×512画素です。
そのため、学習画像と同じサイズの画像を生成する方が素直でしょう。
実際、例えば768×768画素の生成画像は、512×512画素の生成画像より見劣りします。
- 512×512:〇 ⇔ 768×768:✖
元画像の探索
数百枚の512×512画像を生成して、元画像となる画像を探します。
元画像が決まったら、その画像を高精細化(3072×3072画素)していきます。
- 元画像:512×512 → 高精細画像:3072×3072
PromptとNegative promptから「良さそうな画像」を探します。
- Prompt:house, concrete, close-up of building front,
- Negative prompt:EasyNegative, wood,
Seedは-1にして、Batch countは100にしてひたすら探します(ガチャを回す)
- Width:512
- Height:512
- Seed:-1
- Batch count:100(最大)
見つけた1枚の画像は以下でした。
- 00153-1619138659.png(512×512:png画像)
元画像生成:512_512画素(画像をクリックすると拡大します)
中間画像生成
元画像から中間画像(768×768画素)を生成します。
ここでは、Adobe PhotoshopとAdobe Bridge 2024を用いました(代替品可)。
768×768画素のすすめ
中間画像の画像サイズは、768×768画素を強くおすすめします!
- Width:768
- Height:768
理由は、この後で使用するControlNet-Tileがサポートしている画像解像度が768または1024だからです。
- [New Model] The finished tile model is released #1142
- Hint2: this model supports resolution 768 or 1024 well.
1024はPaperspace ProプランのフリーGPUだと動かないので、768一択になります。
他の画像サイズ、例えば512×512でも動くのですが、生成画像にノイズが生じることがあります。
生じるノイズとしては以下があります。
- ブロック(ex. 512×512)の境目がくっきりと浮き出ていることがある
- ブロック(ex. 512×512)の境目で模様が変化することがある
jpg変換
Paperspace上にある元画像を手元のPCにダウンロードします。
ダウンロードした元画像をPhotoshopを使って、pngからjpgに変換します。
- 00153-1619138659-512.png → 00153-1619138659-512.jpg
(注)画像サイズが分かるように、ファイル名に「-512」を追加しました
スーパー解像度
jpgに変換した画像を2倍にアップスケールします。
ここでは、Adobe Bridge 2024のスーパー解像度を用いてアップスケールしました。
- 512×512画素 → 1024×1024画素
- 00153-1619138659-512.jpg → 00153-1619138659-1024.jpg
(注)画像サイズが分かるように、ファイル名をリネームしています
スーパー解像度の詳細は、別記事をご参照ください。
768×768画素にリサイズ
一旦、1024にアップスケールした画像を、768にリサイズします。
ここでは、Adobe Photoshopを用いました。
- 1024×1024画素 → 768×768画素
- 00153-1619138659-1024.jpg → 00153-1619138659-768.jpg
(注)画像サイズが分かるように、ファイル名をリネームしています
高精細画像生成
中間画像から高精細画像(3072×3072画素)を生成します。
- 手元PCからAUTOMATIC1111に、中間画像をアップロード
- img2imgに中間画像を、ドラッグ&ドロップ
- ControlNetのTileに関する各種パラメータを設定
- 「Generate」ボタンをクリック
Free-P5000(RAM30GB, GPU16GB)で動作を確認済み。
- 768×768画素 → 3072×3072画素
- 00153-1619138659-768.jpg → 00153-1619138659-3072.png
(注)画像サイズが分かるように、ファイル名をリネームしています
各種パラメータ
ControlNet-Tile(img2img)に関する各種パラーメータを設定します。
- Prompt:house, concrete, close-up of building front,
- Negative prompt:EasyNegative, wood,
- Sampling method:Euler a
- Sampling steps:30
- Width:768
- Height:768
- CFG Scale:3
- Denoising strength:0.5
- Seed:-1
- ControlNet Unit 0:
- ✅ Enable
- ◎ Tile
- Preprocessor: tile_resample
- Model: control_v1lfle_sd15_tile
- Script: SD upscale
- Scale Factor: 4
- Upscaler: SqinIR_4x
パラメータ調整
Sampling method
ControlNet-Tileを使用すると、画像の一部が一様にベタッと塗りつぶされたようになることがあります。
- 例:芝生の一部分で、細部がつぶれて描画される
その場合、Sampling methodをLMSやDDIMに変更すると改善されます。
- Euler a → LMS, DDIM
それでも改善されない場合は、その元画像の高精細化は諦めて別の元画像を選びましょう。
- 高精細化できない場合は、別の元画像を選ぶ
Preprocessor
カラーを維持して高精細化するtile_colorfixや、それプラス輪郭を際立たせるtile_colorfix+sharpを適宜試してみます。
- tile_resample → tile_colorfix, tile_colorfix+sharp