Control netの入門として、Img2ImgからControl netを読み込んで適用する形に配線を変更するところまでやってみたいと思います。ちょっとだけややこしいです。
使うのはScribbleというモデルで、線画から画像を生成させることができます。
※24/2/25追記 なぜか途中から別のモデルの記事になってたので修正しました。
Control netとは
普通のComfy/Stable diffusionではできないような、深度を意識した表現とか、ポーズとか、輪郭とか、そういう特定部分に対して何かするための追加機能です。
前準備
モデルはdreamshaperを使います(他のモデルでエラー出るなら一旦dreamshaperにしてみてください)。
こちらが公式的なページになるんですが、
pthが本体、yamlは補助でyamlなくても動くらしいですが、一応。
Control netの接続
Add Node→loaders→Load Controlnet Modelとクリックし、
control_net_nameで使用するControl netが選択できるので、
よってLoad Imageから接続されたVAE Encodeは削除します。
サイズは読み込む画像と一致させておきます。
残ったconditioningはCLIPから接続できますが、
Apply ControlNetを経由したポジティブプロンプトは、そのままKSamplerにつなぎます。
これで全ての配線が完了しました。
まとめると、Apply ControlNetにポジティブプロンプト、線画、Control netを接続してKSamplerのポジティブプロンプトに送っていることになります。
実行結果
数値を小さくしてやれば、
公式のワークフローを使ってみる
冒頭で貼ったサイトのpngをダウンロードし、WebUIにドラッグすることでワークフローをロードできます。
大体ここまでと同じ流れになっていますが、
Stable Diffusionのモデル(checkpoint)には、通常、VAEが内蔵されています。この内蔵VAEは、そのモデルの学習データに合わせて調整されているため、そのモデルで生成される画像に最適なエンコード・デコードを行うことができます。
しかし、場合によっては、モデルに内蔵されたVAEではなく、外部のVAEを使用する方が良い結果が得られることがあります。
ComfyUIのScribbleサンプルで vae-ft-840000-ema を使用しているのは、より高品質な顔の表現を実現するためです。モデルに内蔵されたVAEを使用するか、外部VAEを使用するかは、生成したい画像に合わせて選択できます。

コメント