LivePortrait | 動態肖像 | Img2Vid
這個 ComfyUI LivePortrait Img2Vid 工作流程通過整合高效的 LivePortrait 框架,將靜態肖像圖像帶入生活。它使您能夠創建高度逼真的動畫視頻,並完全控制面部表情、頭部運動以及眼睛和嘴巴等細節。ComfyUI LivePortrait 工作流程
ComfyUI LivePortrait 範例
ComfyUI LivePortrait 說明
什麼是 LivePortrait?
LivePortrait 是由快手科技開發的高效肖像動畫框架,旨在從單一圖像合成逼真的視頻。它使用源圖像作為外觀參考,並從驅動視頻、音頻、文本或生成中獲取動作(面部表情和頭部姿勢)。
與主流基於擴散的方法不同,LivePortrait 探索並擴展了一個隱式關鍵點框架,以有效平衡計算效率和可控性。它專注於更好的泛化、可控性和實用性效率。即使與擴散方法相比,LivePortrait 的生成質量也很高,而且速度極快 - 在 RTX 4090 GPU 上使用 PyTorch,每幀約 12.8 毫秒。
欲了解更多詳情,請訪問
LivePortrait 如何運作
在高層次上,LivePortrait 將源圖像和驅動視頻作為輸入。它從源圖像中提取外觀,從驅動視頻中提取動作。然後這些通過扭曲和生成模塊結合起來,合成一個動畫肖像視頻,保留源圖像的身份但遵循驅動視頻的動作和表情。
LivePortrait 的關鍵組件是:
- 外觀特徵提取器:編碼源圖像的身份和外觀信息。
- 動作提取器:從驅動視頻幀中提取動作特徵(面部關鍵點)。
- 扭曲模塊:使用提取的動作扭曲源圖像特徵,將它們對齊到驅動姿勢和表情。
- 圖像生成器:採用扭曲特徵合成最終的照片級逼真動畫幀。
- 拼接與重定向模塊:可選地將生成的肖像拼接回原始圖像,並允許控制特定面部區域如眼睛和嘴巴。
這些模塊被高效設計,協同工作以實現高質量、可控的 LivePortrait 動畫。
如何使用 ComfyUI LivePortrait
感謝 節點和工作流程,在 ComfyUI 中創建逼真的肖像動畫現在變得更容易。以下是他的 ComfyUI LivePortrait 工作流程的關鍵組件和參數的細分。
ComfyUI LivePortrait Img2Vid 工作流程的關鍵步驟
1. 加載 Live Portrait 模型
- 添加 "DownloadAndLoadLivePortraitModels" 節點
- 將精度設置為自動或 fp16,以獲得最佳性能
2. 為 LivePortrait 選擇面部檢測器
- 您可以在 "LivePortraitLoadCropper" (InsightFace) 和 "LivePortraitLoadMediaPipeCropper" 節點之間選擇
- InsightFace 更準確,但具有非商業許可,MediaPipe 在 CPU 上更快但不太準確
- 兩者都輸出一個 "cropper",將用於檢測和裁剪面孔
3. 為 LivePortrait 加載和預處理源圖像
- 使用 "Load Image" 節點加載您的源肖像圖像
- 使用 "ImageResize" 節點將其調整為 512x512
- 將調整大小的圖像連接到 "LivePortraitCropper" 節點
- 還將您選擇的面部檢測器的 "cropper" 輸出連接到此節點
- "LivePortraitCropper" 節點中的關鍵參數
"dsize": 設置裁剪臉部圖像的輸出分辨率
- 默認為 512,意味著臉部將被裁剪為 512x512 像素
- 更高的值將以更高的分辨率裁剪面孔,但可能處理較慢
- 更低的值將更快,但可能會失去一些細節
"scale": 控制臉部裁剪的縮放程度
- 默認為 2.3,更高的值將更接近臉部,較低的值將包括更多的頭部/背景
- 您需要調整此值,以確保裁剪包括整個臉部和一些背景,但不多餘空間
- 良好的臉部裁剪對於動作轉移的效果很重要
- 典型值範圍從 1.8 到 2.5,取決於源圖像的構圖
"face_index": 如果圖像中檢測到多張臉,這將選擇要裁剪的臉
- 默認為 0,選擇第一個檢測到的臉
- 如果您想選擇圖像中的其他臉,則增加此值
- 檢測到的臉按 "face_index_order" 設定的順序排列(默認從大到小)
"vx_ratio" 和 "vy_ratio"(可選):這些用於垂直(vy)或水平(vx)偏移裁剪
- 值範圍從 -1 到 1
- 例如,將 vy 設置為 0.1 將使裁剪向上移動 10%的幀大小
- 如果自動裁剪稍有不對準,這可能有幫助
"face_index_order": 設置選擇 face_index 時檢測到的臉的排序方式
- 默認為 "large-small",從最大到最小排序
- 還可以從左到右、從上到下排序等。
- 只有在圖像中有多張臉時才相關
4. 為 LivePortrait 加載和預處理驅動視頻
- 使用 "VHS_LoadVideo" 節點加載您的驅動視頻
- 使用 "frame_load_cap" 原語調整 num_frames
- 使用 "GetImageSizeAndCount" 節點將視頻幀調整為 480x480
- 您可以選擇性地使用另一個 "LivePortraitCropper" 節點裁剪驅動視頻幀
5. 為 LivePortrait 應用動作轉移
- 添加 "LivePortraitProcess" 節點
- 將加載的管道、源圖像 crop_info、裁剪的源圖像和驅動幀連接到 "LivePortraitProcess" 節點
- "LivePortraitProcess" 節點中的關鍵參數
"lip_zero": 啟用時,如果唇參數低於某個閾值,將其歸零
- 這有助於減少不自然的唇部動作並改善唇同步
- 建議啟用此功能,除非您特別想保留所有唇部動作
"lip_zero_threshold": 當 "lip_zero" 啟用時,設置唇參數歸零的閾值
- 默認為 0.03,更高的值將歸零更多唇部動作,較低的值將保留更多
- 如果您想改變唇部動作的抑制程度,請調整此值
"stitching": 啟用時,將通過拼接過程將動畫臉部混合回原始圖像
- 這有助於在動畫臉部和背景之間創建更無縫的過渡
- 建議啟用此功能以獲得最自然的外觀效果
"delta_multiplier": 以乘數縮放動作參數
- 默認為 1.0,更高的值將誇大動作,較低的值將減少動作
- 可用於調整面部動作的整體強度
- 典型值範圍從 0.8 到 1.5,取決於所需效果
"mismatch_method": 設置工作流程處理源和驅動幀數不匹配的方法
- 選項為 "constant"、"cycle"、"mirror" 和 "cut"
- "constant" 將保持在最後一幀,"cycle" 將循環,"mirror" 將正向播放然後反向播放,"cut" 將停止
- 默認為 "constant",如果您想在驅動視頻比源更長或更短時改變行為,請更改此選項
"relative_motion_mode": 控制將動作從驅動視頻轉移到源圖像的方式
- 選項為 "relative"、"source_video_smoothed"、"relative_rotation_only"、"single_frame" 和 "off"
- 默認為 "relative",使用相對動作轉移
- "off" 將完全禁用動作轉移
- 試驗不同模式以查看哪種模式為您的特定用例提供最佳效果
"driving_smooth_observation_variance": 使用 "source_video_smoothed" 動作模式時,控制驅動動作的平滑度
- 更高的值將更多平滑動作,較低的值將保留更多原始動作
- 默認為 0.000003,如果您想改變轉移動作的平滑度,請調整此值
6. 為 LivePortrait 複合結果(可選)
- 要將動畫臉部複合回源圖像中,使用 "LivePortraitComposite" 節點
- 連接原始源圖像、裁剪的動畫圖像、LivePortrait 輸出數據和可選的遮罩
- 這將輸出帶有動畫臉部混合的完整幀
7. 為 LivePortrait 配置重定向(可選)
- 為了更精細地控制眼睛和嘴唇,使用 "LivePortraitRetargeting" 節點
- 啟用眼睛和/或嘴唇重定向並調整它們的乘數
- 將重定向信息連接到 "LivePortraitProcess"
請注意,該工作流程需要 Insightface 模型。Insightface 模型(https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip)許可性質為非商業用途。
如果您對 LivePortrait Vid2Vid 感興趣,請使用