关于Person Detection和Key points Detection的open pose的linux下环境配置

环境搭建

        我们使用的操作系统是Ubuntu14.04 LTS.在这一部分主要使用tensorflow的object

detection api。需要以下library:

python3.6

Protobuf 2.6

Pillow 1.0

lxml

Jupyter notebook

Matplotlib

Tensorflow 1.4

opencv3

一.安装anaconda并创建环境

1. 使用anaconda进行安装

anaconda是一个python科学计算软件包的管理系统。由于我在公司的电脑上通过anaconda来进行包的下载,所以如果新的平台也使用anaconda来进行软件包管理,可以很轻松的配置相同的环境。

step1

下载anaconda,选择python3.6对应的版本。

出现问题conda:未找到命令,   由于之前没哟配置环境变量

# anacondabin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin

echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc

# 更新bashrc以立即生效

source ~/.bashrc

Step2

安装好anaconda后,创建一个环境(envs)并安装所需要的所有的包。

conda list --explicit > package -file.txt

conda create -n myenv --file package-list.txt

Step3

进入所创建的环境,

source activate myenv

二.逐个安装相关的包

对于tensorflow,详细的安装方法可以参考tensorflow 安装方法。典型的用户可以采用如下方法,

# For CPU

pip install tensorflow

# For GPU

pip install tensorflow-gpu

安装其他的包,

pip install pillow

pip install lxml

pip install jupyter

pip install matplotlib

pip install opencv-python

三.Protobuf Compilation

tensorflow object detection API使用Protobufs来配置模型和训练参数。在正常使用tensorflow之前,我们需要对Protobufs包进行编译,在Google_models/research中,执行以下命令,

protoc object_detection/protos/*.proto --python_out=.

把包加入PYTHONPATH

# Google_models/research

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

四.安装tf-openpose所需要的包

cd tf-openpose

pip3 install -r requirements.txt

运行模式

运行前

source activate myenv                 #进入所配置的环境

基础包

进入Google_models/research/object_detection, 需要处理的图片放在source_images目录中,处理后的图片放在output_images文件夹中。

python run.py

修改后的代码(识别人体骨架)

处理单张图片:

进入tf-openpose/src,需要处理的图片放在tf-openpose/source_images,处理后的图片放在tf-openpose/output_images文件夹中。

python run.py                                  #默认处理路径,需要处理的图片为test.jpg

python run.py –image=/../../..                                      #需要绝对路径,不能使用~

处理多张图片:

进入tf-openpose/src,需要处理的图片放在tf-openpose/image_bird_eye,处理后的图片放在tf-openpose/out_bird_eye文件夹中。

python multiple_run.py        #默认处理路径,需要处理的图片放于image_bird_eye文件夹中

python multiple_run.py –input_image_path=/../../..                       #需要绝对路径,不能使用~

配置过程中主要的问题及解决方法

问题一:在安装tensorflow, opencv-python的过程中,由于网络问题,可能会下载失败。

解决办法一:使用清华镜像在网站https://mirrors.tuna.tsinghua.edu.cn/中找到版本的tensorflow和tensorflow-gpu的数据包。参考 Google 教程 https://source.android.com/source/downloading.html,将anaconda默认下载地址中的https://android.googlesource.com/ 全部使用 https://aosp.tuna.tsinghua.edu.cn/ 代替。然后,在进行下载安装。(清华镜像中没有opencv-python的对应镜像,需要从网上下载,手动安装)

解决方法二:在github上,下载lantern VPN,开启VPN后可以下载安装TensorFlow,tensorflow-gpu,opencv-python但是,下载速度较慢。

 

 

问题二:安装并配置TensorFlow object detection API的过程中。

执行以下命令时:

protoc object_detection/protos/*.proto --python_out=.

执行后报错:object_detection/protos/anchor_generator.proto:11:3: Expected "required", "optio nal", or "repeated".

object_detection/protos/anchor_generator.proto:11:32: Missing field number.

解决方法:

#download protoc 3.3

mkdir protoc_3.3

cd protoc_3.3

wget https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip

chmod 775 protoc-3.3.0-linux-x86_64.zip

unzip protoc-3.3.0-linux-x86_64.zip

 

#compile proto file

cd /usr/local/lib/python2.7/dist-packages/tensorflow/models/

${protoc_3.3 dir}/bin/protoc object_detection/protos/*.proto --python_out=.

下载比较慢也可以这里下载: 

https://www.witsrc.com/download 

unzip protoc-3.3.0-linux-x86_64.zip

/home/go/Google_models/research/bin/protoc object_detection/protos/*.proto --python_out=.

export PYTHONPATH=$PYTHONPATH:'pwd':'pwd'/slim

问题三:ImportError:/usr/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found

问题原因:由于升级了gcc,却没有将升级后的gcc的动态库去替换老版本的gcc动态库所致。

链接:https://blog.csdn.net/ZX714311728/article/details/69628836

1.查看动态库:

strings /usr/lib/libstdc++.so.6 | grep CXXABI

本机地址为strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6(具体地址看报错地址)修改指令地址为:strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep CXXABI

查看结果发现没有所需的CXXABI_1.3.3

2.ls -l /usr/lib/x86_64-linux-gnu/libstdc++.so.6

我们发现libstdc++.so.6是个软连接,是连接到libstdc++.so.6.0.19上的,而libstdc++.so.6.0.19是老版本的动态库。所以下面我们要做的就是将libstdc++.so.6连接到新版本的动态库上去。

3.    find / -name "libstdc++.so.*"

显示文件太多,且其中有大部分无访问权限不方便查看建议使用 指令:

find / -name "libstdc++.so.*" 2>/dev/null

可以忽略无权访问的文件

结果显示还有很多行。根据文中提示,需要找到系统所含的gcc升级输出目录,但是,没有发现系统中所含的gcc升级输出目目录。其中有关于opencv和anaconda3中的相关升级gcc时的输出目录。我们尝试使用anaconda3中的gcc输出目录对系统中的libstdc++.so.6进行软连接。

指令:cp /home/linux001/anaconda3/envs/vision/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24 /usr/lib/x86_64-linux-gnu/

显示:cp: 无法创建普通文件"/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.24": 权限不够

输入:sudo -s   进入root模式

再次尝试:cp /home/linux001/anaconda3/envs/vision/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24 /usr/lib/x86_64-linux-gnu/

5.将libstdc++.so.6连接到libstdc++.so.6.0.24上去:

    cd /usr/lib/x86_64-linux-gnu/

    rm -rf libstdc++.so.6

    ln -s libstdc++.so.6.0.22 libstdc++.so.6

6.重新运行以下命令检查动态库

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep 'CXXABI'

完成。

ImportError: dlopen: cannot load any more object with static TLS

配置TensorFlow object detection API

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值