こんばんは、スタジオ真榊です。StableDiffusionwebUIとControlnetのアップデートが同時に来て、またもプリプロセッサの数が増えました!Controlnet画面はすっきり見やすく整理され、タイプごとにモデルやプリプロセッサを一発呼び出しできる大変親切なUIに進化しています。

キャラの顔移植が可能に?「ReferenceOnly+inpaint」の進化:図版1

新しいプリプロセッサの検証も進めているところなのですが、今夜はReferenceOnlyが「マスク部分のみinpaint」に対応した件について紹介したいと思います。これがなぜ画期的かというと、既存の画像の一部を参照(Referene)して、周囲に調和させつつ「移植」できる可能性がでてきたからなんですね。

こちらのイラストは、先日投稿したGRIDMANの六花ちゃんのイラストに、うちの看板娘「更木ミナちゃん」の顔を移植したもの。顔部分を単純にi2iしたのではなく、こちらのイラストをAIに参照してもらい、該当する部分に描き込んでもらっています。

設定によってはキレイに調和せず「切り抜きコラ感」が出てしまうのですが、上手に調和させるコツはなんなのか、他にどんなことができるのか、いろいろ検証してみました。

※今回の実験はControlnetのバージョンが1.1.178以降である必要があります

実験の前提

まずはReferenceプリプロセッサのおさらいから・・・と言いたいところですが、書くべきことはだいたいReferenceプリプロセッサ解説の記事に書いたので、こちらをご参照ください。

大事なのは、①「ReferenceOnly」は再現度は低いけど良い感じにまとめてくれる、②「reference_adain+attn」はかなり忠実にスタイルを継承するかわりに融通がきかないーという部分です。

一方、inpaint機能もなかなかややこしく、特に今回使う「マスクのみ」の扱いは理解しにくいので、こちらの記事を参考にしつつご覧ください。

今回の実験でやることは「画像Aの一部を切り抜いて画像Bのマスク部分に貼り付ける」というものですが、貼り付け前と貼り付け先では顔面の大きさや角度が当然違いますし、ただコピペするだけならクリスタやPhotoshopでもできます。あくまで画像AをReference(参照)してもらい、それをお手本に画像Bのマスクした部分を書き直してもらうことができるか?ということですね。

まずは首から上全体の移植、つまり「首のすげ替え」を試し、次に顔の輪郭より小さい「顔面の移植」を試してみることにしましょう。

首から上のすげ替え実験

タイトルが非常に人聞きが悪い感じになりましたが、まずは首から上を替えてみます。画像Aの首から上をBに移植するのですが、ここで思い出したいのはプリプロセッサの特徴の違いです。

「ReferenceOnly」は参照した画像の再現度が低くなるものの、貼り付け先に調和させてくれるのが特徴。「reference_adain+attn」は融通が利かず、左向きのキャラの画像を参照させると左向きの画像ばかりが出力されるのが弱点です。どちらを使うかは、モデルとなる画像Aと画像Bが調和させやすい構図関係かどうかで考えるべきだと言えます。例えば、二つとも同じ方向を向いた画像なら「reference_adain+attn」で再現度高く生成するのがよいですが、馴染まない画像同士をむりに「reference_adain+attn」で合体すると失敗するので、その場合は「ReferenceOnly」を使うことになります。

首から上のすげ替え実験:図版1

今回合体させるのはこちらの二枚。顔の向きや構図が全く違うので、「ReferenceOnly」を使うことにします。まずはi2i画面で移植先(六花ちゃんイラスト)の画像を読み込み、すげ替えたい部分(首から上)をマスクします。

首から上のすげ替え実験:図版2

マスクが掛けられたら、Controlnet画面を開き、「ReferenceOnly+忠実度0.5」で移植元(ミナちゃんイラスト)の画像を読み込みます。

このとき、Control modeを「My prompt is more important」にすることで、この画像の構図に引っ張られすぎないようにしましょう。この画像よりもプロンプトをより重視して描かせることで、マスク内外の断裂を防ぐ効果があります。

首から上のすげ替え実験:図版3

さらに、inpaint先を周囲に調和させるために、MultiContorolnet機能でもう一つControlnet画面を開きます。こちらでは「inpaint global harmonius」「inpaint」を選択するだけで、画像は読み込ませません。

首から上のすげ替え実験:図版4