【ComfyUI】 参照動画不要!AdvancedLivePortraitで画像に表情を付けてみよう!
今回は、ComfyUIの強力なカスタムノードであるComfyUI-AdvancedLivePortraitを使って、静止画の顔にリアルな表情を付ける方法を紹介します。以前の記事で紹介したComfyUI-LivePortraitKJとは異なり、参照元動画を必要とせず、GUIで直感的に表情を編集することができます。本記事では、ComfyUI-AdvancedLivePortraitの基本的な使い方から、ワークフローの詳細、各ノードの役割までを丁寧に解説し、誰でも簡単に静止画に命を吹き込めるようにガイドします。
前回のComfyUIでLivePortraitを動作させる記事は以下になります。
1. 使用するカスタムノード
ComfyUI-AdvancedLivePortrait
ComfyUI-AdvancedLivePortraitは、LivePortraitを利用した顔編集を実現したカスタムノードです。前回の記事で紹介したComfyUI-LivePortraitKJは、参照元動画が必要でしたが、ComfyUI-AdvancedLivePortraitでは、参照元動画なしで表情を変えることができます。ComfyUI-AdvancedLivePortraitのリポジトリは以下になります。ComfyUI Managerからインストール可能です。
2. 使用する素材
対象画像
前回と同じく、以下の画像をLivePortraitで動かします。以下の画像をダウンロードし、ComfyUIで使用してください。
3. 使用するワークフローと全体像
今回使用するワークフローは、ComfyUI-AdvancedLivePortraitが公開しているサンプルのワークフローを使用します。以下のリンクよりダウンロードしてください。
ワークフローの全体像は、以下の画像を参照ください。
このワークフローを以下のようにフローチャートで図示しました。
このワークフローの主要コンポーネントとその役割を、ノード名を含めて説明します。
画像の読み込み:
LoadImage: ソース画像を読み込みます。
表情の編集:
ExpressionEditor: 読み込まれた画像の顔の表情を編集します。このノードには複数のパラメータがあり、様々な表情の要素を調整できます。
winkが23.5を設定しており、画像にウィンクをさせる処理が走ります。
編集済み画像の保存:
SaveImage: 表情が編集された画像を保存します。
このワークフローの処理の流れは以下の通りです。
LoadImageノードが対象画像を読み込みます。
読み込まれた画像はExpressionEditorノードに送られ、設定されたパラメータに基づいて顔の表情が編集されます。
編集された画像は最後にSaveImageノードに送られ、画像として保存されます。
4. 使用するノードの説明
Expression Editor (PHM)
ExpressionEditorは、ComfyUI-AdvancedLivePortraitの一部であり、静止画の人物の表情をGUIでインタラクティブに編集できるノードです。 スライダーを使って顔の回転、目の開閉、口の形、笑顔など、様々な表情パラメータを細かく調整できます。
入力
src_image: 表情を編集したい人物の画像。
sample_image: 表情のサンプルとなる画像。
motion_link: 他のExpressionEditorノードからの出力。複数のExpressionEditorノードを繋げて、複雑な表情アニメーションを作成できます。
add_exp: LoadExpDataノードなどで読み込んだ表情データ。保存済みの表情データを適用できます。
出力
image: 表情が変更された画像。
motion_link: ExpressionEditorノードの出力。AdvancedLivePortraitノードに接続して、静止画の表情を動画に適用できます。
save_exp: 保存可能な表情データ。SaveExpDataノードに接続して、表情データを保存できます。
ウィジェット
rotate_pitch: 顔の縦方向の回転 (-20 ~ 20)
rotate_yaw: 顔の横方向の回転 (-20 ~ 20)
rotate_roll: 顔の軸方向の回転 (-20 ~ 20)
blink: まばたきの強さ (-20 ~ 5)
eyebrow: 眉の高さ (-10 ~ 15)
wink: ウィンクの強さ (0 ~ 25)
pupil_x: 瞳の横方向の位置 (-15 ~ 15)
pupil_y: 瞳の縦方向の位置 (-15 ~ 15)
aaa: 口の開閉度 (-30 ~ 120)
eee: 口の「え」の形 (-20 ~ 15)
woo: 口の「う」の形 (-20 ~ 15)
smile: 笑顔の強さ (-0.3 ~ 1.3)
src_ratio: ソース画像の表情の適用割合 (0 ~ 1)
sample_ratio: サンプル画像の表情の適用割合 (-0.2 ~ 1.2)
sample_parts: サンプル画像から転送する表情のパーツ
OnlyExpression: 表情の変化のみを転送します。顔の回転や目の位置は変更しません。具体的には、口の開き具合、眉の高さ、笑顔の度合いなどです。
OnlyRotation: 顔の回転のみを転送します。表情の変化は転送しません。具体的には、顔の縦方向・横方向・軸方向の回転です。
OnlyMouth: 口の表情のみを転送します。顔の回転や目の表情は変更しません。具体的には、口の開き具合、口の形 (「え」の形、「う」の形など) です。
OnlyEyes: 目の表情のみを転送します。顔の回転や口の表情は変更しません。具体的には、目の開き具合、ウィンク、眉の高さ、瞳の位置などです。
All: 表情の変化と顔の回転、両方を含めて全ての表情を転送します。
crop_factor: 顔検出時のクロップ領域の拡大率 (1.5 ~ 2.5)
5. ワークフローの実行準備
まず、ダウンロードしたワークフローをComfyUIにロードしてください。
次に、対象画像をLoad Imageノードに読み込んでください。
6. ワークフローの実行
ここまでの内容で準備が完了したので、ワークフローを実行してください。以下が実行結果です。画像にウィンクをさせることに成功しました。
次にrotate_yawを-17.0に設定し、顔を正面に向けてみました。
さらにsmileを1.00に設定し、笑顔にしてみました。
最後にeyebrowを15.0に設定し、眉毛を上げてみました。
自由に表情を変えることができ、画像編集に非常に有効的な手法だと感じました。たまに「この画像、もう少しこうだったら…」と思うことがありますが、それを解決してくれるものになるでしょう。皆さんも色々試してみてください!
7. 補足
リアルタイム処理
ComfyUI-AdvancedLivePortraitのリポジトリを見ると、リアルタイムで処理を行っています。ComfyUIでリアルタイム処理をするには、メニューの「Extra options」にある「Auto Queue」にチェックを入れ、「change」に設定します。こうすることで、ワークフローに変化(例えば、ウィジェットの値を変更する)が起きると、自動でワークフローが実行されるようになります。この時、Save Imageノードは削除し、Preview Imageにすることをお勧めします(変化のたびに画像保存されるため)。
ライセンスについて
ComfyUI-AdvancedLivePortraitのライセンスは公開されていません。そのため、商用利用可能か不明です。リポジトリのIssueにライセンスについて質問している方がいらっしゃったので、開発者の返信待ちになります。
この記事でご紹介したAI技術の応用方法について、もっと詳しく知りたい方や、実際に自社のビジネスにAIを導入したいとお考えの方、私たちは、企業のAI導入をサポートするAIコンサルティングサービスを提供しています。以下のようなニーズにお応えします。
AIを使った業務効率化の実現
データ分析に基づくビジネス戦略の立案
AI技術の導入から運用・教育までの全面サポート
専門家によるカスタマイズされたAIソリューションの提案
初回相談無料ですので、お気軽にご相談ください。以下のリンクからお問い合わせください。
この記事が気に入ったらサポートをしてみませんか?