スポンサーリンク

【ComfyUI】画像を参照して新たな画像を生成する(Image to Image) – Generate a new image based on a reference image –

チュートリアル
スポンサーリンク

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

【Stability Matrix】画像を元に新たな画像を生成する – Generate new images based on existing images –
Stablity MatrixのInferenceを使用して、画像を元に新たな画像を生成する。Image to Image(i2i)を説明します。Stablity Matrixが使用できる状態であれば簡単に可能です。

前回、Stability MatrixのInference上でImage to Imageを行いました。今回はComfyUIでやってみましょう。元画像のアスペクト比を維持しない方法とする方法の2パターンを行います。

完成形のワークフローはこちらです。

アスペクト比維持する方はこちら

元画像のアスペクト比を維持しない、するのイメージはこんな感じです。

※本投稿にはレンサバ運用費を賄うため、アフィリエイトリンクが含まれています

元画像のアスペクト比を維持しないi2i

ワークフローの作成

まずはベースとなるワークフローを起こします。

既存のワークフローを閉じると上記のワークフローが開きます。このワークフロー基準とします。

Load ImageUpscale ImageVAE Encodeを配置します。

各ノードを接続します。マーカーは既存のノードです。

FromTo
Load ImageIMAGEUpscale Imageimage
Upscale ImageIMAGEVAE Encoderpixels
VAE EncoderLATENTKSamplerlatent_image
Load CheckpointVAEVAE Encodervae

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
Positive

masterpiece, best quality, highly detailed, 1girl, brown hair, long hair, t-shirt

Negative

worst quality, bad quality

生成結果

縦長を横長に変換した結果、無理が生じました。狙ってないのですがおっぱいがこぼれました。

Inferenceの場合は正方形に近いものをベースにしたのであまり崩れなかったのですが、さすがに縦長をベースにそのまま横長にすると画像が崩れがちでした。(下から覗き込むようなアングルになる)

元画像のアスペクト比を維持したままのi2i

単純に引き延ばすと元画像のアスペクト比が維持されずゆがんでしまいます。ですので元画像のアスペクト比を維持したまま足りない部分はパディングしてi2iしたいと思います。

カスタムノードのインストール

今回、追加でカスタムノードが必要になるのでインストールします。

GitHub – cubiq/ComfyUI_essentials
Contribute to cubiq/ComfyUI_essentials development by creating an account on GitHub.

ワークフローの修正

先のワークフローでは単純にリサイズしていたのでちょっと手の込んだことをします。

具体的には以下の手順となります。

  1. 入力画像を縮小する
  2. 縮小した画像をLatentに変換する
  3. 生成するサイズのLatentを用意する
  4. 2と3を合成する
  5. 4をインプットに生成する

ノードを配置していきます。

  • Int x 2 (幅と高さ)
  • Image Resize
  • Simple Math
  • Empty Latent Image
  • Latent Compose

とりあえず、こんな感じで配置します。では繋げていきましょう。

FromTo
Int(幅)INTEmpty Latent Imagewidth
Int(幅)INTSimpe Matha
Int(高さ)INTEmpty Latent Imageheight
Int(高さ)INTImage Resizeheight
Load ImageIMAGEImage Resizeimage
Image ResizewidthSimpe Mathb
Image ResizeIMAGEVAE Encodepixels
Empty Latent ImageLATENTLatent Compositesamples_to
VAE EncodeLATENTLatent Compositesamples_from
Simple MathINTLatent Compositex
Latent CompositeLATENTKSamplelantent_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
Positive

masterpiece, best quality, highly detailed, 1girl, brown hair, long hair, t-shirt, ih the city

Negative

worst quality, bad quality

生成結果

いい感じで背景が描けました。

まとめ

アスペクト比を維持しないパターンと、維持するパターン両方をためしました。

縦長を横長にするのは結構あるかと思うのですが、横長を縦長にするケースはどのくらいあるのだろう?とかふと思いました。

多少なりともお役に立てれば幸いです。

おまけ

横長を縦長にしたケースですが、普通にありですね。

コメント

タイトルとURLをコピーしました