Windows上搭建Tensorflow object detection API 的环境相关操作

最近尝试建立Tensorflow object detection API 的环境,最终成功实现。这个API运行与CPU,没有做GPU的加速,因此也没安装GPU相关的插件。

1.我的电脑

win7-64位

RAM:4G

CPU:i5-3230M

用到的东西:

Anaconda 3-5.1.0

jupyter对应的浏览器:搜狗

TensorFlow

...................

2.参考资料

https://blog.csdn.net/dy_guox/article/details/79081499

https://blog.csdn.net/r1254/article/details/76735740

https://blog.csdn.net/RobertChenGuangzhi/article/details/50499274

https://blog.csdn.net/caicai_zju/article/details/70245099

https://blog.csdn.net/comway_Li/article/details/81434358

3.安装Anaconda

下载Anaconda3-5.1.0-Windows-x86_64的安装包,安装位置可以修改为非C盘,最好不要出现中文路径吧,一路next,出现下图的时候把两个都勾选起来,继续next

安装好之后打开cmd,输入:conda --version 

如果输出像下面箭头那样,就是安装成功了。

4.安装Python

这个版本的anaconda所附带的Python是3.6版本,但TensorFlow所能适应的版本是3.5版本,所以需要先搞一个3.5的Python环境。操作为:在cmd里面输入 

conda create --name python35 python=3.5

  我这里的python35是代表着可以适应TensorFlow的Python3.5环境,原英文文档的这个名字是TensorFlow,但本质是一样的。这里的3.5会令Python选择3.5.x中的最高版本。等待一段时间,下载安装完成之后,在cmd输入:conda info --envs  如果出现如下图两个箭头所指向的回应,则代表安装成功(另外那些非箭头指向的是我各种安装尝试最后抛弃的文件,无视之)。

5.安装TensorFlow

TensorFlow一般入门的是CPU版本,稍微高端一点的是GPU版本,这里我只安装CPU的。先在cmd里面输入

activate python35

来激活现在的Python35环境,以后想退出这个环境就deactivate,下图就是进入了Python35环境的效果。

然后在python35的环境下,使用pip安装tensorflow,输入:

pip install --upgrade --ignore-installed tensorflow

验证安装是否成功,在35环境下输入python,来在cmd里面打开Python,输入如下代码,如果输出是b'good'那就是初步成功了。

import tensorflow as tf
hello = tf.constant('good')
sess = tf.Session()
print(sess.run(hello))

安装spyder和ipython等插件:打开Anaconda Navigator,在下图箭头那里搜索spy和ipy找到spyder和ipython进行勾选,然后点左下角绿色的apply,之后会出现一系列要一起安装的,继续apply就行了。这里安装的插件可能还是不够的,等一下的操作会知道那些不够,然后再来补充。

6.下载Tensorflow object detection API

https://github.com/tensorflow/models

从github上下载项目(右上角“Clone or download”-"DownloadZIP"),解压,放去没有中文路径的文件夹里面,这里解压出来的文件名是models-master。

7.Protobuf 安装与配置

https://github.com/google/protobuf/releases

在列表的最下面找到Windows版本,我是用了3.4.0版本,之前用过3.6,进行下面的操作的出错,就用回这个3.4版。解压,将bin下面的protoc.exe放到C:\Windows。

cmd把默认文件夹进入刚才步骤6的models-master\research目录,然后输入:

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

这里可能报错,大概是找不到protoc的意思,重启试试 ,可能刚才放完exe之后Windows还没更新过来。然后也可能报错说找不到文件夹或文件之类,就是什么的*起不到遍历的作用,这个时候就要把*换成protos文件夹下面每一个.protos文件的名字,逐个来手动操作,按了回车之后产生了该文件对应的.py文件cmd框里没报错,那就是OK了一个,下图是我逐个操作出来的结果。

8.PYTHON环境变量配置

在 环境变量-系统变量  中新建名为‘PYTHONPATH’的变量,输入D:\Py\models-master\research;D:\Py\models-master\research\slim

这个是我电脑的文件路径,自己的电脑自己稍微修改一下。然后重启电脑。

测试这个API,激活python35(每次都要激活的),把cmd的默认路径弄到;D:\Py\models-master\research  然后输入:

python object_detection/builders/model_builder_test.py

没报错就说明是这个api可以。如果出现类似于:ImportError: No module named "xxxxxxxx"  那么说明anaconda里面还缺失这个xxxxx插件,参考步骤5,在Anaconda Navigator界面里找到这个xxxxx,然后apply。有一个例外,就是缺失pil的时候,有时候会出现问题,用旁边的pilow插件来代替apply就行了, 这个相当于升级版。

9.测试自带案例

打开Anaconda3-Anaconda Promp,激活python35,目录cd到D:\Py\models-master\research\object_detection

输入jupyter notebook来打开网页,网页文件中的 object_detection_tutorial.ipynb,然后点击上方的 “Cell”-"Run All",就会运行,In[ ]那里出现* 就说明正在运行。如果运行成功,两三分钟后,会出现下面的景象:

可以出现以上画面的话,说明Tensorflow object detection API 的环境搭建与测试工作完成。

run-all的时候,可能会出现一些问题:

①在运行时,报import matplotlib; matplotlib.use('Agg') # pylint: disable=multiple-statemen错误,将from matplotlib import pyplot as plt 改为import matplotlib.pyplot as plt即可解决这个错误。

②报一大串,包括最下面有“ImportError: Could not find 'cudart64_90.dll'. TensorFlow requires that this........”,这个是因为我一开始安装过GPU版的TensorFlow,去Anaconda3-Anaconda Promp那里把这个卸载掉。

③出现“ImportError: No module named tensorflow ”,可能是这个jupyter有问题,强行在Anaconda3-Anaconda Promp里重新安装一次这个jupyter

activate python35 #激活tensorflow环境
conda install ipython
conda install jupyter
jupyter notebook #重新打开jupyter notebook

=======================以上就是建立好了这个环境========================

可以对代码进行修改一下,改变一下功能

1.加入其它的检测图片,在object_detection文件夹下面见建立一个类似于test_images的文件夹,放自己想检测的照片进去,改下面的这3个地方:新的文件夹的名字、文件夹里照片簇的名字、照片数量。然后就run-all

2.换模型,默认的模型是最简单快速的模型,可以在下面那里改成你想用的模型的名字,然后就直接运行就OK了

注意了,名字一定要是全名,这些可选的模型汇集于:

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md

3.一个模型的第一次运行会慢很多,因为需要下载这个模型,第一次过后,可以吧Download Model部分的代码注释掉,就会快一些。另外,新模型的第一次也可以在上面的网址那里下载想要的模型,解压,解压出的关键文件夹是里面有包含一个.pb文件的那个,把整个文件夹复制到detection_objection文件夹下,这样就可以不下载了,第一次也可以把Download Model注释掉,直接run-all 。

=============================OVER=OVER=====================================

猜你喜欢

转载自blog.csdn.net/pc9803/article/details/82290357