TensorFlow学习(四)之基于win10实现官方Object Detection API 步骤及出现的坑bug解决办法

标签: Object Detection API    tensorflow  深度学习  目标检测

第一步:安装所需的库

1    下载Tensorflow object detection API ; https://github.com/tensorflow/models 到本地,这一步一般不会报错

下载后,配置环境变量,在 ‘此电脑’-‘属性’- ‘高级系统设置’ -‘环境变量’-‘系统变量’ 中,将tensorflow-models\research\   和tensorflow-models\research\slim  添加进去环境变量。

 

2    获取protobuf,下载地址: https://github.com/google/protobuf/releases(选择最新版本的Windows32版本,不然可能会有错),解压后将bin文件夹中的【protoc.exe】放到C:\Windows。(用于将protoc.exe所在的目录配置到环境变量当中)。在tensorflow-models\research\目录下打开命令行窗口,输入:

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

 

如果此时不显示任何信息,则表明运行成功。在tensorflow-models\research\object_detection\protos(tensorflow-models是你下载的API自定义的文件名)下,每一个proto文件都应该会有一个对应的.py文件。具体 情况如下:

错误一:在这一步有时候会出错,可以尝试把/*.proto 这部分改成文件夹下具体的文件名,一个一个试,每运行一个,文件夹下应该

出现对应的.py结尾的文件。不报错即可。

具体操作是:

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

 把*号换成具体的文件名字,这样就会生成一个.py文件。需要一个一个文件。虽然是本方法,可是很有效。这样yige一个一个替换很麻烦,为此,笔者将所有文件的名字附在下面,这样复制粘贴就会很快。

protoc object_detection/protos/anchor_generator.proto --python_out=.
protoc object_detection/protos/argmax_matcher.proto --python_out=.
protoc object_detection/protos/bipartite_matcher.proto --python_out=.
protoc object_detection/protos/box_coder.proto --python_out=.
protoc object_detection/protos/box_predictor.proto --python_out=.
protoc object_detection/protos/eval.proto --python_out=.
protoc object_detection/protos/faster_rcnn.proto --python_out=.
protoc object_detection/protos/faster_rcnn_box_coder.proto --python_out=.
protoc object_detection/protos/graph_rewriter.proto --python_out=.
protoc object_detection/protos/grid_anchor_generator.proto --python_out=.
protoc object_detection/protos/hyperparams.proto --python_out=.
protoc object_detection/protos/image_resizer.proto --python_out=.
protoc object_detection/protos/input_reader.proto --python_out=.
protoc object_detection/protos/keypoint_box_coder.proto --python_out=.
protoc object_detection/protos/losses.proto --python_out=.
protoc object_detection/protos/matcher.proto --python_out=.
protoc object_detection/protos/mean_stddev_box_coder.proto --python_out=.
protoc object_detection/protos/model.proto --python_out=.
protoc object_detection/protos/multiscale_anchor_generator.proto --python_out=.
protoc object_detection/protos/optimizer.proto --python_out=.
protoc object_detection/protos/pipeline.proto --python_out=.
protoc object_detection/protos/post_processing.proto --python_out=.
protoc object_detection/protos/preprocessor.proto --python_out=.
protoc object_detection/protos/region_similarity_calculator.proto --python_out=.
protoc object_detection/protos/square_box_coder.proto --python_out=.
protoc object_detection/protos/ssd.proto --python_out=.
protoc object_detection/protos/ssd_anchor_generator.proto --python_out=.
protoc object_detection/protos/string_int_label_map.proto --python_out=.
protoc object_detection/protos/train.proto --python_out=.

最终的结果就是上图。

 

第二步:运行测试结果

在检测API是否正常时,进入目录tensorflow-models\research, 打开cmd运行命令行:

python object_detection/builders/model_builder_test.py  

 若出现结果,没报错,则正确。

错误二:此处错误为:ImportError: No module named 'object_detection'

解决办法: 打开cmd,在目录tensorflow-models\research下运行:

python setup.py build
python setup.py install

在目录tensorflow-models\research\slim下运行:

pip install -e .
 

 在继续测试API是否正常。

这些打开命令行检测时是否正确时,建议把环境换为anaconda  设置的虚拟tensorflow环境下(前提是已经安装配置了虚拟tensorflow环境)。

在cmd中操作中:

activate tensorflow  #激活虚拟tensorflow环境

具体操作结果如下:

第三步:例程测试API

上面测试文件以及成功,接下来就测试官方API自带的例子,先上测试后的结果如下图:

步骤: 打开Anaconda Prompt,先输入 在里面输入

activate tensorflow  #激活tensorflow虚拟环境

如下图所示,用命令行进入目录 E:\tensorflow-models\research\object_detection下 输入 jupyter notebook 打开 jupyter 编辑器,

 

然后进入下图界面,点击object_detection_tutorial.ipynb。

打开object_detection_tutorial.ipynb后进入下图所示界面 

在新标签页中打开 Object Detection Demo,点击上方的 “Cell”-"Run All",等待结果。运行可能要花点时间不要急。没有出错就一直等待运行完毕。

 

可能会出现的错误:

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

2.运行时,报RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibilit。。。错误。

出现这个错误的原因是numpy版本不匹配。只需要把numpy的版本降到1.14.5就可以了。其他之类的dtype size changes  都相应换成低版本就行。操作如下:

打开anaconda prompt  输入 activate tensorflow  进入虚拟环境
pip uninstall numpy  #卸载numpy
然后重新安装低版本
pip install numpy==1.14.5

 

 

原文链接:加载失败,请重新获取