見出し画像

表情差分を作ろう!


概要

人物の表情差分を作るトリッキーな方法を解説します!

どういう状況で使うの?

表情差分を作成する一般的な方法はインペイントを使う方法が主流です。

https://qiita.com/itohdaigo/items/3fc0e0c6647aac04f74f

https://qiita.com/itohdaigo/items/3fc0e0c6647aac04f74f

https://sasalabo.net/2022/10/25/stable-diffusion-web-ui%E3%81%A7%E8%A1%A8%E6%83%85%E5%B7%AE%E5%88%86%E3%82%92%E4%BD%9C%E3%82%8B/

こちらの画像を具体例としてやってみます。
※特に注意書きがない場合は私の自作画像です。

元画像:美女が眠っているみたい

彼女を起こして怒らせてしまった感じの表情差分を作ってみましょう!
まずは記事にあるようなインペイントを試してみます。
プロンプトに"angry"を足して強度を調整したりseeeで生成ガチャを軽く回してみました。

左:インペイントのマスク、右:インペイント後

怒っていると言えばそうかも知れませんが、ちょっと上手く行っていません…
そんなときに試して見る価値があるトリッキーな方法を紹介します。

どんな方法?

この方法はControlNet v1.1以降のinstruct Pix2Pixを使うのがポイントです。

instruct Pix2Pixとは?

instruct Pix2PixはControlNetで指定した画像に対してプロンプトの指示に合うような画像を生成するものです。
※プロンプトが生成したい画像の描写ではなく元画像に対する指示になっている点に注意してください。

例えば、家の画像に対してプロンプト「make it on fire(燃え上がらせろ)」で生成すると元画像の家が燃えたような画像を生成してくれます。

instract Pix2Pixの例 引用:https://github.com/lllyasviel/ControlNet-v1-1-nightly

画像に何が写っているかはControlNetで指定した画像がAIに教えてくれるので、instruct Pix2Pixにおけるプロンプトは元画像に対する指示にフォーカスしている点がミソです。

実際にやってみよう!

txt2imgでプロンプトを"make her angry"のみ、ネガティブプロンプトは元画像のままとして他の設定は元画像のものを指定します。
※ seedも固定

txt2imgの生成設定

次にControlNetにinstruct pix2pixを設定します。
モデル名が分かりづらいですがcontrol_v11e_sd15_ip2pです。

ControlNetの設定

生成してみるといい感じに怒ってる画像になりました!

左:元画像、右:instruct Pix2Pixの生成画像

しかし、顔以外も変わってしまっているので表情差分としては不適切です。
ここからはちょっと手間がかかります。

怒らせた画像から顔領域を切り抜いて、元画像に貼り付けて位置合わせします。
※ 私はMacなのでプレビューの投げ縄で領域選択してコピーし、貼り付ける画像にペーストしています。

左:切り抜いた画像、右:貼り付けた画像

よく見ると貼り付けたときの境界線と色味の差が気になります。
最後にControlNetなしの通常のインペイントでなじませます。
※ Resize modeはJust resize、Denosing strengthは0.3ぐらいにします。

img2imgのインペイントの設定

貼り付けた領域を含むようにマスクしてインペイントします。

左:インペイントのマスク、右:インペイント後

これで綺麗に表情差分が作れました!

注意点

この方法は万能薬ではありません。表情差分が上手く作れないときに試す選択肢の一つとして持っていると表現に幅が出せます!
上手く行った・行かないがあれば是非コメントしてください!

この記事が気に入ったらサポートをしてみませんか?