3记录一下openpose tf版本的安装全流程,踩了所有的坑,希望你可以一次性安装成功。
环境:Ubuntu16.04+Anaconda3
code:https://github.com/ildoonet/tf-pose-estimation
paper:https://arxiv.org/pdf/1611.08050.pdf
1)创建虚拟环境+安装cuda+cudnn+tensorflow-gpu:
首先创建一个python3.6的虚拟环境,设置conda国内镜像源,然后使用conda来安装tensorflow-gpu,conda安装的好处会自动装上一系列依赖,包括cuda和cudnn(这个前提是安装好了对应显卡的驱动,如何安装驱动有很多教程就不赘述。比起在官网自己下载设置cuda和cudnn,使用conda安装,非常方便。) 会自动安装好tensorflow-gpu 1.4.1所对应的cuda和cudnn版本。
conda create -n openposetf python=3.6
source activate openposetf
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
conda install tensorflow-gpu=1.4.1
然后测试是否安装成功:
python
import tensorflow as tf
sess=tf.Session(config=tf.ConfigProto(log_device_placement=True))
如果输出了gpu信息,就算安装成功了。
2)安装opencv3:
这里我使用conda来安装的opencv,安装成功了,但是在后面跑demo的时候出现了问题,最后也解决了问题。所以我这里给出了两种方法:
(1)使用conda安装opencv,再修复一些错误。这是我使用的方法,虽然我碰到了很多麻烦,但是总结一下照着走应该不会有任何问题。
(2)直接用pip来安装opencv,网上很多都是这样安装的,但是我没有尝试过,所以不能保证不会遇到bug。。
先说第一种:
直接用conda一键安装
conda install opencv
安装的是opencv3.3,可以import cv2测试一下是否安装成功。但是如果这样就当安装成功就大错特错了,一开始我直接这样去跑demo,对照片是可以运行的,但是无法运行视频文件。会报错:
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /opt/conda/conda-bld/opencv_1491943970124/work/opencv-3.1.0/modules/highgui/src/window.cpp, line 527
这个错误网上有很多七七八八的方法,试了一下都不行,后来在一个博客找到了成功的办法,依然是一句命令行:
conda install --channel https://conda.anaconda.org/menpo opencv3
这是opencv变成了3.1版本,但是仍然只能跑图片无法跑视频,这时的错误是:
Error opening video stream or file
无法读取视频,cap.isOpened()都返回False,解决方法:将conda安装的opencv3卸掉再重装:
conda uninstall opencv3
pip install opencv-python
就好了。。可以读取视频了。。这时的opencv是4,0版本。那么问题来了,为什么我一开始要用conda安装opencv再删掉再用pip安装呢???哈哈哈我也不知道。反正最后成了,我感天动地。所以第二种方法就是直接用pip安装,虽然网上一般都是用pip安装,但是谁知道能不能成功呢?万一我用conda装的时候装了什么依赖pip没包含进去呢?fine,反正如果有人pip一键成功的希望评论告诉我,下回我也可以直接pip安装拉。
第二种:
pip install opencv-python
3)安装requirements:
下载code:https://github.com/ildoonet/tf-pose-estimation
安装依赖:
pip install protobuf
pip install python3-tk
打开tf-pose-estimation-master文件夹,安装requirement:
pip install -r requirements.txt
其中有一条是pip+git,如果网速不好的可以单独下载压缩包,再在本地安装(如果网速好的就忽视这一条):
pip install master.zip #本地安装包
还需要安装swig支持:
cd tf_pose/pafprocess
sudo apt install swig
swig -python -c++ pafprocess.i && python3 setup.py build_ext --inplace
到此,环境已经搭建好了,后面再跑demo的时候可能还会缺少一些包,再pip install就行。
4)运行demo:
检测图像:
python run.py --model=mobilenet_thin --resize=432x368 --image=./images/p2.jpg
检测视频时,发现输出并没有包含关节,在github的issue中找到了解决方案。将run_video.py的45行
humans = e.inference(image) 改成:humans = e.inference(image, resize_to_default=True, upsample_size=4.0)
就可以了,检测视频:
python run_video.py --model=mobilenet_thin --resolution=432x368 --video=test.mp4
大功告成!另外还可以调用摄像头,但是台式机没有摄像头,所以没有尝试。