こんばんは、スタジオ真榊です。このところ「ジェネレーティブ塗りつぶし」関連の記事が続いていますが、今回はControlnetに実装された新プリプロセッサ「InpaintOnly」で、疑似的にジェネレーティブ塗りつぶしができるのか?という検証記事です。
そもそもInpaintOnlyはこれまでのControlnet「Inpaint」と何が変わったのか、本当にジェネレーティブ塗りつぶしのように使うことができるのか、photoshopよりもinpaint onlyをあえて使うアドバンテージはあるか…等々を、4つの実験で検証していきたいと思います。
InpaintOnlyとは

「InpaintOnly」は、「Inpaint」モデルと組み合わせることで、マスクされた領域だけをインペイントできるシンプルなプリプロセッサです。
というと「マスクされた部分だけをインペイントするのは当たり前じゃない?」と言われそうですが、これまでCN「Inpaint」モデルと組み合わせられるプリプロセッサは「Inpaint global harmonious」のみで、こちらにはマスクしていない領域も色調や細部が変更されるものだったのですね。公式からは「いずれinpaint_restrict(制限)というプリプロセッサを追加するつもり」とアナウンスされていましたが、それがこの「InpaintOnly」になります。
分かりにくいのですが、もちろんimage2imageのインペイント画面で利用すれば、どちらのプリプロセッサを使おうとマスクされた領域しか変容しません。あくまでt2i画面で、Controlnetで読み込ませた画像の一部をマスクして変更したい場合に、この2つのプリプロセッサを使い分けられるようになったわけです。このあたりの説明はこちらの記事をご参照ください。
Image2imageインペイントとの違い
これもおさらいになりますが、CNインペイントは「細かい設定をしなくても、マスク外に描かれているものと上手につなげてくれる」力があります。これはまさにジェネレーティブ塗りつぶしの特徴そのものなのですが、マスクした部分だけをただi2iするだけの通常インペイントとCNインペイントの最大の違いはここです。
さきほどの記事では、こちらの右側の女の子を花束に変える実験を行いました。

通常インペイントで入れ替えようとするとこのようになってしまうわけですが、

t2i画面でこのようにControlnetを起動し、「inpaint global harmonius+Inpaint」をONにして生成すると、

女の子がいた形跡もなくキレイに差し替えてもらうことができます。ただ、4つの画像のリボン部分をよく見くらべてみると、マスク領域外なのに微妙に色味が変化してしまっていることが見て取れます。

さて、ここからが本番。Inpaint global harmoniusの代わりに今回追加された「InpaintOnly」をプリプロセッサに指定すると…

マスク以外はしっかりそのままに、CNインペイントのアドバンテージを生かすことができるようになりました。快挙!
ジェネレーティブ塗りつぶしには「インサート」「リムーブ」「アウトペイント」の三種の機能があると紹介しましたが、InpaintOnlyの追加によって少なくとも「インサート」についてはほぼ同じことがSDwebUI上でもできるようになったわけですね。





