文章目录

  • 一、安装环境
  • 二、步骤:
  • 1、git下载openpose源码
  • 2、创建新环境并激活
  • 3、pip安装requirements.txt中的内容
  • 4、安装opencv
  • 5、swig编译
  • 6、运行demo
  • 7、Pycharm中运行


经过了四天的不断踩坑,终于把基于tensorflow的openpose跑起来啦~~记个笔记

一、安装环境

win10
python 3.6
tensorflow 2.0

二、步骤:

1、git下载openpose源码

(1)桌面建了个文件夹pose estimation,用于把源码存放到这个文件夹中;

(2)下载GIT ,选择windows,并添加环境变量;

具体的安装步骤忘记了,应该一路next就可以,否则在后面会出现 git不是内部或外部指令或批处理指令这样的错误。(如果已经装过的可以忽略这一步…

然后下载完成后需要[将git添加到环境变量],找到系统变量中的Path双击,然后新建添加如图所示()

tensorflow 2 TensorFlow 2.x openpose_tensorflow


(3)用 git 将 tf-pose-estimation clone 下来;1)定位到建立的文件夹

打开刚刚建立的文件夹,然后在路径栏输入cmd,enter以后可以看到下图,这样就可以输入命令了,还有一个办法是win+R后,输入cmd,然后用命令cd C:\Users\Administrator\Desktop\pose estimation定位到建立的文件夹:

tensorflow 2 TensorFlow 2.x openpose_tensorflow 2_02


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呀

2、创建新环境并激活

还是在上面打开的终端,输入conda create -n tfpose python=3.6,创建一个新的conda环境,然后用activate tfpose激活环境,激活后可以看到有前缀tfpose;

tensorflow 2 TensorFlow 2.x openpose_tensorflow 2_03

3、pip安装requirements.txt中的内容

首先需要用cd tf-pose-estimation定位到tf-pose-estimation文件夹;
然后安装同样有两种方法,推荐使用第二种:

(1)方法1

pip install -r requirements.txt

(2)方法2

直接用方法1这样的方法很慢,而且容易出错,因此我采用了逐个安装的方法,首先看下requirements.txt中都有什么:

tensorflow 2 TensorFlow 2.x openpose_openpoese_04


1)除了最后两个,其他都可以用以下命令逐个安装

pip install argparse(这里自己替换成需要安装的名字就可)

如果觉得慢可以用下面加了镜像源的命令

pip install argparse -i https://mirrors.aliyun.com/pypi/simple/

2)然后再来说pycocotools,这是COCO数据集,因为数据集的作者并没有考虑Windows版本的,直接安装是不可行的,这里我采用了去链接复制相应的地址,然后用pip install +(链接地址)方式,注意选择和自己情况对应的版本就可

tensorflow 2 TensorFlow 2.x openpose_openpoese_05


如这里下载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版本

tensorflow 2 TensorFlow 2.x openpose_姿态识别_06


(2)下载后,解压,将swigwin添加到环境变量(这里一直不太明白在path中添加和直接添加有什么区别,不过如果直接添加不行的话,就找到Path进行添加吧~

tensorflow 2 TensorFlow 2.x openpose_openpoese_07


(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++的桌面开发这一部分,其他的根据自己需要来就好啦~

tensorflow 2 TensorFlow 2.x openpose_tensorflow_08


2)方法2

卸载自己之前下载的VS,然后重新下载,这里注意一定要把之前的VS卸载干净!!!不然会出现很多问题,我下载的是2017的,查资料python3的要求2015及以上版本

下载完成后,还需要将cl.exe设置环境变量

找到cl.exe,然后系统变量中找到Path,双击后,新建两个关于cl.exe的路径

tensorflow 2 TensorFlow 2.x openpose_姿态识别_09

(3)fatal error C1083: 无法打开包括文件:“iostream.h”: No such file or director

像这种无法打开包括文件或者在运行中遇到了很多,对应的函数在"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这行删掉/注释掉:

tensorflow 2 TensorFlow 2.x openpose_姿态识别_10

到这里基本上坑就填完了~下面的步骤相比而言很顺利

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)

tensorflow 2 TensorFlow 2.x openpose_tensorflow 2_11


到这里就全部配置完成啦,超级开心!配上一张图片的识别结果~

tensorflow 2 TensorFlow 2.x openpose_python_12

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

tensorflow 2 TensorFlow 2.x openpose_openpoese_13


在Virtualenv Environment中,选择Existing environment,然后选择之前在Anaconda3的路径下安装的envs\tfpose\python.exe;

tensorflow 2 TensorFlow 2.x openpose_姿态识别_14


Conda Environment下也是同样的设置

tensorflow 2 TensorFlow 2.x openpose_tensorflow_15


完成上述两个设置后,点击Apply即可。