需要做物体识别检测的作业,查到Tensorflow object detection API 早已经封装好了神经网络,而且多个可供你选择,所以就开始弄这个,感谢很多细心的博主总结自己的踩坑之旅,所以在反复几次之后顺利的解决了很多问题,当然也遇到了一些自己的小问题,在此记录下
参考:https://blog.csdn.net/Leon_yy/article/details/81053282(感谢,这次没遇到的坑,早晚还是会遇到。。。。)
软件:Win10
Anaconda3-5.2.0(里面已经装好了许多要用的包)
1.下载好TensorFlow模型源码
下载地址:https://github.com/tensorflow/models
下载后解压即可
2. 下载配置Protobuf
下载地址:https://github.com/google/protobuf/releases
选择 protoc-3.4.0-win32.zip 版本进行下载
友情提示:下载了protoc3.6之后出错了,所以不要下最新的,不过也可以试试
下载后解压,将bin目录下的 protoc.exe,放到C:\Windows下
打开cmd命令行,将路径转到你的model-master中的research目录下,运行以下命令
protoc object_detection/protos/*.proto --python_out=.
运行完后会将protos下面的.proto文件都对应的生成一个.py文件,如果没有后续测试样例会不能运行
如果报错:object_detection/protos/*.proto: No such file or directory 是因为目前的protoc3.6有Bug,换成3.4就好了:https://github.com/google/protobuf/releases/tag/v3.4.0
3.测试API
打开Anaconda Prompt在models/research/文件夹下面运行命令行:
python object_detection/builders/model_builder_test.py
没有报错就可以了,庆幸我弄的时候这里比较顺利
4.运行样例
接着上一步,运行jupyter notebook,打开找到object_detection_tutorial.ipynb 点击Run All运行
遇到的问题:
1)报错:
FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
解决:
包内出错,是h5py包
对h5py进行更新升级,对了需要用的的包以及tensorflow我都是在Anaconda里装的,所以在里面直接升级
解决后运行结果如下图
2)上面这个是在我本地跑的没有GPU,所以又在实验室服务器上装了一遍,又遇到一个问题,在【3.测试API】时报错:
No module named 'object_detection'
解决方法:在research目录下运行命令行:
python setup.py install
再试一次,有报错:
ModuleNotFoundError: No module named 'nets'
解决方法: 将reserch/slim目录下的BUILD删除,然后在该文件夹下运行里面的setup.py:
python setup.py install