「reference_only」機能をわかりやすく解説ー人物そのままで衣装変更【ControlNET講座#5】|Stable Diffusion
「Stable Diffusion」のControlNET講座第5回。「reference_only」を使って、同じ人物のまま服装などを変更する方法です。
というのも、「Stable Diffusion」はスクリプトを変えてしまうと、人物も変わってしまうことがあるのですね。そのため、「作成した人物に、別の服を着せたい」みたいな要求が難しくなります。
その難しい要求をかなえるのが「reference_only」です。手順をわかりやすく解説していきます。前回の「「Depth map library and poser」をわかりやすく解説ー手を修正」は以下のリンクから。
「reference_only」の使い方
「ControlNetv1.1」以上をインストールした状態であることを前提に話を進めます。まだの方や、インストールしたけどバージョンがわからんという方は以下のリンクを参照。
服装を変更する
「Txt2img」でつくった適当な画像を使います。この画像の人物を保ったまま、服装を変えてみます。
次に下の「ControlNet」を開いて、そこに先程生成した画像を入れます。それから「Enable」と「Pixel Perfect」にチェックを入れてください。
「Preprocessor」は「reference_only」に設定。モデルは不要です。
プロンプトはさっき画像を作った時のままでOKですが、服装を水着に変えるために「swimsuit」と付け加えておきます。シード値は固定しなくてOKです。
あとはいつものごとく「Generate」ボタンをクリック。
結果はこちら。
服装を取り込んでしまっていますね。プロンプトをいじって調整してみるのもいいでしょう。「swimsuit」を「school swimsuit」に変更してみます。
あとはひらすらガチャをするしかないかもしれませんね。
スカートの影響を減らすためには、元画像を少し切り取って、上半身だけにしてみます。これで生成してみましょう。
調整は必要ですが、顔を保ったまま変化させることができているのがわかるかと思います。
プロンプトをいじって、『FF7』のティファのコスプレをさせてみました。ちょっと画像が荒いですが、調整すればなんとかなりそうです。
某KOFのアテナさん。ヘアバンドやイヤリングも付けることができますね。
着物を着せてみました。プロンプトに「kimono」と書いただけですが、うまくマッチしています。プロンプトについては以下のプロンプト一覧記事も参照してみてください。
用意した衣装画像を着せる
「ControlNET」を2つ使って、1つ目は先ほどの上半身画像、2つ目は服装の画像を入れます。「ControlNET」を複数にするには、「Settings」タブ→左側の一覧にある「ControlNET」タブ→「Multi ControlNet: Max models amount (requires restart)」の数字を増やしてください(再起動必要)。
衣服画像だけでは弱いので、まず衣服画像を「Tagger」タブで分析させ、服装関係の単語だけ抜き出してプロンプトに貼り付けます。「Tagger」の導入と使い方は以下のリンクから。
生成した結果はこちら。
元画像の服装が複雑なので、難しいところはありますね。何度かガチャを繰り返したり、プロンプトで要素を付け加えてもよいでしょう。
まとめ
以上のように「reference_only」は、同じ人物を流用して別の衣装を着せたいときなどに使うことができます。
ただ完璧にできるわけではなく、身長や細かいところが変わってしまうのは、ある程度は仕方のないところですね。
しかしこれまでの、「プロンプトを変えると人物も変わってしまう」という部分をかなり補えるようになったとは思います。
それでは次回の講座でまたお会いしましょう。【追記】次回、「「OpenPose」「OpenPose Editor」機能をわかりやすく解説ー自由にポーズ変更」できました。以下のリンクから。