LivePortrait 输出视频出现黑框,如何通过关闭半精度推理解决?
【免费下载链接】LivePortraitBring portraits to life!项目地址: https://gitcode.com/GitHub_Trending/li/LivePortrait
用 LivePortrait 跑人像动画推理(命令行inference.py或 Gradio 界面app.py)时,正常结果是在animations/目录下生成一个 mp4 文件,视频内容依次包含驱动视频、输入图像或视频以及生成结果。如果在生成视频中出现黑框(black box),官方文档给出的处理方式是:关闭默认开启的半精度(FP16)推理,在命令中加上--no_flag_use_half_precision参数重新运行。本文只针对这一个现象,给出判断依据、修改方法和验证方式。
先确认现象与参数:黑框和半精度开关的关系
在动手之前,先确认你的问题属于文档描述的情形:
现象:正常推理跑完了,但输出视频中出现黑色方块/黑框区域,而不是人脸内容。
对应参数:LivePortrait 的推理参数
flag_use_half_precision默认为True,即默认使用 FP16 半精度推理。该参数在 src/config/argument_config.py 中的注释写明了黑框的处理方式:flag_use_half_precision: bool = True # whether to use half precision (FP16). If black boxes appear, it might be due to GPU incompatibility; set to False.也就是说,文档把黑框归因为可能与 GPU 对半精度的兼容性有关,解决办法是把该值设为
False。出处:这条修复建议在 assets/docs/changelog/2024-07-10.md 的 "Others" 一节中明确记录(原文:If you encounter a black box problem, disable half-precision inference by using
--no_flag_use_half_precision),并关联了社区 issue #40、#48、#62。
如果黑框并非由推理产生(例如输入文件本身就有黑边),则不属于本文范围。
前提:确认推理环境可用
如果你还没有成功跑过一次推理,需要先完成项目 readme 中的环境准备:
- 系统已安装
git、conda、FFmpeg; - 用 conda 创建 Python 3.10 环境并安装依赖:
conda create -n LivePortrait python=3.10 conda activate LivePortrait pip install -r requirements.txt- 预训练权重已下载到
./pretrained_weights目录,目录结构参考 assets/docs/directory-structure.md:
huggingface-cli download KlingTeam/LivePortrait --local-dir pretrained_weights --exclude "*.git*" "README.md" "docs"环境就绪的标志是:不带任何额外参数执行python inference.py能正常跑完并生成输出视频。
关闭半精度重新运行
主路径是命令行推理。在你原来的命令后追加--no_flag_use_half_precision即可,例如使用仓库自带示例:
python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d0.mp4 --no_flag_use_half_precision其中-s指定源图像或视频,-d指定驱动视频或.pkl动作模板;换成你自己的输入时,只需保持这两个路径有效并在末尾保留--no_flag_use_half_precision。
如果你是通过 Gradio 界面使用,app.py解析的是同一套ArgumentConfig,参数同样适用,启动命令改为:
python app.py --no_flag_use_half_precision注意这个参数要放在启动app.py时传入,而不是在网页界面里设置;传参后可以照常使用--server_port、--share、--server_name等其他 Gradio 参数。
验证结果
脚本成功运行后,会在animations/目录生成输出 mp4,文件内容包含驱动视频、输入图像或视频和生成结果三部分(readme 中给出的示例文件名为animations/s6--d0_concat.mp4;当前 ArgumentConfig 的默认源输入是assets/examples/source/s0.jpg,所以实际文件名取决于你传入的-s和-d)。
验证方式就是查看这个 mp4:如果之前的黑框不再出现,说明问题已通过关闭半精度解决。
限制与后续
- 文档只说明
--no_flag_use_half_precision用于解决 black box 问题,没有列出具体受影响的 GPU 型号,也没有说明关闭半精度对推理速度的影响,因此不要据此推断性能变化。 - 不确定某个参数名或选项时,用
python inference.py -h查看全部可用参数。 - 如果关闭半精度后黑框仍然存在,说明该现象不属于文档记录的这一情形,需要另行排查输入素材或环境问题。
【免费下载链接】LivePortraitBring portraits to life!项目地址: https://gitcode.com/GitHub_Trending/li/LivePortrait
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考