Mac 配置 openpose 的经历总结

Mac 配置 openpose 的经历总结

一、下载openpose资源

​ 可以使用 git 命令(需要先找好安装位置):

git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose

​ 或者手动去 github 下载。

二、安装所需环境

​ 以下命令都在openpose主目录下执行。

2.1 HomeBrew

bash scripts/osx/install_brew.sh

可能出现的问题:brew-problem​ 解决办法:在/etc/hosts里手动添加raw.githubusercontent.com和其IP地址的映射。(值得注意的是这里是 refused 而不是 timed out)参考文章:https://blog.csdn.net/qq_43531694/article/details/106862753

2.2 CMake GUI

brew install --cask cmake

​ 有些文档里可能会给出brew cask install cmake,但是 big sur 已经不再支持这种写法,会报如下错误:unknown-command-cask

2.3 Caffe,OpenCV 等

bash scripts/osx/install_deps.sh

遇到了 2 个错误:

错误1:

​ The ‘brew link’ step did not complete successfully
brew-link-problem
​ 解决方法:问题实际上就是我本地另一个路径下已经存在了这些文件。报错信息给出了两种方法,一种是删掉冲突文件(rm),另一种是建立链接(brew link),我用了第二种,没再出错。

brew link --overwrite python@3.9

错误2:

​ 执行 pip install 时提示 no module named pip
pip-module-problem
​ 刚看到这个问题我挺疑惑的,我明明装过pip,为什么提示我没有这个模块呢?后来发现这里用的是系统自带的python2.7 的 pip,而我曾装过的是 python3 的 pip,两者不通用。所以就安装 python2.7 的 pip:

sudo easy_install pip

但是报出了语法错误:
pip-p1pip-p2
​ 上网查了好多办法都没能解决,直觉猜测应该是 python2 和 python3 的兼容性问题。于是我就想,能不能不用 pip2,直接用 pip3 跑呢?于是我就找到 scripts/osx/install_deps.sh,把 python2.7 改成了 python:
deps-python2-3
​ 果然成功跑起来了。(当然理论上之后可能会出现别的问题,但幸运的是并没有)

​ 紧接着又出现了新问题,跑是跑起来了,但是网络不行,超时了:
deps-timed-out
​ 于是就换了国内源:

do
    echo "sudo -H python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $pkg"
    sudo -H python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "$pkg"
done

​ 这次没有超时,但是报了新的 ERROR:
deps-error
​ Google翻译一下是:pip 的依赖解析器当前不考虑所有已安装的包,此行为是以下依赖冲突的根源。意思就是说系统不会检查 opencv-python 和 numpy 的版本匹配问题,并且给出了一些具体的要求。但事实上我们所下载使用的版本并不是报错提示所显示的版本,而是openpose开发者自己限制的版本,所以理论上并不会出现版本兼容问题。另外,从 bash 的执行情况来看,这个 ERROR 并没有影响到程序的后续运行,所以我就没有管它。

​ 当看到下面这段话,就说明安装成功了: deps-succeed

三、使用CMake编译

​ 先在 openpose 主目录下新建一个 build 文件夹。

3.1 打开cmake

cmake

3.2 运行cmake

cmake-gui
​ 第一步:在前两行分别输入 openpose 根目录和其下的 build 文件夹路径

​ 第二步:点击 Configure,中间的部分要 Configure完成后才有

​ 第三步:确认信息无误后,点击 Generate

遇到了 2 个问题:

问题1:

​ 提示 ./3rdparty/caffe 不是非空文件夹。

Caffe will be built from source now.
CMake Error at /Applications/CMake.app/Contents/share/cmake-3.17/Modules/ExternalProject.cmake:2659 (message):
  No download info given for 'openpose_lib' and its source directory:
  /Users/apple/Desktop/openpose-master/3rdparty/caffe
  is not an existing non-empty directory.  Please specify one of:
  * SOURCE_DIR with an existing non-empty directory
  * DOWNLOAD_COMMAND
  * URL
  * GIT_REPOSITORY
  * SVN_REPOSITORY
  * HG_REPOSITORY
  * CVS_REPOSITORY and CVS_MODULE
Call Stack (most recent call first):
  /Applications/CMake.app/Contents/share/cmake-3.17/Modules/ExternalProject.cmake:3267 (_ep_add_download_command)
  CMakeLists.txt:796 (ExternalProject_Add)

​ 查阅资料后发现 cmake GUI 无法帮我们下载 caffe,需要我们手动下载:

git clone https://github.com/CMU-Perceptual-Computing-Lab/caffe

问题2:

​ 模型下载时间过长或卡住,如果能挂代理的话可以cd models之后bash getModels.sh手动下载。

​ 或者用我的网盘资源:链接: https://pan.baidu.com/s/1Pt0gd0fNqWGud7lsZp7t7w 提取码: 2n3r ,下载好后放到models下的对应位置即可。

四、build

​ 进入 build 目录,执行:

make -j`sysctl -n hw.logicalcpu`

报错:
build-vecLib
​ 原因是找不到 vecLib,没有它的路径。

​ 解决方法:打开build/caffe/src/openpose_lib-build/CMakeCache.txt文件,找到vecLib_INCLUDE_DIR:PATH=vecLib_INCLUDE_DIR-NOTFOUND一行,从本机搜索找到vecLib.h文件后将其路径覆盖掉vecLib_INCLUDE_DIR-NOTFOUND
作为参考,我所用的路径是/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers/vecLib.h

​ 再次build,中途出现了语法错误:
build-grammer
​ 错误原因:protobuf 的新旧版本对 SetTotalBytesLimits 的定义不同。SetTotalBytesLimits 的作用是设置文件字节大小的上限,新版本只有一个参数就是上限(int),老版本有两个参数,分别是上限(int)和警告阈值(int)。于是去翻出错位置./3rdparty/caffe/src/caffe/util/io.cpp的代码:

const int kProtoReadBytesLimit = INT_MAX;  // Max size of 2 GB minus 1 byte.
// ... 省略若干行
coded_input->SetTotalBytesLimit (kProtoReadBytesLimit, 536870912);

​ 实际上就是把 INT_MAX 作为文件大小上界,超出 536870912 就警告。为了迎合新版的定义,我们只需把第二个参数去掉即可,即:

coded_input->SetTotalBytesLimit (kProtoReadBytesLimit);

​ 再次build,终于成功了。

五、测试Demo

​ 退回主目录。

5.1 only body in image

./build/examples/openpose/openpose.bin --image_dir examples/media/

run-only-body

5.2 body + hand in image

./build/examples/openpose/openpose.bin --image_dir examples/media/ --hand

run-body-hand

5.3 only body in video

./build/examples/openpose/openpose.bin --video examples/media/video.avi

run-video

六、Unity 插件(Mac不可用)

​ 在成功安装好openpose后,我想尝试用一下官方提供的 Unity 插件,以便日后在 Unity 中做应用开发。步骤很简单,只需要在 CMake 的 generate 这一步里把 BUILD_UNITY_SUPPORT选上再重新generate+build即可:
cmake-unity
​ 但是理想很丰满,现实很骨感,直到编译完成运行 bin 文件时才报错:
unity-only-win
不知道有没有其它的解决办法,只能日后慢慢探索了。
cannot-help

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值