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自带的例子,先上测试后的结果如下图:
步骤: 打开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