今回はControlNetに関する話題で、タイトルの通り
をご紹介するという内容になっています。
ControlNetはキャラクターのポーズ等をきっちり指定できて便利なので活用なさっている方も多いかと思います。ただ従来のControlNetの弱みとして表情だけを指定するのが難しいという欠点があり、この点で悩んでいる方もいらっしゃるのではないでしょうか。
しかし最近、そんな欠点を克服できる「MediaPipeFace」が最新のControlNet(v1.1)に実装されたと聞いたので実際に試してみることにしました。
ここではこのMediaPipeFaceについて
- 概要や導入方法
- 基本的な使い方
- Openpose Faceとの比較結果
といった部分を解説していきますね。
前提:Stable Diffusion web UIとControlNet拡張機能が必要
はじめに前提としてMediaPipeFaceを使うには次の2つの下準備が必要です。
- Stable Diffusion web UI(AUTOMATIC1111版)をインストールして使えるようにしておく
- さらにそのweb UI用のControlNet拡張機能もインストールしておく
まだStable Diffusion web UIをインストールしていない場合は、下記の記事でインストール手順や使い方を丁寧に解説していますのでそちらをご覧ください。
またControlNetの基本については下記の記事で詳しくご紹介していますので、まだ使ったことがないよという方はそちらも併せてご覧頂ければと思います。
MediaPipeFaceについて
公式ページ
MediaPipeFaceとは?
「ControlNetMediaPipeFace」(以下、長いのでMediaPipeFaceと呼びます)は元画像の被写体の表情を検出し、それに従った表情の画像を生成できるControlNet用のモデルです。
これを使うと今まで困難だった表情だけの指定が簡単になり表現の幅が広がります。なお表情の検出・指定は一人だけでなく複数のキャラクターに適用することができます。
従来のControlNetのモデルとの比較
ではサンプルとして従来のControlNetのモデル(ここでは例としてcanny)と、MediaPipeFaceとの比較結果を掲載しておくので参考になさってください。
入力(元画像) | canny | MediaPipeFace |
---|---|---|
Cannyは元画像に従った表情をある程度再現できているのですが、問題点として表情以外の部分も元画像に大きく引っ張られてしまっています。
一方でMediaPipeFaceであれば表情や顔の位置だけを上手く抽出して適用できており、その問題点を解決できていることがわかります。
MediaPipeFaceの導入方法
さてMediaPipeFaceの導入方法は次のとおりで2ステップが必要です。
- ControlNet拡張機能を最新版に更新する。
- ControlNet用モデルをダウンロードして所定のフォルダに入れる。
ControlNet拡張機能を最新版に更新する
まずはStable Diffusion web UIのControlNet拡張機能を最新版(v1.1の2023/04/18以降のバージョン)に更新します。
最新版ではなくてもモデルを入れれば一応MediaPipeFace自体は使えるのですが、表情検出を行うプリプロセッサは新しいバージョンでしか使えません。古いバージョンのままではとても不便なので一手間かけてでも更新しておきましょう。
ControlNet用モデルをダウンロードして所定のフォルダに入れる
次はMediaPipeFace用のモデルをダウンロードして所定のフォルダに入れます。
下記ページ(Hugging Face)から「control_v2p_sd15_mediapipe_face.safetensors」をダウンロードしてください。
そうしたらこのファイルを下記のフォルダに移動させてください。
これで下準備は完了です。web UIを起動中の場合は再読込すると、ControlNetのモデル欄にMediaPipeFaceの項目が出るようになります。
MediaPipeFaceの使い方
ではMediaPipeFaceの使い方について簡潔にご説明します。
ControlNetの設定方法
下記のように設定を行ってください。
- 有効化:チェックを入れる
- プリプロセッサ:mediapipe_face
- モデル:control_v2p_sd15_mediapipe_face
あとはデフォルトでも大丈夫です(※ただしキャラクターが複数人の場合は「Max Faces」の値を人数分に変えてください)。いつも通り呪文を記入して画像を生成してください。
注意点
MediaPipeFaceは表情を正確に検出してくれるのですが、(執筆時点では)その検出結果を生成に使う際に目や口の状態が無視されることが多いというまあまあ重大な問題があります。
そのため表情の指定すべてをMediaPipeFaceにお任せするのではなく、目や口は呪文で指定しておくと(例えば目を閉じているなら「closed eyes」など)より正確な結果を得ることができます。
おまけ:ControlNet v1.1の「Openpose Face」との比較
最後に、執筆時点のControlNetの最新版(v1.1)ではOpenposeモデルにも表情指定機能が搭載されているので、それとMediaPipeFaceを比較してみようと思います。
入力画像 | MediaPipeFace | Openpose Face |
---|---|---|
結果を見てみるとOpenpose Faceのほうが入力画像に厳密に従うような印象ですね。ただ
- 表情さえ指定できれば厳密さはそこまで必要ない
- ある程度の「ゆらぎ」があったほうが面白い画像を生成できそうだ
という場合はMediaPipeFaceのほうが使いやすいと思います。状況に応じて使い分けてください。
おわりに
以上、キャラクターの表情を制御できる「MediaPipeFace」をControlNetで使う方法をご紹介しました。大げさな表情の場合に活用しやすいモデルなので、コミカルな表情のイラストを生成してみたいという方はぜひ試してみてください。
この記事が何かしら参考になれば幸いです。