尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MediaPipe FaceLandmarker 该不该换?老 FaceMesh 代码三步跑通新 API

MediaPipe FaceLandmarker 该不该换?老 FaceMesh 代码三步跑通新 API MediaPipe FaceLandmarker 该不该换老 FaceMesh 代码三步跑通新 API【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe 先说结论如果你的项目还在用 legacy 的 FaceMesh并且需要 blendshapes 或面部姿态矩阵这类 FaceMesh 给不了的新输出就值得迁到 MediaPipe FaceLandmarker如果现有链路够用、没有新功能诉求观望也完全成立。面部关键点拓扑两边都是 468 点迁移不会推翻你现有的渲染层。三个问题对号入座判断你该不该动手1. 你的代码还停在mp.solutions.face_mesh吗仓库里 docs/solutions/face_mesh.md 顶部已注明该方案自 2023 年 5 月 10 日起升级为新的 MediaPipe Solution老 API 归入 legacy solutions新功能不再往里加。还在老路径上的项目迁不迁本质上是要不要停止接受新能力的选择。2. 你的目标设备在什么档位做表情捕捉、虚拟形象的人通常跑移动端或桌面端。官方没有给 FaceLandmarker 分档位的耗时数字仓库里查不到统一口径。任务侧 C、Java、iOS、Web 端都已有对应实现端上落地前建议在自己的真机基准上测一轮而不是引用博客里的二手数字。3. 你的功能清单里有没有表情参数FaceLandmarkerOptions里有output_face_blendshapes开关。虚拟形象驱动表情、AR 试妆要读取眉眼嘴鼻动作强度时这个开关就是迁移的核心收益只要 468 点画轮廓收益就没那么直接。最小改动跑通新 API老写法改三处老写法长这样with mp.solutions.face_mesh.FaceMesh(refine_landmarksTrue) as fm: result fm.process(rgb_image) points result.multi_face_landmarks[0]新写法最小可跑路径from mediapipe.tasks import python from mediapipe.tasks.python import vision opts vision.FaceLandmarkerOptions( base_optionspython.BaseOptions(model_asset_pathface_landmarker.task), running_modevision.RunningMode.VIDEO) with vision.FaceLandmarker.create_from_options(opts) as lm: r lm.detect_for_video(mp_image, timestamp_ms)实际只改三处模型来源变了。老方案模型随 pip 包内置新 API 需要一个.task文件路径写在BaseOptions.model_asset_path里。仓库自带的测试模型在 mediapipe/tasks/testdata/vision/有face_landmarker_v2.task和face_landmarker_v2_with_blendshapes.task两种。调用方式和参数变了。process()换成detect_for_video()多传一个毫秒级timestamp_ms。视频模式下时间戳是接口要求不是可选项。输出结构变了。从multi_face_landmarks的列表取点变成读result.face_landmarks开了 blendshapes 后result.face_blendshapes里是 52 个系数索引名直接看源码里的Blendshapes枚举如MOUTH_SMILE_LEFT比按 0~467 下标取点可读得多。收益和代价分开算收益。468 点拓扑不变现有绘制和网格代码原样复用。新增输出是实打实的新能力52 个 blendshapes 系数见 mediapipe/tasks/python/vision/face_landmarker.py 里的Blendshapes枚举和output_facial_transformation_matrixes输出的姿态矩阵表情驱动和 AR 贴脸都能少写一层中间逻辑。至于精度、速度、内存提升多少仓库里没有统一口径别拿别人的基准数字当立项依据自测最稳。代价。模型文件要自己管.task得随应用分发或运行时下载仓库测试数据里有不带 blendshapes 的face_landmarker_v2.task和带 blendshapes 的face_landmarker_v2_with_blendshapes.task功能用得到就选后者。依赖引入方式也变了老方案 pip 装完mediapipe直接可用tasks API 下还要把model_asset_path指到一个真实存在的文件部署脚本里多一个环节。两个最容易踩的坑时间戳不递增直接报错。detect_for_video要求相邻调用的timestamp_ms单调递增回灌视频时乱序喂帧会抛ValueError。用帧序号乘帧间隔生成时间戳最省事。blendshapes 和姿态矩阵默认都是关的。output_face_blendshapes、output_facial_transformation_matrixes两个开关默认False而且 blendshapes 要配with_blendshapes那份模型拿普通face_landmarker_v2.task开这个开关拿不到合法结果。延伸看这几处仓库内容FaceLandmarker 的 Python 实现mediapipe/tasks/python/vision/face_landmarker.py仓库自带的用法测试mediapipe/tasks/python/test/vision/face_landmarker_test.py官方模型文件mediapipe/tasks/testdata/vision/legacy FaceMesh 的说明含 468 点输出定义docs/solutions/face_mesh.md【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表