🦊inpainting
inpaintingは画像の一部分のみを編集するタスクですが、細かく見ると2種類に分けることができます
1. マスクされた部分のみのimage2image
2. マスクされた部分を周りの情報をもとに埋める
🎨マスクされた部分のみのimage2image
マスクを作る方法はいろいろありますが、まずは以下の方法を
画像上で右クリック → Open in MaskEditor
からペンで塗りつぶし → Save to node
🍩マスクされた部分を周りの情報をもとに埋める
さて、上のworkflowのdenoiseを1.00にしてみましょう
うわぁぉホラー画像
元の画像の情報をほぼまったく持っていないので、マスク部分(右画像)をキャンバスにしただけのtext2imageに近いです
これでは困りますね、全体の雰囲気を見つつ、マスクされた部分を描いてもらう方法はないでしょうか?
🎯inpaintingモデルを使う
モデルのダウンロード
髪の色を変えるくらいなら上のimage2imageでも対応できますが、なにかものを描き加えるといったimage2imageでは対応できない場面で真価を発揮します
Inpaintingモデルのほかにも手法があるので見てみましょう
🐉ControlNet Inpaintを使う
inpaintingモデルを使う方法の弱点は、inpaintingモデルを使わないといけないことです(当たり前)
特にStable Diffuison 1.5のものはかなり古いのでモダンな好きなモデルを使いたい場合もあるでしょう
先取りになりますが、
ControlNetを使うことでノーマルモデルでもinpaintigできるようになります
🪢カスタムノード
一番上で紹介したworkflowにControlNetを組み込みます
Fooocusで開発された独自のinpaintingモデル(?)を使うという手もあります
ControlNetと同様、好きなモデルをinpaintingに対応させることができます
SDXLのみの対応ですが、SDXL用のControlNet inpaintモデルが存在しないためちょうど代わりとして使えます
🪢カスタムノード
モデルのダウンロード
ComfyUI\models
に inpaint
フォルダを作り、 fooocus_inpaint_head.pth
と inpaint_v26.fooocus.patch
を置きます
Model downloadをクリックしてLaMaとMATをダウンロード、上と同じinpaintフォルダに置きます
🟨下処理として、LaMaを使ってオブジェクト除去
なくても良いのですが、境目が目立ってしまうためあった方が良いです
中身としてはInpaintModelConditioningノードとVAEEncodeForInpaintノードが合体したものです
🦊FLUX.1 Tools
Fluxの開発元からinpaintingモデルのようなものが発表され、かなり高いクオリティでinpaintingすることができます
いつか解説するかもしれない