资讯动态

MediaPipe 多平台部署实战:3 条命令在桌面、Android、iOS 上跑通手部跟踪

发布时间:2026/9/2 10:49:25 来源:尧图企业网站定制
MediaPipe 多平台部署实战3 条命令在桌面、Android、iOS 上跑通手部跟踪【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe你要完成的目标很具体让一段摄像头画面在本地实时标出手部关键点先在桌面端用 C 跑通验证效果再把同一套逻辑打包成可安装的 Android APK 和 iOS 应用。MediaPipe 把模型推理、状态管理封装在计算图graph里你真正要做的只有三件事选对部署路径、装好依赖、运行对应的 bazel 目标。先定路径按验证还是发布做取舍部署 MediaPipe 时最常见的弯路是一上来就在目标平台搭全套工具链。正确的顺序是先回答一个问题你是要验证模型效果还是要发布一个应用只验证效果、写算法原型用 Python 包即可pip install mediapipe一条命令不需要 bazel也不需要 clone 仓库。官方 Python 包在 docs/getting_started/python.md 有说明。要在桌面跑 C 推理、或嵌入到自己的 Linux/macOS 程序需要 clone 源码用 bazel 构建mediapipe/examples/desktop下的命令行示例。要上架 Android / iOS 商店需要 bazel 交叉编译产出 APK 和 IPA入口在mediapipe/examples/android与mediapipe/examples/ios。三条路径共享同一批 pbtxt 计算图配置所以先在 Python 里选定效果再切到原生路径基本不用改逻辑。边缘设备如 Coral也属于第三种路径的变体示例见 mediapipe/examples/coral/。用 Python 包 10 分钟验证模型效果这条路的环境准备最轻适合所有平台Windows、macOS、Linux x86_64。创建并激活虚拟环境python3 -m venv mp_env source mp_env/bin/activate安装官方包并导入pip install mediapipeimport mediapipe as mp mp_hands mp.solutions.hands with mp_hands.Hands(max_num_hands2, min_detection_confidence0.5) as hands: # 对任意 BGR 图像或视频帧调用 process() # results.multi_hand_landmarks 即 21 个关键点 pass如果pip install报No matching distribution found先确认你的 Python 是 64 位且版本受支持Linux/macOS x86_64、Windows amd64排错细节见 docs/getting_started/troubleshooting.md。在 Linux/macOS 桌面上构建并运行 C 手部跟踪Python 验证通过后桌面端 C 路径的价值在于性能与可嵌入性。环境准备和部署实操在这里是交织的每装一个依赖就顺手跑一个更小的构建目标来验证它是否生效。第 1 步clone 仓库并确认 bazel 可用。使用 bazelisk 代替直接装 bazel它会自动选中仓库要求的版本。git clone https://gitcode.com/GitHub_Trending/med/mediapipe cd mediapipe bazel version # 应能输出版本号未安装则先装 bazelisk第 2 步装 OpenCV。桌面示例强依赖 OpenCV 与 FFmpeg。Ubuntu/Debian 上最省事的方式是装系统包sudo apt-get install -y libopencv-dev libopencv-video-devmacOS 上用 Homebrew 装 OpenCV 3并卸掉冲突的 glogbrew install opencv3 brew uninstall --ignore-dependencies glog如果系统包版本与仓库默认配置不匹配可以改用仓库自带的 setup_opencv.sh 从源码编译并自动改写WORKSPACE指向。这一步的详细分支含 OpenCV 4 需要改third_party/opencv_linux.BUILD见 docs/getting_started/install.md。第 3 步跑 hello_world 验证工具链。这一步能独立暴露 OpenCV/Python 配置问题成本最低export GLOG_logtostderr1 bazel run --define MEDIAPIPE_DISABLE_GPU1 \ mediapipe/examples/desktop/hello_world:hello_world终端连续打印 10 行Hello World!即工具链就绪。第 4 步运行手部跟踪。CPU 版一条命令即可程序会打开摄像头实时标注 21 个手部关键点GLOG_logtostderr1 bazel run --define MEDIAPIPE_DISABLE_GPU1 \ mediapipe/examples/desktop/hand_tracking:hand_tracking_cpu如果 Linux 机器带 EGL 驱动的 GPU可改用 GPU 子图获得更高帧率sudo apt-get install mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 \ mediapipe/examples/desktop/hand_tracking:hand_tracking_gpu完整构建命令含--calculator_graph_config_file换图方式见 docs/getting_started/cpp.md。想换算法时直接指向 mediapipe/graphs/hand_tracking/ 下的其他 pbtxt 文件代码一行不用改。构建可安装的 Android APK 与 iOS 应用移动端路径的核心思路复用仓库里的现成示例工程只改你需要的部分。示例工程目录handtrackinggpu、facemeshgpu、posetrackinggpu等与你的最终 App 结构基本一致方便对照。Android在仓库根目录准备 SDK/NDK 环境需要已装 Android Studio./setup_android_sdk_and_ndk.sh构建单个或多个 APK。单目标bazel build -c opt --configandroid_arm64 \ mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu:handtrackinggpu或者用仓库自带的脚本一次构建全部示例并自动安装到已连接设备-d指定 APK 输出目录-i只安装已构建产物./build_android_examples.sh -d out_android把产物装到真机验证adb install bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu/handtrackinggpu.apkiOS只能在 macOS 上构建./build_ios_examples.sh -d out_ios该脚本内部执行bazel build -c opt --configios_arm64产出 IPA也可以打开仓库里的mediapipe/MediaPipe.tulsiproj工程用 Xcode 直接对真机 Build and Run。更多平台参数见 docs/getting_started/ios.md。避坑与调优以下问题按现象 → 原因 → 解法组织覆盖从构建到运行的最常见卡点。现象链接阶段报undefined reference to cv::VideoCapture等大量 cv 符号。原因本地 OpenCV 版本或安装路径与WORKSPACE里new_local_repository(name linux_opencv, ...)指向的路径不一致或 OpenCV 4 的 include 目录结构多了opencv4/一层没同步到third_party/opencv_linux.BUILD。 解法核对两处路径确保path指向真实安装前缀OpenCV 4 需在cc_library的hdrs/includes中放开include/opencv4/对应行。修完执行bazel clean再重建。现象构建前报错An error occurred during the fetch of repository local_execution_config_python。原因bazel 找不到 Python 可执行文件PATH 里没有或 conda 环境未激活。 解法显式传入路径例如bazel build ... --action_env PYTHON_BIN_PATH$(which python3)。现象下载依赖时java.io.IOException或Connection timed out卡在某个或多个 remote 仓库。原因bazel 拉取第三方依赖的源在你的网络环境下不稳定。 解法给 bazel 加代理参数--host_jvm_args -DsocksProxyHostip -DsocksProxyPortport排除网络因素后执行bazel clean --expunge重试。现象GPU 桌面示例启动后黑屏、崩溃或提示找不到 EGL。原因Linux 桌面 GPU 需要 EGL/GLES 驱动很多最小化系统只装了 X11。 解法安装mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev后加--copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11重建驱动短期解决不了就先退回 CPU 版--define MEDIAPIPE_DISABLE_GPU1逻辑完全一致。现象Android 示例启动即崩日志含Native method not found。原因NDK 未正确配置导致 native 库没编进 APK或应用包名与 JNI 注册路径不一致。 解法重跑setup_android_sdk_and_ndk.shadb install -r强制覆盖安装并用adb logcat抓取完整堆栈定位缺失的 .so。 性能调优按收益排序把*_desktop_live.pbtxt换成*_desktop_live_gpu.pbtxt启用 GPU 子图如 mediapipe/graphs/hand_tracking/hand_tracking_desktop_live_gpu.pbtxt其次对 TFLite 模型做量化压缩输入尺寸最后才考虑改图裁剪无用节点。用内置 profiler 定位瓶颈的方法见 docs/tools/performance_benchmarking.md 与 docs/tools/tracing_and_profiling.md。下一步把示例变成你自己的应用跑通三条路径后按这个顺序深入读懂计算图学习 node/calculator 概念并手写图从 docs/framework_concepts/building_graphs_cpp.md 和 docs/framework_concepts/calculators.md 入手配合 docs/tools/visualizer.md 的可视化方式验证图结构。换成自己的模型用仓库内的 mediapipe/model_maker/ 基于自有数据微调检测/关键点模型产出 tflite 后替换图中模型路径。浏览全部解决方案人脸、姿态、分割等完整清单在 docs/solutions/solutions.md每个方案文档都标注了各平台的支持情况。Python 里跑自定义图不想写 C 时docs/getting_started/python_framework.md 展示了如何在 Python 中直接执行 pbtxt 图。遇到构建问题第一手排错入口始终是 docs/getting_started/troubleshooting.md。【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价