20 个运动维度逐个可视化:LIA linear_manipulation.py 线性操控实操,看单张图片如何产生表情与姿态

📅 2026/8/23 11:49:06
20 个运动维度逐个可视化:LIA linear_manipulation.py 线性操控实操,看单张图片如何产生表情与姿态
20 个运动维度逐个可视化LIA linear_manipulation.py 线性操控实操看单张图片如何产生表情与姿态【免费下载链接】LIA[ICLR 22, TPAMI 24] LIA: Latent Image Animator项目地址: https://gitcode.com/gh_mirrors/li/LIALIALatent Image Animator是一个无需驱动视频、无需姿态估计仅靠潜空间线性导航就能让静态图片动起来ICLR 2022 / TPAMI 2024的自监督图像动画模型。本文以 linear_manipulation.py 为入口用 3 步完成 LIA 线性操控实操输入一张图片自动生成 20 个小视频逐个可视化 20 个运动维度直观看到静态肖像如何在潜码线性位移下产生表情与姿态变化。一、为什么线性操控能让一张图动起来 主流动画方法需要驱动视频和姿态估计网络LIA 走了另一条路——它是一个自监督自编码器组件文件职责外观/运动编码器networks/encoder.py把图片压缩成 512 维外观码wa和20 维运动码h_motion生成器networks/generator.py学习一组互相正交的运动方向把潜码的线性组合渲染成图像关键在 encoder.py 中的设计运动码只有 20 维latent_dim_motion20训练后每一维对应一个学到的正交运动方向生成视频中的运动 对 20 维潜码做线性位移全程不需要任何结构表示所以让单张图片动起来只需沿某一个维度移动潜码——这正是 linear_manipulation.py 做的事情。二、LIA 线性操控快速上手三步跑通 第 1 步获取代码与环境git clone https://gitcode.com/gh_mirrors/li/LIA cd LIA按 README.md 要求环境需要 Python 3.7、PyTorch 1.5以及 tensorboard、moviepy、av、tqdm、lpips 等依赖。第 2 步放置预训练模型权重将预训练权重放入checkpoints/目录三个数据集对应vox.pt、taichi.pt、ted.pt与 linear_manipulation.py 中的模型路径选择逻辑一致权重下载说明见 README.md。第 3 步运行线性操控命令python linear_manipulation.py --model vox --img_path ./data/vox/macron.png --save_folder ./res_manipulation结果写入./res_manipulation/vox/macron/目录名 数据集 图片名共20 个视频00.mp4~19.mp4每个对应一个运动维度。仓库在./data/vox/、./data/taichi/、./data/ted/下自带多张演示肖像可直接替换--img_path使用。三、1 个维度 1 个视频是怎么生成的参数速查 linear_manipulation.py 的核心逻辑是对 20 个运动维度逐一做实验——把该维系数alpha从-degree扫到degree默认 16 帧其余 19 维保持为 0把生成帧拼成一个视频for i in range(args.latent_dim_motion): # 20 个运动维度 for j in range(args.range): # 每维度 16 帧 delta -args.degree j * (2 * args.degree / args.range) alpha[:, i] delta # 只位移第 i 个维度 img_recon self.gen.synthesis(wa, [h_start, alpha, alpha_zero], feat)主要参数与默认值见 linear_manipulation.py参数默认值含义--model-数据集模型vox/taichi/ted--img_path-单张源图片路径--latent_dim_motion20运动维度数正交运动方向数--degree3.0每维位移幅度从 -3 扫到 3--range16每个维度视频的帧数--save_fps10输出视频帧率--save_folder./res_manipulation结果保存根目录 位移的起点是源图片自身的运动码h_start见 linear_manipulation.py。当delta0时生成帧约等于原图所以每个视频的中间帧 ≈ 原图两端则是沿该方向偏离去原图的两种状态。四、如何看懂这 20 个运动维度视频 00.mp4~19.mp4对应 20 个正交运动方向播放时人脸会从一个极端状态平滑过渡到相反状态从真实数据学出的运动方向各有表现有的维度主要控制表情微笑、皱眉、口型有的主要控制头部姿态转头、侧倾不同数据集的占比不同用每个视频的中间帧与原图对比就能量化沿该方向 ±3 位移时图像到底变了什么想看驱动视频动画单张图片的常规效果可运行 run_demo.py 对照结果保存在./res/目录需要定量评估时用 evaluation.py 输出重建与 LPIPS 指标。五、相关文件与延伸 文件作用run_demo.py驱动视频动画演示结果在 ./res/evaluation.py重建 / LPIPS 评估linear_manipulation.py单图 20 维线性操控本文主角networks/encoder.py、networks/generator.py、networks/styledecoder.py编码器 / 生成器 / 风格解码器网络定义dataset.py数据集加载cog.yaml一键在线推理的部署配置LICENSE.md许可协议代码供非商业研究评估使用LIA 的潜运动操控思路已被多个后续工作扩展README.md 中列出了 EDTalkECCV25、FLOATICCV25、FixTalkICCV25等基于 LIA 的项目可进一步参考。LIA 由 Inria 与蔚蓝海岸大学UCA团队联合完成常见疑问权重从哪里获取按 README.md 给出的地址下载预训练 checkpoint放入checkpoints/即可为什么正好生成 20 个视频因为--latent_dim_motion默认 20每个维度输出一个视频改动维度数需匹配相应 checkpoint需要显卡吗需要。代码中直接使用.cuda()见 linear_manipulation.py需 CUDA 环境。【免费下载链接】LIA[ICLR 22, TPAMI 24] LIA: Latent Image Animator项目地址: https://gitcode.com/gh_mirrors/li/LIA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考