跳到主要内容

数字人 · 人像驱动

LivePortrait 本地部署:一张照片、一段驱动视频,24GB 卡绰绰有余

总计约 130M 参数、fp16 常驻不到 300MB 显存的隐式关键点框架,已经被快手、抖音、剪映、视频号搬到线上。在 NexGPU 上跑通它,起步价是每小时 $0.193。

LivePortrait 走的不是扩散路线。它继承 FOMM 一脉的隐式关键点(implicit keypoint)框架,用约 6900 万帧高质量数据做混合图像—视频训练,再补上一个 stitching 模块和两个 retargeting MLP,让眼睛、嘴巴可以单独控制,贴回原图时不露接缝。这个技术选型直接决定了它的成本曲线:官方 speed.py 在 RTX 4090 上开 torch.compile 实测,五个模块单帧前向分别是 0.82ms(外观特征提取)、0.84ms(运动提取)、7.59ms(SPADE 生成器)、5.21ms(warping 模块)、0.31ms(stitching 与两个 retargeting 头),加起来 14.77ms——换算成纯模型吞吐约 68 FPS。同期的扩散类口型模型,一帧要跑几十步去噪。

仓库这两年换过两次门牌。最早的 KwaiVGI/LivePortrait 现在会自动跳转到 github.com/KlingAIResearch/LivePortrait,权重则挂在 HuggingFace 的 KlingTeam/LivePortrait 仓库,整仓 2.14GB。代码是 MIT,但请注意 InsightFace 的人脸检测模型只授权非商用研究用途——这是自部署最容易踩的一条法律红线,而不是技术红线。模型层面最后一次实质更新是 2025 年 1 月 1 日的 Animals v1.1(数据加量,狗嘴不再被误判成鼻子,且已设为默认),之后的提交基本都是文档和链接维护。这不是弃坑,是一个已经被产品线直接使用、稳定到不需要再改的模型。

真正会拦住你的从来不是显存。是 Animals 模式那个必须现场编译的 X-Pose 自定义算子 MultiScaleDeformableAttention,是 requirements 里钉死的 numpy 1.26.4 / onnxruntime-gpu 1.18.0 / transformers 4.38.0,是必须在 PATH 里的 FFmpeg,是驱动视频得裁成 1:1、聚焦头部、首帧必须是中性表情的正脸,是 Windows 上 CUDA 12.4/12.6 已知会出怪问题所以官方建议降到 11.8。这些坑要么一次踩完,要么把本机环境搅成一锅粥。一台随手能开、跑坏了随手扔掉的干净 Linux GPU 实例,就是最省事的解法。

01 —

版本与模型变体:到底该下哪一份权重

HuggingFace 上 KlingTeam/LivePortrait 整仓 2.14GB,下面是每一份的真实体积和用途。

版本参数量显存上下文说明
LivePortrait Humans(liveportrait/base_models)约 130M(外观 0.84M + 运动 28.12M + warping 45.53M + SPADE 55.37M + 缝合/重定向 0.23M)fp32 权重 522MB,fp16 常驻约 261MB256×256 隐式关键点输入,source 最长边 ≤1280,默认输出 25fps / CRF 15 的 mp4默认模式,人像图和人像视频(v2v)都能驱动。Linux、Windows、macOS Apple Silicon 都跑得动,但苹果芯片大约比 RTX 4090 慢 20 倍。
LivePortrait Animals v1.1(2025/01/01 起默认启用)与 humans 同构约 130M,另需 xpose.pth 关键点检测四件套权重 520MB + xpose.pth 435MB同样 256×256 输入;只覆盖猫和狗训练数据加量版,猫的提升有限,狗改善明显——旧版会把狗嘴误判成鼻子。仅在 Linux/Windows + NVIDIA 上测试过,且强依赖 X-Pose 编译成功。
LivePortrait Animals 初版(base_models,无 _v1.1 后缀)同构约 130M权重 520MB同 v1.1想复现 2024 年 8 月那版效果,就把 src/config/inference_config.py 里的 version_animals 改回空字符串。两份权重在 HF 仓里同时存在。
Stitching & Retargeting 模块(stitching_retargeting_module.pth)0.23M,三个小 MLP 串联2.3MB三个头:stitching、eyes retargeting、lip retargeting全链路最便宜的部分,4090 上三个加起来 0.31ms,却决定了贴回原图不露缝、以及能不能单独驱动眼睛或嘴巴。注意 animals 模式目前直接复用 humans 这一份。
辅助模型:landmark.onnx + InsightFace buffalo_ldet_10g 检测 + 2d106det 关键点landmark.onnx 114.7MB、det_10g 16.9MB、2d106det 5.0MB走 onnxruntime-gpu 1.18.0 的 CUDA EP,与 PyTorch 主链路分开占显存授权红线在这里:LivePortrait 代码是 MIT,但 InsightFace 模型仅限非商用研究。要商用就换 MediaPipe 一类的检测器(kijai 的 ComfyUI 节点提供了这个开关)。
FasterLivePortrait(社区 TensorRT / ONNX 版)同一批权重转 ONNX 与 TRT engineengine 体积与原权重同量级RTX 3090 上实测 30+ FPS(含前后处理),支持摄像头实时、多脸同驱、音频驱动硬约束:TensorRT 必须 8.x(≥10.x 不兼容)、cuDNN 必须 8.x(9.x 不兼容),grid_sample 还要自编插件。想省事直接 docker pull shaoguo/faster_liveportrait:v3。

02 —

选卡建议:LivePortrait 吃的是算力,不是显存

fp16 权重不到 300MB,24GB 卡上你该算的是同时开几个 worker,而不是装不装得下。

  • 第一次跑通 humans 模式、用 Gradio 反复调表情与姿态

    RTX 3090 24GB$0.193/卡·时

    Ampere sm_86 正落在仓库验证过的 CUDA 11.8 / 12.1 + torch 2.3 组合里,24GB 显存对这个模型是极大富余,赢在每美元帧数最高。

  • TensorRT 实时管线,追 25fps 以上的交互或直播输出

    RTX 4090 24GB$0.540/卡·时

    单帧 14.77ms 里有 12.8ms 花在 SPADE 生成器和 warping 模块上,Ada 的 FP16 吞吐正好压这两块;配 FasterLivePortrait 的 TRT engine 才有余量同时跑多路。

  • 7×24 常驻的批量出片 API 服务

    A10 24GB$0.414/卡·时

    数据中心卡被动散热、长时间满载不掉频;24GB 可以并排开 8 到 10 个 worker 进程,每个约 2GB(fp16 权重 + 独立 CUDA 上下文 + onnxruntime 显存池)。

  • 把几十路并发合并进一张卡的渲染农场

    A100 PCIE 80GB$0.824/卡·时

    80GB 装得下几十个独立 CUDA 上下文,HBM 带宽对 warping 里密集的 grid_sample 也友好;但只有真把卡压满才划算,跑不满时多租几张 3090 反而更便宜。

03 —

从租卡到出第一条视频:四步

在 NexGPU 的 PyTorch 预置镜像上 SSH 进去,下面几行就是完整流程。

  1. 01

    开一台干净的 Linux 实例,装 Python 3.10 与 torch 2.3

    仓库把依赖钉得很死:numpy 1.26.4、onnxruntime-gpu 1.18.0、transformers 4.38.0、gradio 5.1.0,千万别让 pip 顺手升到 numpy 2.x。另外 FFmpeg 必须在 PATH 里,inference.py 启动时会先检查它,缺了就直接退出。

    conda create -n LivePortrait python=3.10 -y && conda activate LivePortrait && pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121 && pip install -r requirements.txt
  2. 02

    拉 2.14GB 权重

    官方权重在 HuggingFace 的 KlingTeam/LivePortrait。国内节点直连慢就换 hf-mirror 端点。下完确认目录结构是 pretrained_weights/liveportrait、liveportrait_animals、insightface 三份;只做人像可以不下 animals,能省下 435MB 的 xpose.pth。

    export HF_ENDPOINT=https://hf-mirror.com && huggingface-cli download KlingTeam/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"
  3. 03

    出第一条视频,顺手把驱动视频裁对

    驱动视频强烈建议 1:1(512×512 或 256×256)、聚焦头部、肩膀别晃,首帧必须是中性表情的正脸,否则相对运动的基准就歪了。裁不好就加 --flag_crop_driving_video,再用 --scale_crop_driving_video、--vy_ratio_crop_driving_video 微调。--animation_region 可以只驱动 exp / pose / lip / eyes 其中一路。把驱动视频先转成 .pkl 运动模板,既提速又避免把真人原片留在盘上。

    python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d0.mp4 --flag_crop_driving_video
  4. 04

    开 Animals 模式,并把速度再榨 20~30%

    猫狗模式要先现场编译 X-Pose 的 MultiScaleDeformableAttention 算子,nvcc 版本必须和 torch 编译时的 CUDA 对得上,这是自部署失败率最高的一步。跑通后再加 --flag_do_torch_compile:首次推理触发约一分钟的编译,之后快 20~30%,仅 Linux 支持。

    cd src/utils/dependencies/XPose/models/UniPose/ops && python setup.py build install && cd - && python inference_animals.py -s assets/examples/source/s39.jpg -d assets/examples/driving/wink.pkl --driving_multiplier 1.75 --no_flag_stitching

算笔账:1000 条 15 秒口型视频要花多少钱

一条 15 秒、25fps 的成片是 375 帧。FasterLivePortrait 的 TensorRT 管线在 RTX 3090 上实测 30+ FPS(这个数字已经含前后处理),375 ÷ 30 ≈ 12.5 秒;再算上人脸检测、裁剪和 ffmpeg 编码,保守按一条 20 秒。NexGPU 的 RTX 3090 24GB 是 $0.193/卡·时,一小时能出 3600 ÷ 20 = 180 条,摊到单条 $0.193 ÷ 180 ≈ $0.0011——1000 条约 $1.07。存储另算:整仓权重 2.14GB,按 $0.414/GB·月 的中位价常驻一个月是 $0.89;只留 humans 那套(522MB 权重 + 114.7MB landmark + 22MB 检测模型 ≈ 0.66GB)则是 $0.27。成片按每条 3MB 估,1000 条 3GB 出网 × $0.0081/GB ≈ $0.024。计费按秒走、按小时定价,没有起租量也没有开通费;实例一停算力费就不再计,只有存储会一直计到你销毁它为止。

04 —

常见问题

LivePortrait 本地部署到底需要多大显存?

把账摊开算:fp32 权重 522MB,开默认的半精度后常驻约 261MB;landmark.onnx 114.7MB 和 InsightFace 的两个检测模型 22MB 走 onnxruntime 的显存池;再加 CUDA 上下文和 256×256 的激活,单路推理 4GB 显存绰绰有余。所以它从来不是显存受限的模型——你要考虑的是并发路数和出片速度。NexGPU 上 RTX 3090 24GB $0.193/卡·时,租一张就能开满并发,跑完停机按秒结算。

LivePortrait 改名了吗?现在还在更新吗?

原来的 KwaiVGI/LivePortrait 已经迁到 github.com/KlingAIResearch/LivePortrait,中间还挂过 KlingTeam 这块牌子,旧链接都会自动跳转;权重仓在 HuggingFace 上仍叫 KlingTeam/LivePortrait。模型层面最后一次实质更新是 2025 年 1 月 1 日的 Animals v1.1,此后基本是文档与链接维护。官方自述它已经是快手、抖音、剪映、视频号在用的人像驱动方案——稳定,不是停更。想在自己的机器上验证效果,NexGPU 开一台 3090 十分钟就能跑出第一条。

LivePortrait 可以商用吗?

代码是 MIT,可以。卡在模型上:默认走的 InsightFace buffalo_l 检测模型(det_10g.onnx 与 2d106det.onnx)明确只授权非商用研究用途。要商用就得把检测环节换掉,社区常见做法是改用 Apache-2.0 的 MediaPipe(kijai 的 ComfyUI-LivePortraitKJ 提供了现成开关),代价是小脸检测精度略降。这类替换要反复对比效果,正适合在按秒计费的实例上开两套环境并排跑。

为什么我实际跑出来远慢于论文说的 12.8ms?

因为那是纯模型前向的口径。官方 speed.py 在 4090 上分模块实测是 0.82 + 0.84 + 7.59 + 5.21 + 0.31 = 14.77ms,同样不含人脸检测、裁剪对齐、贴回原图和 ffmpeg 编码。端到端能拿到的参考值是 FasterLivePortrait 在 RTX 3090 上的 30+ FPS(含前后处理)。提速三板斧:预生成 .pkl 运动模板、Linux 上开 --flag_do_torch_compile、上 TensorRT。三条路都值得在 NexGPU 的 4090($0.540/卡·时)上先量一遍再决定长期用哪张卡。

RTX 5090 能跑 LivePortrait 吗?

能,但别指望照抄仓库的安装步骤。Blackwell 是 sm_120,需要 CUDA 12.8 及以上和 torch 2.7+ 的官方轮子,而仓库钉的是 torch 2.3 + onnxruntime-gpu 1.18,FasterLivePortrait 又要求 TensorRT 8.x、cuDNN 8.x——整条依赖链都得自己往上抬,numpy 1.26.4 的钉版也会跟着松动。除非你就是要做这件事,否则 3090($0.193)、4090($0.540)、A10($0.414)都是更省心的选择。NexGPU 这几张卡都能按秒开,试错成本几乎为零。

Animals 模式装不上、MultiScaleDeformableAttention 编译失败怎么办?

这是 X-Pose 的 CUDA 自定义算子,编译要求 nvcc 版本和 torch 编译时的 CUDA 版本一致,先 nvcc -V 对一遍再装对应的 torch 轮子。官方还专门提醒:Windows 上 CUDA 12.4、12.6 等较高版本会出未知问题,建议降到 11.8;macOS 因为 X-Pose 不支持,animals 模式直接跑不了。在一台干净的 Linux 实例上从零装是命中率最高的做法,NexGPU 的 Ubuntu / PyTorch 预置镜像自带 nvcc,编坏了销毁重开就是。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。