macos系统编译MediaPipe并打包单个算法为ios的framework--以PoseTracking为例(1)

前言:目前主流的开源物体识别算法有MediaPipe和YOLOv1~YOLOv8系列。

其中,YOLO系列是专门的物体识别算法,主要用于目标检测任务,可以直接转成iOS自带的CoreML模型。

MediaPipe是一个多功能AI框架,其算法包括对象检测、图片分类、图片分割、交互式分割、手势识别、手部特征点检测、嵌入图片、人脸检测、面部特征检测、姿势特征点检测、人脸风格化、整体特征点检测,其算法模型不能直接转成iOS自带的CoreML模型,一般使用Tulsi工具把对应算法模型转成framework后在xcode项目中与c++配合调用。

本文以Mediapipe中的姿势特征点检测(PoseTracking)算法(即人体骨骼图)为例,讲解如何将Mediapipe的单个算法打包为ios可用的.framework,并在Xcode项目中使用。

之前已经配置成功过Mediapipe v0.9.2.1的使用环境,涉及安装了python3,opencv@3,bazel 5.3.2, macos13.4.1。打包了PoseTrackingGpuApp.framework。这次xcode和macos系统环境都比之前更新了,而且Mediapipe也出了新版本,因此需要升级,顺便记录下整个过程。

一、环境介绍

  • macOS Sonoma 14.4
  • Xcode15.4
  • Mediapipe v0.10.14(2024年5月最新版)
  • 自装python3 版本Python 3.10.5
  • opencv@3
  • bazel 6.1.1+ (注意Mediapipe v0.10.14需要bazel最低版本为6.1.1,目前本机预装最新版本是6.2.1)
  • 注意有些mediapipie版本编译失败,可能是bazel版本与mediapipe版本不匹配且未修改mediapipe中默认使用的bazel版本导致编译失败。

二、环境安装与升级

1、下载Mediapipe0.10.14

Medaipipe0.1.14之github下载地址
下载后解压得到
请添加图片描述

2、 安装软件包管理工具homebrew

  • homebrew是一个包管理器,可以方便的安装与管理软件包和库。
# homebrerw安装
 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# homebrew更新
 brew update

# homebrew查看版本
 brew --version
 
Homebrew 4.3.2

3、使用brew安装bazelisk

补充:Bazelisk介绍
  • Bazelisk 是一个用于简化 Bazel 版本管理的工具,使用Go语言编写。它可以帮助开发者自动下载和使用项目所需的特定版本的 Bazel,而不需要手动安装和管理多个版本的 Bazel
  • Bazelisk自动下载和使用项目中指定版本的 Bazel。通过 .bazelversion 文件定义项目所需的 Bazel 版本
  • Mediapipe支持bazelisk工具,其项目文件夹根目录下已经创建好了.bazelversion文件,可使用cmd+shift+G输入~/mediapipe-0.10.14/.bazelversion,查看所对应Mediapipe版本支持的最低bazel版本号
  • mediapipe的bazel配置文件为.bazelrc,可使用cmd+shift+G输入~/mediapipe-0.10.14/.bazelrc 查看。
# 安装Bazelisk,若homebrew已经link了bazel,需要先brew unlink bazel才能安装成功bazelisk
brew unlink bazel
brew install bazelisk

4、使用brew安装opencv@3

# 查看brew已安装的opencv@3信息
brew info opencv@3

# 安装OpenCV
brew install opencv@3
  • 报错,这个错误,意味着 Homebrew 不再支持安装 opencv@3 版本,因为该最新版本已经不再由上游维护,这里没关系,使用以前的3.4.16_9也是可以的
opencv@3 3.4.16_9 -> 3.4.20
Error: opencv@3 has been disabled because it is not maintained upstream!

5、 若没有python3,使用brew安装python3

# 查看本机python3版本
python3 --version
# 查看brew的python3版本
brew info python3
# brew安装python3
brew install python3
  • 由于macos自带python,因此下载完python3后需要配置默认使用python3
  • 配置方法:cmd+shift+G 输入~/.zshrc,添加一行 alias python=/usr/bin/python3,保存。
# 查看本机python配置路径
which python

# 输出 python: aliased to /usr/bin/python3 说明已经配置好

6、使用python3自带的pip3包管理工具安装six库

pip3 install --user six

3.启动运行mediapip的helloworld文件

  • 环境配置好后,我们来运行mediapipe
# cd 到 mediapipe 所在的目录,执行下面操作
export GLOG_logtostderr=1
# 需要bazel设置环境变量'MEDIAPIPE_DISABLE_GPU=1',因为桌面GPU当前不受支持
bazel run --define MEDIAPIPE_DISABLE_GPU=1 mediapipe/examples/desktop/hello_world:hello_world

环境配置成功

  • 至此Mediapipe的环境已配置好,并且在终端上成功运行了Mediapipe的最简单的Hello World程序,如果你使用python二次开发算法,此时可以直接进行开发了。
  • 如果你需要用Xcode运行Mediapipe则还需要安装Tulsi,使用Tulsi把Mediapipe转成Xcode项目。

三、安装Tulsi

  • Tulsi.app用于将Mediapipe转成Xcode项目,使Mediapipe能够在Xcode上运行,后期也可将Mediapipe的算法打包成iOS的静态库(.framework)。

安装步骤如下:

1.下载tulsi

# 定位到mediapipe文件夹
cd /Users/用户名/mediapipe-0.10.14 

# 下载Tulsi
git clone https://github.com/bazelbuild/tulsi.git

2.修改tulsi的脚本文件

# 定位到tulsi文件夹
cd tulsi

# 打开脚本文件
open build_and_run.sh
  • 修改默认Xcode最小版本为本机实际Xcode版本
  • xcode_version=“13.4.1” 改为 xcode_version=“15.4”

3. 终端执行修改后的脚本,来安装Tulsi.app

sh build_and_run.sh
  • 成功后弹出应用程序
    Tulsi安装成功

参考文章

iOS开发之机器学习框架MediaPipe(1)
iOS开发之机器学习框架MediaPipe(2)

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值