Advanced Live Portrait (PHM)

节点功能:用于生成动态图像,通过指定一些控制参数,能够对静态图像进行实时表情和动作的修改与生成,支持通过命令、视频驱动或单独表情控制来驱动图像变化。

输入参数

参数名称说明
src_images源图像或图像序列。可为单张图像或多个连续帧。
motion_link表情模型指针数组。用于命令模式下引用历史表情。
driving_images驱动图像帧序列,用于表情和姿态驱动。通常来自视频帧或提取帧序列。

输出参数

参数名称说明
images返回动画后的人脸图像序列。

控件参数

参数名称说明
retargeting_eyes控制眼部表情的跟随程度,0 表示不跟随,1 表示完全跟随驱动帧。通常设置为 0.5~1.0,用于自然眼动表现。
retargeting_mouth控制嘴部表情的跟随程度。控制说话或表情动作的同步度。
crop_factor控制源图像裁剪区域大小。影响人脸定位区域大小,需匹配源图比例。
turn_on控制是否启用节点逻辑。为 False 时返回空,跳过计算。
tracking_src_vid是否对源图序列进行动态追踪。适用于源图是视频帧时,避免位移偏差。
animate_without_vid在无驱动帧时,是否根据指令动画执行。
command多行指令,格式为 idx=change:keep。控制表情过渡,每行指定变化帧数与保持帧数。

如下,通过导入一个驱动视频来控制源图人物表情生成表情迁移视频。


以下是retargeting_eyes值为0和0.5的表情变化,从图像帧中可以看到,值越大,人物眼睛动作幅度越大。retargeting_mouth参数也是一样(嘴的变化)


以下是crop_factor分别为1.5和2.5的图像帧,从图片上看起来区别不大,但使用ImageCompare节点比较一下,还是有细微的区别的。值越小,人物脸部在整个画面中的占比更大。


turn_on设置为false后,该节点不会起作用,如下图,下面其实也是运行了的,但是没出现图片。


接下来使用command命令控制表情,下面文本框中填入了1=1:10 2=5:10。


其中1 = 1:10代表用第一个motion_link中的用动作改变一帧,然后下一个动作在10帧后开始,2=5:10代表用第二个motion_link用的动作改变5帧,下一个动作在10帧后开始。它这里并不是说5帧内一定要完成这个动作,还是循序渐进的过程,只是从这开始发生变化,并还要根据驱动视频的表情走的。


0 = 2:50则并没有根据motion_link中的表情发生变化,因为索引0则代表源图中的表情。如果是3 = 2:50则会报错,因为这里只有两个motion_link。


1 = 2:0,末尾是0,则代表使用第一个motion_link中的表情持续到最后。


animate_without_vid开启后,不连接驱动视频,也能生成动画视频。