logo
Published on
1,301 字

加藤惠-手势舞

Authors

这次跟以前不一样:不是让模型「画一个加藤惠出来」,而是把一段真人视频里的动作逐帧搬到她身上——抬手、转身、手指的弧度,全部照原片走。原片是网上一条手势舞,人换成我惠,动作一点没改。

12.7 秒,1440×2560,60fps,无声。

怎么做的

以前这条路我走的是「参考生成」:把参考图和参考视频丢给模型,让它自己理解、自己生成。画面是好看,但动作节奏总跟原片对不上——快一拍慢一拍,中间还掉速。这回换了一条完全不同的路:逐帧驱动。原理很土——先把原片里那人的骨架姿势、人脸、人体框一帧一帧提取出来,再让模型照着这个「框架」把惠画进去。动作的快慢不再由模型拍脑袋,而是由骨架决定,所以是 1:1 复刻。

工序不复杂:一张参考图(决定她长什么样、穿什么)+ 一段驱动视频(决定她怎么动),丢进工作流跑,出来再放大插帧。

折腾全在细节上。

脸不像。 第一版出来,动作完美、衣服完美、连背景都跟原片差不多,就是那张脸既不像惠也不像原片那人——更像是模型自己想象了一张。查了半天才发现问题在「脸的条件」这条线上:它默认取的是驱动视频里那个人的脸,参考图只负责提供身份,两边一半一半,模型就折中出一张谁都不像的脸。

更隐蔽的是,我那张参考图是全身图,脸只占画面高度的十二分之一,再被缩到源视频的尺寸之后,脸上的细节基本磨没了。换成半身图(脸放大到六分之一)再把脸的条件切到参考图,终于成了。

腿被拉长。 中间试了一版,clown 一眼就看出来了:下半身被拉长,画面整个变形。翻回去看参数才知道我选错了一个姿势源——有个选项自带「身材比例映射」,会把参考图的身高腿长硬套上去。换回纯骨架绘制那一档,比例就正常了。

显存爆了三回。 跑两百帧就 OOM,怎么降分辨率都没用。最后发现问题根本不在分辨率上,而在工作流的模型层换出只开了 4 层(模型共 40 层)——那个档位是给 48G 以上的卡配的。一次拧到 40 层,全长 380 多帧直接就过了,代价是慢(每层都要在显存和内存之间搬)。

表情还是木的。 这是唯一没解决的。我一度以为「表情没动」是自己看错了,后来把脸裁出来算了一遍:把嘴部和脸颊区域的帧间变化分别量出来做比值——原片是 24 倍(嘴在动、脸颊几乎不动),我这三版全是 1.0 倍(两边一样,等于纯抖动)。就是说脸上一动没动,全是生成噪点。脸的条件取自哪儿、权重给多大都试遍了,没用,估计是这套 4 步采样的锅(快是快,细活儿就抹平了)。留着以后啃。

出片之后才放大插帧:RealESRGAN 的动漫模型放大两倍,RIFE 插到 60fps。这一步也有个坑——帧在内存里是按全量摆的,一次性跑完能把机器吃爆,所以切成 5 段跑完再拼回去。音轨按要求直接不要了(原素材的声音,留着反而容易被判侵权)。

工作流与参数

这条线没有文本提示词(不用写词,动作由骨架给),把工作流和关键参数列出来:

工作流:06+animate动作迁移V9PLUS多参版(Wan2.2 Animate 14B fp8 + Uni3C + Lightning 4 步)
输入:参考图 1 张(半身)/ 驱动视频 1 条(12.73s 竖屏 30fps)

关键参数:
  frame_load_cap     382        取满整条驱动视频
  输出画幅           0.88 MP    对应 720×1280
  blocks_to_swap     40 层      默认只换 4 层 —— 5090 上这一个参数决定能不能跑完
  face_images 来源   参考图     默认取自驱动视频(脸会不像人)
  face_strength      2.5        默认 1.0
  姿势源             SDPose     默认 ViTPose(无面部关键点);不要选带比例映射那档
  采样               4 步 dpm++_sde, cfg 1

后处理:RealESRGAN_x4plus_anime_6B ×2 → RIFE 4.9 ×2 → 1440×2560 @60fps

生成参数:Wan2.2 Animate 14B(fp8)· 4 步 Lightning · BlockSwap 40 层 · 720×1280 @30fps 382 帧 → RealESRGAN anime ×2 + RIFE ×2 → 1440×2560 @60fps · 音轨剥离。