ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

MediaPipe 使用指南:5分钟跑通人脸检测、手势与姿态跟踪,并平滑上线

MediaPipe 使用指南:5分钟跑通人脸检测、手势与姿态跟踪,并平滑上线 MediaPipe 使用指南5分钟跑通人脸检测、手势与姿态跟踪并平滑上线【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe给视频通话做「自动取景 背景虚化 手势控制」或给零售/安防做「人、物、手」的实时识别绕不开一个问题模型推理能不能跑在端侧、够不够快、能不能跨平台复用同一套逻辑。MediaPipe 就是为这类实时媒体处理设计的跨平台机器学习框架——它把人脸检测、手部关键点、人体姿态、目标检测等能力封装成可即插即用的组件同一套管线可以部署到 Android、iOS、桌面、Web 和边缘设备。这篇文章不罗列 API 字段而是按「先判断要不要用 → 建全貌 → 跑通 → 按需取用 → 调对参数 → 上生产」的顺序带你落地。先判断MediaPipe 适合你的场景吗一句话说清定位MediaPipe 是端侧、实时、可组合的感知管线框架输入图像/视频/音频输出关键点、检测框、分割掩码等结构化结果。判断要不要用看这几点维度适合 MediaPipe不适合 / 需另选推理位置端侧/本地数据不出设备隐私敏感场景必须用云端大模型、追求极致精度实时性摄像头/视频流逐帧出结果离线批处理、单次高精度标注平台同一管线要覆盖 Android/iOS/桌面/Web/边缘单一平台、且已有更成熟专用库任务人脸/手/姿态/目标/分割等感知任务复杂语义理解、生成式任务定制接受「预训练模型 少量调参」或需自己微调需要从零训一个全新任务族一个常被忽略的优势Tasks 版 API 的推理在设备本地完成输入数据不会上传天然适合隐私合规要求高的产品人脸、摄像头数据。能力版图一张表看清覆盖哪些任务与平台MediaPipe 当前推荐用Tasks这套 APImediapipe.tasks它覆盖视觉、文本、音频三大类任务。仓库里同时保留了旧版Legacy Solutionsmp.solutions2023 年起部分已停止更新新代码建议走 Tasks老代码可继续用。视觉任务mediapipe/tasks/python/vision/核心能力一览任务对应 Task 类典型输出适用场景人脸检测FaceDetector人脸框 6 关键点取景、活体前置判断人脸网格FaceLandmarker468 个 3D 面部点表情、换脸、AR手部检测/跟踪HandDetector/HandLandmarker21 关键点 手性手势交互手势识别GestureRecognizer手势类别指令控制人体姿态PoseLandmarker33 关键点 分割掩码健身、会议、动作识别全身姿态HolisticLandmarker脸手姿态同时数字人、舞蹈目标检测ObjectDetector物体框 类别安防、零售图像分割ImageSegmenter/InteractiveSegmenter像素级掩码抠图、背景虚化图像分类/嵌入ImageClassifier/ImageEmbedder类别 / 向量内容理解平台与语言覆盖Pythonpip install mediapipe预编译 wheel最快上手也可用mp.solutions旧接口。Android / iOS预构建 AAR/Pod或用 Bazel 把自定义 Calculator 打进包。WebTasks 提供 TS 实现mediapipe/tasks/web/浏览器内 WASM 推理。C / Cmediapipe/tasks/cc/、mediapipe/tasks/c/是底层核心其他语言绑定都基于它。Coral 边缘设备仓库提供专门的mediapipe/examples/coral/示例说明它确实下探到 IoT。两套接口并存是历史原因。判断标准很简单新写代码用 Tasks维护老代码用 Solutions两者都能pip install mediapipe后用。5分钟跑通第一个示例目标只有一个装好、能 import、跑出一张图的人脸检测。不追求讲全。安装Linux/macOS/Windows 都有预编译 wheel不必自己编译python -m venv mp_env source mp_env/bin/activate pip install mediapipe opencv-python下面这段用新版 Tasks 的FaceDetector对单张图片做检测。关注两个点模型文件路径blaze_face_short_range.tflite短距模型2 米内人脸最准以及min_detection_confidence这个置信度门槛。import mediapipe as mp base mp.tasks.BaseOptions(model_asset_pathblaze_face_short_range.tflite) opts mp.tasks.vision.FaceDetectorOptions( base_optionsbase, running_modemp.tasks.vision.RunningMode.IMAGE, min_detection_confidence0.5) with mp.tasks.vision.FaceDetector.create_from_options(opts) as det: img mp.Image.create_from_file(photo.jpg) # 输入 RGB 图片 res det.detect(img) for d in res.detections: b d.bounding_box print(f置信度 {d.categories[0].score:.2f} 框 (x,y,w,h)({b.origin_x},{b.origin_y},{b.width},{b.height}))跑通后你会看到每个人脸的置信度和边界框。如果要处理摄像头视频流把running_mode换成VIDEO逐帧调用detect_for_video(image, timestamp_ms)即可框架会用上一帧结果加速后续帧。按需取用核心能力下面每张「能力卡」只回答三件事什么时候用它、怎么调、关键参数是什么。模型文件统一从 MediaPipe 官方模型资产下载路径写进BaseOptions.model_asset_path。人脸检测定位 6 个关键点何时用需要先知道「有没有人脸、在哪」再决定要不要上更贵的网格/跟踪模型。适合做取景框、镜头切换的前置判断。opts mp.tasks.vision.FaceDetectorOptions( base_optionsmp.tasks.BaseOptions(model_asset_pathblaze_face_short_range.tflite), min_detection_confidence0.5, min_suppression_threshold0.3) # 重叠框抑制阈值多人脸时防重复关键参数min_detection_confidence决定「多确定才算一张脸」min_suppression_threshold越小越容易保留靠得很近的重复框。短距模型short_range适合自拍/会议全距模型full_range适合 5 米内。手部跟踪与手势识别21 个关键点 手性何时用做手势交互比划触发指令、手语、捏合/张开等精细操作。HandLandmarker输出 21 个 3D 关键点并判断左右手GestureRecognizer直接输出「石头/剪刀/布/数字」等类别省掉你自己写规则。opts mp.tasks.vision.HandLandmarkerOptions( base_optionsmp.tasks.BaseOptions(model_asset_pathhand_landmarker.task), num_hands2, # 最多跟踪几只手 min_hand_detection_confidence0.5) with mp.tasks.vision.HandLandmarker.create_from_options(opts) as lm: res lm.detect(mp.Image.create_from_file(hand.jpg)) print(res.handedness[0][0].category_name) # Left / Right关键参数num_hands限制手数量省算力视频场景下框架会自动做逐帧跟踪比逐帧独立检测更稳。人体姿态估计33 个关键点 可选分割何时用健身动作计数、会议自动取景、体态分析。PoseLandmarker输出 33 个全身点开output_segmentation_masksTrue还能拿到身体分割掩码直接做背景虚化。opts mp.tasks.vision.PoseLandmarkerOptions( base_optionsmp.tasks.BaseOptions(model_asset_pathpose_landmarker_heavy.task), num_poses1, min_pose_detection_confidence0.5) with mp.tasks.vision.PoseLandmarker.create_from_options(opts) as lm: res lm.detect(mp.Image.create_from_file(person.jpg)) print(len(res.pose_landmarks), 个人每人 33 关键点)关键参数模型分 lite/base/heavy 三档heavy最准最慢num_poses决定同时识别人数。目标检测通用物体框 类别何时用安防、零售、内容审核等「认物」场景。内置 EfficientDet 系列开箱识别 COCO 常见类别也支持按类别名过滤。opts mp.tasks.vision.ObjectDetectorOptions( base_optionsmp.tasks.BaseOptions(model_asset_pathefficientdet_lite0.tflite), score_threshold0.5, max_results10) with mp.tasks.vision.ObjectDetector.create_from_options(opts) as det: for d in det.detect(mp.Image.create_from_file(street.jpg)).detections: print(d.categories[0].category_name, f{d.categories[0].score:.2f})关键参数score_threshold是置信度门槛max_results限制最多返回多少个框还能用category_allowlist/category_denylist只关心特定类别。参数怎么调才对一张决策表参数不是越大越好而是「拿精度换速度」的旋钮。按场景对号入座参数调大/调小的代价该调大的场景该调小的场景min_detection_confidence调大→漏检少但更挑调小→召回高但误检多宁可错杀、要稳的交互手势控制追求全召回安防清点人数model_complexity/ 模型档位(lite/heavy)越高越准越慢离线/桌面、精度优先低端机、要保帧率max_results/num_hands/num_poses越大越全面越吃算力多人/双手/多目标单人单机、省电min_suppression_threshold越小越容易保留重叠框密集人群防漏单人防重复框输入分辨率越大越准越慢小目标、远距离实时视频流建议降到 640 宽delegate(GPU/CPU)GPU 快但平台受限桌面/有 GPU 的环境移动端或无 GPU 环境两条通用经验保帧率优先时先降输入分辨率、再降模型档位比一味抬min_detection_confidence更有效。视频流一定要用VIDEO/LIVE_STREAM运行模式让框架复用上一帧做跟踪逐帧当新图处理会明显更慢且抖。从 Demo 到上线跨平台、性能与常见坑跨平台部署取舍Python最快验证pip install mediapipe即可适合原型和服务端离线批处理。Android/iOS用预构建包AAR/Pod最快要加自定义逻辑时用 Bazel 构建把自定义 Calculator 打进图里。仓库自带build_android_examples.sh、build_ios_examples.sh、build_desktop_examples.sh三个脚本。Web走mediapipe/tasks/web/浏览器内 WASM 推理注意模型体积与首屏加载。边缘(Coral)mediapipe/examples/coral/给了可参考的部署路径适合低功耗、无显示设备。同一套图配置Graph在 C/Python 间是可复用的这是它跨平台省事的根本写一次管线多端跑。常见坑与排查现象多半原因处理检测全空/漏检图片不是 RGB、分辨率太低、置信度太高确认BGR→RGB抬高输入分辨率降min_detection_confidence视频抖动/闪烁逐帧当独立图处理改用detect_for_video并传入递增时间戳移动端卡顿用了 heavy 模型 原图分辨率降档位、降到 640 宽、开 delegateGPU(如支持)模型加载失败model_asset_path路径/文件名不对核对文件存在与扩展名.tflite/.task多人只出一个人num_poses/num_hands默认 1按需调大数量上限一个容易踩的点旧版mp.solutions的process()吃 numpy 数组且要求三通道 RGB而 Tasks 的mp.Image.create_from_file内部会处理像素格式——两套别混着写。老教程用 Solutions新代码用 Tasks选一条走到底。延伸资源旧版 Solutions 逐方案说明老代码参考docs/solutions/solutions.md人脸检测方案文档docs/solutions/face_detection.md手部方案文档docs/solutions/hands.md姿态方案文档docs/solutions/pose.md性能基准与调优docs/tools/performance_benchmarking.md框架核心概念Packets / Graphs / Calculators进阶自研管线用docs/framework_concepts/framework_concepts.md模型微调工具用自己的数据定制手势/目标模型mediapipe/model_maker/各平台入口docs/getting_started/下一步建议先用 Tasks 跑通人脸 姿态两条管线确认帧率达标后再用 Model Maker 针对你的数据微调一个手势/目标模型替换默认模型资产——这条路能覆盖绝大多数「端侧实时感知」的真实需求。【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表