tensorflow object detection API配置

Ubuntu16.04下的配置

源代码在:https://github.com/tensorflow/models,其中我们所用到的在https://github.com/tensorflow/models/tree/master/research/object_detection中,因为其中用到了slim和其他tensorflow库,因此直接从models这一级clone下来即可

在具体的配置之前要安装 cuda9.0,cudnn7.0,以及tensorflow1.9.0,其他相关的依赖可以参照官方安装教程,这里主要说下我踩坑的地方

1、protobuf的编译

在官方的安装教程中最重要的一部分就是(运行下面代码的过程中,把*改为具体的名称,一个一个运行):

# From tensorflow/models/research/
protoc object_detection/protos/*.proto --python_out=.

这个需要protobuf的支持,并且在官方的安装教程中,已经提醒过要安装protobuf-python,因此你在终端输入protoc --version,应该会显示已安装的版本信息。对于ubuntu16.04来说,采用sudo apt-get install protobuf-python指令安装的protobuf版本是2.5.1。

然而如果你以2.5.1这个版本,对ssd.proc进行编译时,可能会出现如下的错误:

Expected "required", "optional", or "repeated".

出现这种错误的原因就是protobuf的版本过低,实际需要的至少要3.0以上的版本。

所以我就利用pip install protobuf安装了最新的protobuf,版本是3.6.1.

可是再次运行还是会出现错误,同时你在终端输入protoc --version,显示的仍是2.5.1的版本。正确的做法应该是手动安装protobuf:

(1)在编译前需要安装一些依赖项,否则运行(2)中的第四行指令会报错

sudo apt-get install autoconf automake libsigsegv2 m4

(2)运行下面指令

$ git clone https://github.com/google/protobuf.git
$ cd protobuf
$ git submodule update --init --recursive
$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig # refresh shared library cache.

我在运行make check的过程中出错了,但是官方说出错不影响安装,我就继续安装了,安装完毕后查看protoc的版本为3.6.1。

2、为API添加环境变量

如果不添加环境变量可能会出现:no module named net的报错。此外每次用终端进行训练的时候都必须输入

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

非常麻烦,因此还是添加为好

在终端输入:

sudo gedit ~/.bashrc

在其中添加:

export PYTHONPATH=$PYTHONPATH:/home/yantianwang/clone/models-master/research:/home/yantianwang/clone/models-master/research/slim

其中的两个路径分别为models-master/research/和tmodels-master//research/slim,也就是你自己的models-master/的绝对路径下的research和slim路径。

但是有一点不明白的是我在/etc/profile中添加上述的环境变量就没有用,不知道为什么,还请大神指示。

因为是在bash中添加了环境变量,因此如果要在spyder中进行调试。就要从终端区中启动spyder

3、测试

终端输入,不报错即可。

python object_detection/builders/model_builder_test.py

 

猜你喜欢

转载自blog.csdn.net/Mr_health/article/details/82872954