本地 Android 环境部署 MediaPipe 框架实践总结
一、部署目标
本次部署核心目标:在 Android 设备上集成 MediaPipe 框架,实现手部追踪、姿态检测、人脸相关、目标检测及手势识别等核心功能的稳定运行。
二、完成情况
1.手部追踪与识别
基于 MediaPipe Hands 官方示例,通过 21 个手部关键关节点(指尖、指节、手腕等)实现精准匹配与追踪,最多支持同时识别两只手,是手势识别、AR 交互等场景的核心基础。



2. 人脸网格检测功能
生成人脸三维网格结构,精准定位 468 个人脸关键特征点(覆盖眼、鼻、嘴、轮廓等细节点位),支持单人脸同框检测,可用于表情分析、三维重建、虚拟人脸驱动等场景。

3. 人脸检测功能
定位图像 / 视频中的人脸位置并输出边界框信息,同时通过 6 个关键点位(左眼、右眼、鼻子、嘴巴、左耳、右耳)辅助定位,是人脸相关任务的基础步骤。测试发现,人数≥3 时识别稳定性下降(特征点偏移、识别中断),暂未确定同时识别上限。


4. 人体姿态特征点检测功能
定位人体 33 个关键关节点(头、肩、肘、膝、踝等)并输出坐标,支持单人体同框检测,可用于动作识别、运动分析、虚拟形象驱动等场景。

5. 目标检测功能
识别并定位多个不同类别物体,输出类别标签及边界框坐标,最多支持同时检测 3 个物体。未被原始模型训练覆盖的物体无法识别。



6. 手势识别功能
分析手部动作并识别具体手势类型(点赞、握拳等),可用于人机交互、智能控制等场景。该功能存在方向依赖性(正面可识别、反面或角度偏差时识别失效)。










三、部署流程和一些问题
1.部署流程
依赖环境:JDK 17、Gradle 8.14.3、Android SDK(API Level 30)、Android NDK r21e;
Windows 端(Android Studio 可视化操作)
依赖环境:JDK 17、Gradle 8.14.3、Android SDK(API Level 30)、Android NDK r21e;
核心操作:推荐使用 Google 官方 MediaPipe 仓库,官方源码仅包含人脸网格检测、人脸检测、手部追踪功能,新增功能需自行查找对应模块配置文件、添加依赖并修改代码;
难点:AS界面汉化不足,部分设置为英文;官方源码中 res 目录为 Linux 风格软链接,Windows 端配套 bat 脚本无法正常运行,需手动复制 res 目录本体替换软链接;系统级冲突、缓存清理需结合个人路径操作;
优点:可视化界面操作简洁,流程清晰。
Linux 端(命令行操作)
部署逻辑与 Windows 端一致,无需可视化界面;
核心操作:安装依赖时需高级权限(如OpenCV 系统级库),后续进入项目目录后用 Gradle 命令编译,APK 输出至 项目下app/build/output 目录,最终通过 scp 指令传输至本地再安装到手机;
难点:无图形化界面导致操作繁琐,用户环境、系统环境易引发冲突,环境变量需同步配置至脚本;
优点:编译速度快、性能强,缓存文件清理便捷。
2.核心问题与注意事项
版本冲突:部分教程未明确仓库版本、依赖版本,直接使用易引发兼容性问题;
配置验证:修改依赖、镜像下载源前需提前验证可用性,否则会导致编译失败;
工具误区:MediaPipe 桌面端常用 Bazel 构建工具,但 Android 端基于 Gradle 构建即可,无需额外配置 Bazel;
进阶需求:当前部署以低代码实现基础功能为主,若需功能整合、强化或界面开发,需深入学习框架项目结构与依赖整合逻辑。
2976

被折叠的 条评论
为什么被折叠?



