Stable Diffusionで横長の絵を描きたい

Mac

PCの壁紙は横長

なぜ横長の絵を描きたいかというと、PCの画面のアスペクト比が16:9だから、というだけのことですw

さて。メモリ64GBのMac StudioでStable Diffusionしていると、搭載しているメモリの限界なのかStable Diffusionのソフトウェアとしての限界なのか、出力できる画像のサイズには限度がある。単純にピクセル数だけで見ると、メモリ64GBのMac Studioだと1024 x 1024 = 1,048,576ピクセル までは出力できるようで、これを超えない代表的なアスペクト比は以下の通り。

  • 3:2、1248 x 832
  • 4:3、1176 x 882
  • 16:9、1360 x 765
  • 11:8、1199 x 872
  • 2:1、1440 x 720

これらのピクセル数であれば、例えば画像の下の方だけグチャグチャになるといったことは起きない。ただ、ことはそう単純ではなく、Stable Diffusionは512 x 512という正方形で学習しているため、どんなアスペクト比でもプロンプト通りに出力できるわけでない。おおむね人物を描写している画像ではポートレート、つまり縦長の画像が多く、風景を描写している場合はランドスケープ・横長の画像が多いので、アスペクト比によってSDが出力する画像にも「傾向」がある。

またControlNetもこのアスペクト比によって得手・不得手があるようで、どうすれば横長の絵を意図した通りに出力できるのか検証してみた。

結論

先に結論を書いておく。

ControlNet無ControlNet有
904 x 512(16:9)プロンプトに従おうとするが画像が乱れるプロンプトに従おうとするがグチャグチャ
1024 x 512(2:1)概ねプロンプトに従う。ほぼ意図通りに出力
1280 x 720(16:9)プロンプトは無視ほぼ意図通りに出力
1440 x 720(2:1)プロンプトは無視、グチャグチャほぼ意図通りに出力

プロンプト、ControlNetについては共通の設定とし、全てRestore facesはon。

a detailed photo of full body of 1girl, solo, (masterpiece:1.0), (best quality:1.4), (ultra highres:1.2), (photorealistic:1.4), 8k resolution, Canon EOS R5, 50mm, absurdres, ultra detailed, professional lighting
EasyNegative, NSFW, bad anatomy, skindentation, bad hands, extra fingers, (bad_prompt_version2:0.8), paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), (sepia), (deformed iris, deformed pupils, semi-realistic, 3d, render, cg, painting, drawing, cartoon, anime, comic:0.6), watermark, bad_quality
Resize ModeはJust Resize。

つまり16:9の壁紙を作りたければ、ControlNetの利用は必須で、1440 x 720(2:1)で出力してトリミングするか、1280 x 720(16:9)で出力する。必要であれば、img2imgでupscaleする、のが現時点ではベスト。

904 x 512、ControlNet無

a detailed photo of full body of 1girlというプロンプトには概ね従おうとするが、細部を見ると画像が乱れている。特に画面の右端がグチャグチャになる。

904 x 512、ControlNet有

プロンプト、ControlNet共に従おうとしているが、グチャグチャ。1枚も使える画像が出ない。

1024 x 512、ControlNet無

5枚目は修正、NegativeにNSFWを入れててもダメなこともある

概ねプロンプトには従う。3枚目のみ、2人出力されている。

1024 x 512、ControlNet有

プロンプト、CotrolNet共によく従っている。4枚目に余計な脚が出力されているが、それ以外は良好。

1280 x 720、ControlNet無

プロンプトは無視、画像の乱れはほぼ無し。

1280 x 720、ControlNet有

プロンプト、ControlNet共によく従っている。2枚目、余計な腕が出力されている。

1440 x 720、ControlNet無

プロンプトは無視される可能性が高く、画像の乱れも見受けられる。

1440 x 720、ControlNet有

プロンプトには概ね従うし、ControlNetも概ね従う。7枚目に余計な脚、9枚目は2人出力されている。