拓冰建站拓冰建站
首页 / 资讯中心 / 正文

如何调整 LivePortrait 的 det_thresh 人脸检测阈值提高检出率?

如何调整 LivePortrait 的 det_thresh 人脸检测阈值提高检出率【免费下载链接】LivePortraitBring portraits to life!项目地址: https://gitcode.com/GitHub_Trending/li/LivePortrait用 LivePortrait 驱动一张人像时如果源图像或源视频里的人脸没被检测模型抓出来整条动画流程会直接失败源图像检测不到人脸会抛出No face detected in the source image!源视频检测不到则会记录No face detected in the frame #0并跳过该帧。LivePortrait 提供了--det_thresh命令行参数来控制人脸检测的阈值把它的值调低可以提高检出率recall让猴子、类人形象等更多类型的人脸也能被检测出来。本文介绍如何根据 changelog 的说明调整这个参数并验证检测结果。det_thresh 在流程中的作用位置det_thresh属于 source crop源图像/视频裁剪参数定义在 argument_config.py 中默认值为0.15det_thresh: float 0.15 # detection threshold它的传递路径在代码中是明确的入口脚本inference.py、app.py用tyro.cli(ArgumentConfig)解析命令行参数partial_fields(CropConfig, args.__dict__)把ArgumentConfig里的det_thresh值写入 crop_config.py 定义的CropConfigcropper.py 在初始化人脸分析模型时传入该值self.face_analysis_wrapper.prepare(ctx_iddevice_id, det_size(512, 512), det_threshself.crop_cfg.det_thresh)也就是说det_thresh直接作为人脸检测模型的判定阈值生效检测尺寸固定为512x512。阈值越低越多低置信度的候选脸会被保留检出率越高。调整 det_thresh命令行推理inference.py按 readme 完成环境准备clone 代码、安装依赖、下载 pretrained weights后直接运行推理并附加--det_thresh参数。以仓库自带的示例图像为例# 使用默认阈值 0.15 python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d0.mp4 # 检出率不足时调低阈值 python inference.py -s assets/examples/source/s9.jpg -d assets/examples/driving/d0.mp4 --det_thresh 0.05如果源输入是视频同样适用python inference.py -s assets/examples/source/s13.mp4 -d assets/examples/driving/d0.mp4 --det_thresh 0.05不确定当前支持哪些参数时可以用帮助命令查看python inference.py -hGradio 界面app.pyGradio 界面没有提供det_thresh滑块需要在启动命令中指定。changelog 给出的示例就是这种方式python app.py --det_thresh 0.5参数值在服务器启动时生效修改后需要重新启动app.py才会应用新阈值。验证检测结果判断阈值是否合适的依据是运行日志与输出文件成功人脸被检测到流程继续走完动画生成。输出目录默认animations/下会生成结果文件例如animations/s9--d0_concat.mp4driving 视频、输入、生成结果的拼接日志中会打印Animated video: ...与Animated video with concat: ...。未检出源图像日志出现No face detected in the source image.随后抛出异常No face detected in the source image!流程终止。此时应降低det_thresh后重试。未检出源视频第一帧检测不到时日志记录No face detected in the frame #0并continue尝试后续帧如果始终检测不到裁剪结果为空帧数会受到影响。检测到多张脸日志会提示More than one face detected in the source image, only pick one face by rule large-small.当前实现按direction规则默认large-small即较大的脸只选取一张代码中也有注释说明多脸支持是 TODO。如果检测到了人脸但裁剪区域不合适人脸偏大或偏小那是scale、vx_ratio、vy_ratio等裁剪参数的事与det_thresh无关不要混淆。限制与说明只影响 Humans 模式。Animals 模式inference_animals.py/app_animals.py的脸部关键点检测走 X-Pose 路径不使用det_thresh。适用方向以 changelog 为准。官方说明是降低默认阈值以提高 recallmore types of faces will be detected0.5只是 changelog 中展示的可设置值示例不是推荐值方向上应朝更低取值调整文档未给出最低有效值需按实际素材逐个尝试。两处默认值不同属正常现象。crop_config.py 中CropConfig.det_thresh的类定义默认值是0.1但运行时该字段会被ArgumentConfig的值默认0.15覆盖实际生效的是命令行参数或0.15。人脸检测发生在裁剪之前det_thresh不会改变最终 256x256 的网络输入尺寸只决定能不能检测到脸、用哪张脸。下一步det_thresh之外changelog 同一次更新还支持在 Gradio 界面里通过relative pitch、relative yaw、relative roll调整源人像姿态如果检出问题解决后动画幅度不合意可再参考 readme 中--driving_multiplier、--flag_crop_driving_video等参数调整驱动效果。【免费下载链接】LivePortraitBring portraits to life!项目地址: https://gitcode.com/GitHub_Trending/li/LivePortrait创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门