前言
鄙人跟着洪锦魁的《深度学习全书》第八章目标检测的教程来安装Object Detetcion,结果踩坑了,后来在找了一大堆资料和配坏了几个虚拟环境后,终于成功搭建了Object Detetcion,故写个博客来给自己做个备忘。(别问我为啥是tensorflow2.10,它装上就是tensorflow2.10了😂)
1、Conda环境搭建
新建一个Python3.7的Anaconda环境。
安装cudnn8.1和cudatoolkit11.2
conda install cudnn==8.1.0.77
conda install cudatoolkit=11.2
安装pycocotools
pip install pycocotools
2、下载模型
从Tensorflow Models GitHub(https://github.com/tensorflow/models)下载整个项目。
解压后重命名为models,并放入没有中文的路径内。例:D:\Project\pycharm\models
3、下载Protoc
从https://github.com/protocolbuffers/protobuf/releases处下载Protoc,我使用的是
,将其下的bin路径添加到环境变量中。例:
然后在第二步的models/research目录下使用命令行执行
protoc object_detection/protos/*.proto --python_out=.
4、添加环境变量
在Anaconda安装目录内Lib\site-packages路径下新建一个tensorflow_model.pth(命名随意,但是不能有中文,后缀一定要是.pth)输入models\research\slim和models\research的绝对路径。
5、安装
将models-archive\research\object_detection\packages\tf2下的 setup.py 复制到models-archive\research\,并在research目录下执行
python -m pip install .
6、测试
在research目录下执行python object_detection/builders/model_builder_tf2_test.py
测试安装是否成功。运行成功后效果如下图所示。
7、常见问题:
在执行python object_detection/builders/model_builder_tf2_test.py时报错
ImportError: cannot import name ‘builder’ from ‘google.protobuf.internal’ (C:\ProgramData\Anaconda3\envs\blog_use\lib\site-packages\google\protobuf\internal_init_.py)
解决方法:
先打开报错内的目录C:\ProgramData\Anaconda3\envs\blog_use\Lib\site-packages\google\protobuf\internal,可以看到目录内没有builder.py文件,此时需要先升级protobuf到新版,使用pip install --upgrade protobuf
升级,我这里升级到了4.21.10再次打开C:\ProgramData\Anaconda3\envs\blog_use\Lib\site-packages\google\protobuf\internal,可以看到builder.py已经出现。
先将其复制到其他地方,然后执行protobuf降级操作,使用pip install protobuf==3.19.6
将其降级到3.19.6,再打开C:\ProgramData\Anaconda3\envs\blog_use\Lib\site-packages\google\protobuf\internal,将刚刚复制的builder.py放入该文件夹。再次运行python object_detection/builders/model_builder_tf2_test.py
,此时可以看到错误消失,程序成功运行。