生成AIでエッチな画像を作る探求

前回、Stability MatrixのInference上でImage to Imageを行いました。今回はComfyUIでやってみましょう。元画像のアスペクト比を維持しない方法とする方法の2パターンを行います。
完成形のワークフローはこちらです。
アスペクト比維持する方はこちら。
元画像のアスペクト比を維持しない、するのイメージはこんな感じです。


元画像のアスペクト比を維持しないi2i
ワークフローの作成
まずはベースとなるワークフローを起こします。

既存のワークフローを閉じると上記のワークフローが開きます。このワークフロー基準とします。
Load ImageとUpscale Image、VAE Encodeを配置します。
各ノードを接続します。青色マーカーは既存のノードです。
| From | To | ||
|---|---|---|---|
| Load Image | IMAGE | Upscale Image | image |
| Upscale Image | IMAGE | VAE Encoder | pixels |
| VAE Encoder | LATENT | KSampler | latent_image |
| Load Checkpoint | VAE | VAE Encoder | vae |
VAE EncodeをKSamplerにつなぐということは、Empty Latent Imageは不要になります。削除しましょう。

このようになります。
各種設定
画像を用意します。

生成
設定値は以下です。
- チェックポイント:Illustrij EVO
- CLIP Skip:2
- サンプラー:DPM++ 2M SDE
- スケジューラー:Karras
- Steps:30
- CFG Scale:5.00
- Denoising Strength:0.70
- サイズ:1176 x 848
masterpiece, best quality, highly detailed, 1girl, brown hair, long hair, t-shirt
worst quality, bad quality
生成結果




縦長を横長に変換した結果、無理が生じました。狙ってないのですがおっぱいがこぼれました。
Inferenceの場合は正方形に近いものをベースにしたのであまり崩れなかったのですが、さすがに縦長をベースにそのまま横長にすると画像が崩れがちでした。(下から覗き込むようなアングルになる)
元画像のアスペクト比を維持したままのi2i
単純に引き延ばすと元画像のアスペクト比が維持されずゆがんでしまいます。ですので元画像のアスペクト比を維持したまま足りない部分はパディングしてi2iしたいと思います。
カスタムノードのインストール
今回、追加でカスタムノードが必要になるのでインストールします。
ワークフローの修正
先のワークフローでは単純にリサイズしていたのでちょっと手の込んだことをします。
具体的には以下の手順となります。
- 入力画像を縮小する
- 縮小した画像をLatentに変換する
- 生成するサイズのLatentを用意する
- 2と3を合成する
- 4をインプットに生成する
ノードを配置していきます。
- Int x 2 (幅と高さ)
- Image Resize
- Simple Math
- Empty Latent Image
- Latent Compose

とりあえず、こんな感じで配置します。では繋げていきましょう。
| From | To | ||
|---|---|---|---|
| Int(幅) | INT | Empty Latent Image | width |
| Int(幅) | INT | Simpe Math | a |
| Int(高さ) | INT | Empty Latent Image | height |
| Int(高さ) | INT | Image Resize | height |
| Load Image | IMAGE | Image Resize | image |
| Image Resize | width | Simpe Math | b |
| Image Resize | IMAGE | VAE Encode | pixels |
| Empty Latent Image | LATENT | Latent Composite | samples_to |
| VAE Encode | LATENT | Latent Composite | samples_from |
| Simple Math | INT | Latent Composite | x |
| Latent Composite | LATENT | KSample | lantent_image |

このようになるかと思います(不要なノードは削除しました)
さて、パラメータを入力しましょう。
- 上段のIntは1176, fixed
- 下段のIntは848, filed
- Image Resizeはmethodはkeep proportion
- Simpe Mathのvalueに「a / 2 – b / 2」

こうなります。
生成
- チェックポイント:Illustrij EVO
- CLIP Skip:2
- サンプラー:DPM++ 2M SDE
- スケジューラー:Karras
- Steps:30
- CFG Scale:5.00
- Denoising Strength:0.70
masterpiece, best quality, highly detailed, 1girl, brown hair, long hair, t-shirt, ih the city
worst quality, bad quality
生成結果




いい感じで背景が描けました。
まとめ
アスペクト比を維持しないパターンと、維持するパターン両方をためしました。
縦長を横長にするのは結構あるかと思うのですが、横長を縦長にするケースはどのくらいあるのだろう?とかふと思いました。
多少なりともお役に立てれば幸いです。
おまけ
横長を縦長にしたケースですが、普通にありですね。






コメント