参考文章 主要参考安装教程
Win10+Tensorflow+OpenPose超超超详细安装及各种遇到的问题解决
深度学习tf-pose-estimation人体姿态识别实现教程
人体姿态识别–Openpose+Tensorflow
tensorflow入门教程(四十三)人体姿态检测(一)
毕设中的问题二:tf-pose-estimation-master,最后出现ModuleNotFoundError: No module named ‘tensorflow.contrib’(已解决)
文章目录
经过了四天的不断踩坑,终于把基于tensorflow的openpose跑起来啦~~记个笔记
一、安装环境
win10
python 3.6
tensorflow 2.0
二、步骤:
1、git下载openpose源码
(1)桌面建了个文件夹pose estimation,用于把源码存放到这个文件夹中;
(2)下载GIT ,选择windows,并添加环境变量;
具体的安装步骤忘记了,应该一路next就可以,否则在后面会出现 git不是内部或外部指令或批处理指令这样的错误。(如果已经装过的可以忽略这一步…
然后下载完成后需要[将git添加到环境变量],找到系统变量中的Path双击,然后新建添加如图所示(https://blog.youkuaiyun.com/oschina_41767564/article/details/104768735)
(3)用 git 将 tf-pose-estimation clone 下来;
1)定位到建立的文件夹
打开刚刚建立的文件夹,然后在路径栏输入cmd,enter以后可以看到下图,这样就可以输入命令了,还有一个办法是win+R后,输入cmd,然后用命令cd C:\Users\Administrator\Desktop\pose estimation
定位到建立的文件夹:
2)接下来就可以下载源码,有三种方法,优先使用第三种
- 方法1:
直接输入命令git clone https://www.github.com/ildoonet/tf-pose-estimation
下载tf-pose-estimation; - 方法2:
进入 tf-pose-estimation下载地址,然后点code→download ZIP,下载压缩包后解压,放到建立的文件夹中; - 方法3:
注册码云账号,登陆后点击右上角+号,新建仓库:
拉到最下面选择“导入已有仓库”:
然后将你需要下载的github网址复制到这里,进行仓库创建:
然后选择克隆/下载→复制,接着就可以用git clone 进行下载了~在上面打开的终端输入git clone https://gitee.com/wyffff0801/tf-pose-estimation.git
这里是第一个坑,直接用方法1或2会特别慢,而且中间可能有错误,因此建议用方法3呀
参考博客:git clone 显著提速,解决Github代码拉取速度缓慢问题
2、创建新环境并激活
还是在上面打开的终端,输入conda create -n tfpose python=3.6
,创建一个新的conda环境,然后用activate tfpose
激活环境,激活后可以看到有前缀tfpose;
3、pip安装requirements.txt中的内容
首先需要用cd tf-pose-estimation
定位到tf-pose-estimation文件夹;
然后安装同样有两种方法,推荐使用第二种:
(1)方法1
pip install -r requirements.txt
(2)方法2
直接用方法1这样的方法很慢,而且容易出错,因此我采用了逐个安装的方法,首先看下requirements.txt中都有什么:
1)除了最后两个,其他都可以用以下命令逐个安装
pip install argparse(这里自己替换成需要安装的名字就可)
如果觉得慢可以用下面加了镜像源的命令
pip install argparse -i https://mirrors.aliyun.com/pypi/simple/
2)然后再来说pycocotools,这是COCO数据集,因为数据集的作者并没有考虑Windows版本的,直接安装是不可行的,这里我采用了去链接复制相应的地址,然后用pip install +(链接地址)
方式,注意选择和自己情况对应的版本就可
如这里下载pycocotools就是
pip install https://pypi.tuna.tsinghua.edu.cn/packages/4a/26/3d41709506b1a5f7af7b26d0beb35b259cf6d2cf716742cef91abf6b4665/pycocotools_windows-2.0-cp36-cp36m-win_amd64.whl#sha256=1e5f5f4490cf4eca98559b638234429f9793a8cdc6cc604241c1cf02b4e5e0b4
当然,还可以直接把.whl文件下载下来,然后将下载的文件放在D:\Anaconda3\envs\tfpose\Lib文件夹内,然后打开anaconda,进入tfpose环境安装(也就是需要在哪个环境使用,就要在哪个环境安装);
3)最后是tensorpack的安装,requirements中给出的是从git中clone,这是一种方法,但是由于实在很慢,所以我同样采用了在码云上新建仓库,克隆的方式,命令如下:
pip install git clone git+https://gitee.com/wyffff0801/tensorpack.git
至此,requirements中的所有内容都安装完成啦~
4、安装opencv
(1)方法1
pip install opencv-python
(2)方法2
下载 相应版本的.whl文件,然后cd到 .whl文件所在的文件夹,执行
pip install opencv_python‑4.1.2‑cp36‑cp36m‑win_amd64.whl
这里也可以不提前安装,在后面运行中,如果提示错误关于cv2的,再pip install
5、swig编译
又一个大坑来了!这里遇到了好多问题…
(1)下载swigwin,注意不要下错,这里我们选择window版本
(2)下载后,解压,将swigwin添加到环境变量(这里一直不太明白在path中添加和直接添加有什么区别,不过如果直接添加不行的话,就找到Path进行添加吧~
(3)在cmd的(base)环境中(另开一个cmd,不是之前的虚拟环境了),执行swig --help
,没有错误就可以下一步了,否则检查下添加的环境变量是不是正确;
(4)在虚拟环境tfpose下,分别执行下面两条命令
cd C:\Users\Administrator\Desktop\pose estimation\tf-pose-estimation\tf_pose\pafprocess
swig -python -c++ pafprocess.i && python setup.py build_ext --inplace
至此这一部分就完成了,当然,可能会遇到很多错误,下面就汇总一下:
(1)Unable to find vcvarsall.bat
- 找到vcvarsall.bat所在路径,一般在VS安装路径下,我的是 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build;
- 找到_msvccompiler.py文件,我的路径是D:\Anaconda3\envs\tfpose\Lib\distutils_msvccompiler.py
- 打开_msvccompiler.py,将下面这一部分进行替换
def _find_vcvarsall(plat_spec):
try:
key = winreg.OpenKeyEx(
winreg.HKEY_LOCAL_MACHINE,
r"Software\Microsoft\VisualStudio\SxS\VC7",
access=winreg.KEY_READ | winreg.KEY_WOW64_32KEY
)
except OSError:
log.debug("Visual C++ is not registered")
return None, None
with key:
best_version = 0
best_dir = None
for i in count():
try:
v, vc_dir, vt = winreg.EnumValue(key, i)
except OSError:
break
if v and vt == winreg.REG_SZ and os.path.isdir(vc_dir):
try:
version = int(float(v))
except (ValueError, TypeError):
continue
if version >= 14 and version > best_version:
best_version, best_dir = version, vc_dir
if not best_version:
log.debug("No suitable Visual C++ version found")
return None, None
vcvarsall = os.path.join(best_dir, "vcvarsall.bat")
if not os.path.isfile(vcvarsall):
log.debug("%s cannot be found", vcvarsall)
return None, None
vcruntime = None
vcruntime_spec = _VCVARS_PLAT_TO_VCRUNTIME_REDIST.get(plat_spec)
if vcruntime_spec:
vcruntime = os.path.join(best_dir,
vcruntime_spec.format(best_version))
if not os.path.isfile(vcruntime):
log.debug("%s cannot be found", vcruntime)
vcruntime = None
return vcvarsall, vcruntime
替换成
def _find_vcvarsall(plat_spec):
best_dir = r'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build'
best_version = 17
vcruntime = None
vcruntime_spec = _VCVARS_PLAT_TO_VCRUNTIME_REDIST.get(plat_spec)
if vcruntime_spec:
vcruntime = os.path.join(best_dir,
vcruntime_spec.format(best_version))
if not os.path.isfile(vcruntime):
log.debug("%s cannot be found", vcruntime)
vcruntime = None
print(vcruntime)
return r'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat', vcruntime
保存以后,再次执行swig -python -c++ pafprocess.i && python setup.py build_ext --inplace
,没有问题即可;
(2)command ’ cl.exe’ failed: No such file or directory
这个问题可以这样解决:
1)方法1
直接基于自己已经下载好的VS,打开Visual Studio Installer,进行修改,一定要安装使用C++的桌面开发这一部分,其他的根据自己需要来就好啦~
2)方法2
卸载自己之前下载的VS,然后重新下载,这里注意一定要把之前的VS卸载干净!!!不然会出现很多问题,下载教程,我下载的是2017的,查资料python3的要求2015及以上版本
下载完成后,还需要将cl.exe设置环境变量
找到cl.exe,然后系统变量中找到Path,双击后,新建两个关于cl.exe的路径
(3)fatal error C1083: 无法打开包括文件:“iostream.h”: No such file or directory
像这种无法打开包括文件或者在运行中遇到了很多,对应的函数在"C:\Users\Administrator\Desktop\pose estimation\tf-pose-estimation\tf_pose\pafprocess\pafprocess.cpp" ;
一开始以为是自己库没装全,或者需要将那些头文件放到这个函数的路径下,结果试了试并没有什么用,最后发现是之前的VS2015没有卸载干净,在运行的时候,还是用的VS2015,这当然出错了…所以如果出错,可以去之前的VS安装路径看看,是否没有删除干净,包括如果在环境变量中有路径也要删除。
(4)cl.exe’ failed with exit status 2
这个问题和上面第三个的原因一样,也是VS没有卸载干净导致的。
(5)No module named ‘tensorflow.contrib.tensorrt’
找到 \tf-pose-estimation\tf_pose\estimator ,把tensorflow.contrib.tensorrt
这行删掉/注释掉:
到这里基本上坑就填完了~下面的步骤相比而言很顺利
6、运行demo
(1)回到tf-pose-estimation
cd C:\Users\Administrator\Desktop\pose estimation\tf-pose-estimation
(2)运行demo
python run_webcam.py --model=mobilenet_thin_432*368 --camera=0
错误:mobilenet_thin_432x368,则命令改为:
python run_webcam.py --model=mobilenet_thin --resize=432x368 --camera=0
错误:numpy版本,则按照提示:
pip install numpy==要求版本
这样就可以从摄像头中看到自己啦哈哈~~
下面是补充命令:
(3)识别保存的图片
python run.py --model=mobilenet_thin --resize=432x368 --image=./images/p1.jpg
(4)识别保存好的视频
python run_video.py --model=mobilenet_thin --resolution=432x368 --video=./etcs/dance.mp4
只用上面的命令是看不到人体识别的痕迹的,所以要加上下面的步骤:
打开tf-pose-estimation中的run_video.py文件;
在下图位置,注释掉humans = e.inference(image)
,添加:
humans = e.inference(image, resize_to_default=(w > 0 and h > 0), upsample_size=args.resize_out_ratio)
到这里就全部配置完成啦,超级开心!配上一张图片的识别结果~
7、Pycharm中运行
(1)打开项目
File→open→C:\Users\Administrator\Desktop\pose estimation\tf-pose-estimation→OK
(2)Pycharm中配置
File→Settings→Project: tf-pose-estimation→Python Interpreter→设置→Add
在Virtualenv Environment中,选择Existing environment,然后选择之前在Anaconda3的路径下安装的envs\tfpose\python.exe;
Conda Environment下也是同样的设置
完成上述两个设置后,点击Apply即可。