windows下的tensorflow objection API安装配置

tensorflow objection是tensorflow团队开发的一个模型工具集和,可以实现各种深度学习模型,参考网络上教程在windows上安装配置遇到了不少问题,解决之后记录一下。
总体流程参考的这篇文章。但是完全照搬不行,具体细节有问题。

首先是软件版本问题,我的软件版本如下:
python 3.6
CUDA 10.0
CUDNN 7.4
tensorflow-gpu 1.14
关于这些配置可以参考之前的文章,连接在这


第一个遇到的问题tensorflow model版本选择问题,通过原博主给出的github连接进去,下载的是最新版的model2.3.0,但是最新版的测试文件有说明需要tensorflow2.*,我这安装的是1.14,所以第一次不能成功运行,又不想大改之前的配置,所以得找个支持tensorflow1.*的版本。最后找到了1.12版,连接:https://github.com/tensorflow/models/tree/r1.12.0
这个版本没记错应该是支持tensorflow1.9以上的?没细看。上github还是建议谷歌浏览器,IE是真的差劲。
protobuf我就下载的最新版,编译没有问题。
连接:https://github.com/google/protobuf/releases


版本选择正确后,按原博文继续。进入research文件夹编译.py文件:
protoc object_detection/protos/*.proto --python_out=.
编译完后进入到model下的research文件件运行测试文件:

python object_detection/builders/model_builder_test.py

第一次运行报错 "no module named 'object_detection’类似的,具体忘了是什么了,原因是因为原文少做了一步,除了要在系统变量里添加PYTHONPATH外,还需要在对应环境的site-packages文件夹里添加一个tensorflow_model.pth文件指明路径。比如我是在anaconda里创建了一个虚拟环境,就在找到对应的位置像这样:
C:\xxx\anaconda3\envs\xxx\Lib\site-packages
我是创建一个.txt文件,写好之后把后缀改成.pth就好了。内容还是那些内容。
在这里插入图片描述
但是添加之后又出错了,这次的报错信息是几条类似于下面的:

======================================================================
ERROR: test_create_ssd_inception_v2_model_from_config (__main__.ModelBuilderTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "object_detection/builders/model_builder_test.py", line 152, in test_create_ssd_inception_v2_model_from_config
    text_format.Merge(model_text_proto, model_proto)
  File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 536, in Merge
    descriptor_pool=descriptor_pool)
  File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 590, in MergeLines
    return parser.MergeLines(lines, message)
  File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 623, in MergeLines
    self._ParseOrMerge(lines, message)
  File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 638, in _ParseOrMerge
    self._MergeField(tokenizer, message)
  File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 763, in _MergeField
    merger(tokenizer, message, field)
  File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 837, in _MergeMessageField
    self._MergeField(tokenizer, sub_message)
  File "/usr/local/lib/python2.7/dist-packages/google/protobuf/text_format.py", line 730, in _MergeField
    (message_descriptor.full_name, name))
ParseError: 64:9 : Message type "object_detection.protos.Ssd" has no field named "use_expected_classification_loss_under_sampling".

======================================================================

google了好久没找到具体原因和解决办法,大概是因为编译的时候虽然没报错但是还是出错了,所以又重新编译了一次,protoc object_detection/protos/*.proto --python_out=.,问题解决。测试代码运行成功结果如下:
运行成功结果


最后是实例代码测试,本来以为没问题,结果在jupyter notebook上还能出问题。第一次运行的时候显示import tensorflow as tf失败,这个稍微想想可以理解,因为我的环境里没有装jupyter,我这时候运行的其实是base环境下的jupyter,并没有配置tensorflow。那就给自己的环境再装个jupyter吧。conda install jupyter notebook,然后又报错:
module ‘dateutil.tz’ has no attribute ‘UTC’
解决办法,卸载再安装模块:

pip uninstall python-dateutil 
pip install python-dateutil

最后最后,运行测试程序成功:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值