**
基于Tensorflow 2.X安装Object Detection API(Win 10 平台)
Tensorflow平台是谷歌开发并推出的一套开源软件库,是一套专门用于机器学习的平台。经过多年来的版本迭代更新和无数机器学习相关的研究人员的维护和贡献,Tensorflow已经推出了第二个大版本更新,即Tensorflow 2.0。而随着这个大版本的推出,其中常用的目标检测模块的安装也产生了一些改变。今天我来谈谈我安装基于tf2版本的Object Detection API 的安装过程。
一、平台配置
- 系统:win 10 1909
- 内存:16GB
- CPU:I7-7700HQ
- GPU:GTX-1050TI 4GB
二、软件版本
- 环境管理:Anaconda 3 64-bit
- Python版本:3.6.5
- Protobuf版本:3.13.0
- C++平台:Visual Studio 2019 专业版
- CUDA版本:10.0
- cudnn版本:7.6.0
- Tensorflow版本:Tensorflow-gpu 2.2.0
关于软件版本的选择,不建议选用最新版本。关于GPU版本的CUDA和cudnn的对应关系,我引用谷歌官方提供的数据见下面两张图。
CPU
GPU
数据引用链接:https://tensorflow.google.cn/install/source_windows#cpu
不知道是什么原因,官方并没有给出最新几个版本的对应关系。我在上面提供的软件版本经过调试时可以使用的,供大家参考。
三、安装流程
1、安装Anaconda 3
下载链接:https://www.anaconda.com/products/individual
根据自己的需求和平台下载对应版本的Anaconda进行安装
2、安装Visual Studio
安装VS的目的就是提供C++的编译环境,所以在安装过程中只需要勾选C++进行安装就好。
3、下载CUDA和cudnn并安装
CUDA下载链接:https://developer.nvidia.com/cuda-toolkit-archive
点击需要下载版本
选择对应平台下载。cudnn下载链接:https://developer.nvidia.com/rdp/cudnn-archive
根据CUDA版本选择下载对应版本的cudnn。
解压cudnn可以得到三个文件夹bin、lib、include,将这三个文件夹复制到CUDA的安装目录下(CUDA的默认安装目录是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0)。
至此CUDA和cudnn的安装就完成了,打开命令提示板,输入nvcc -V,如果能够正常显示出CUDA的版本,即安装成功。
注意:
- 在安装CUDA之前需要先安装Visual Studio平台,应为在安装CUDA的过程中会检测平台中的Visual Studio版本,并安装对应的支持组件。
- 在安装CUDA的过程中,如果本机已经安装了N卡的驱动,在安装开始阶段选择自定义安装,并在安装组件中取消显卡驱动安装,这样可以避免被老版本驱动覆盖。
4、创建编译环境
在Anaconda中创建一个编译环境用来安装Tensorflow相关的依赖包和组建。常见的创建环境的方法有一下两种。
1)Anaconda Navigator
直接通过Anaconda自带的图形管理界面Anaconda Navigator安装。选择Environment标签,单击左下角的create选项,输入新建环境的名称,选择该环境所需的python版本。
2)命令提示板
打开命令提示板,并输入一下命令
conda create --name tf python==3.6.5
其中‘–name’后面的是创建环境的名称。
在环境创建完成后,在命令提示板中输入:activate 环境名称,来激活刚才创建的环境。
我这里指定的python版本为3.6.5,根据自己需要来选择python版本。不推荐使用最新的python版本,因为会出现相关软件包不兼容或者一些其他的位置问题。
5、安装TensorFlow及相关依赖包
通过一下命令进行安装
pip insall tensorflow_gpu
如果想要指定安装的tensorflow_gpu的版本,可以在上述命令末尾添加‘== 需要的版本号’,如下
pip install tensorflow_gpu==2.2.0
如果不指定安装版本,则默认安装最新版本。
在安装过程中如果出现提示缺少什么依赖包,也通过‘pip install 包名’的方式进行安装。
其中pycocotools这个依赖包比较特殊,不能通过pip install 的方式进行安装,因为这个依赖包官方只提供了linux版本的,并没有win平台的,但是有人对这个依赖包进行了编译和修改,可以通过以下命令在win平台上进行安装:
pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
6、安装配置Protobuf
下载链接:https://github.com/protocolbuffers/protobuf/releases
在上述连接中选择平台对应的文件进行下载,并解压到任意目录下。
解压后会的得到两个文件夹bin和include,将bin文件夹下的protoc.exe复制到‘C:\Windows\System32’目录下。打开命令提示板,并输入‘protoc’,出现如下提示,即安装成功。
7、下载Tensorflow models并进行编译
下载链接:https://github.com/tensorflow/models
下载并解压到任意目录下。
进入到‘models/research’路径下,输入以下命令
protoc object_detection/protos/*.proto --python_out=.
如果未出现报错,即编译成功,此时进入‘models/research/object_detection/protos’目录下即可看到每一个.proto文件都有一个对应的.py文件,如下图所示
8、其他
进入’models/research/packages/tf2/'目录下运行以下命令安装‘object_detection’包
python setup.py build
python setup.py install
执行完之后,通过pip list
查看安装列表,如果在其中看到‘object_detection’即表示安装成功。
9、测试
进入‘models/research’目录下,运行以下命令
python object_detection/builders/model_builder_tf2_test.py
如果返回的结果为OK,即表示安装成功。
至此基于tensorflow 2.X的object_detection API的安装就完成了。
10、问题
1)ModuleNotFoundError: No module named ‘object_detection’
在安装和测试的过程中如果出现如下图的报错
需要在你的Anaconda安装目录下找到当前环境的目录,以本机为例,我的Anaconda安装在E盘,当前激活的环境为‘tf2’,即我需要进入到‘E:\Anaconda3\envs\tf2\Lib\site-packages’目录,在这个目录下新建一个名为‘tensorflow_models’的文本文件。打开该文件,在其中输入以下两个路径
即你models目录下的research文件夹和该文件夹下slim文件夹的路径。保存之后,将‘tensorflow_models’文本文件的.txt后缀修改为.pth后缀。做完以上操作之后,关闭当前的命令提示板,继续进行安装和测试进程,就不会再出现上述问题了。
2)ModuleNotFoundError: No module named ‘dataclasses’
在执行最后的测试脚本的过程中,可能会出现这个问题。
这个问题是我之前安装和检测过程中没有遇到的问题,解决办法很简单,直接通过
pip install dataclasses
进行安装就好。本着好奇的心态,我在GitHub上看到有人解释说这个问题是由于python版本引起的,如果版本在3.7以上,就不会出现这个报错。我没有测试这个说法的正确性。姑且把这个当做是答案吧。
https://github.com/fastai/fastai/issues/867
好了,至此我就把tensorflow 2.X版本的安装过程以及我在安装过程中遇到的问题都讲解完了,希望对大家有所帮助。如果在安装的过程中遇到了什么问题,欢迎在留言区留言,能力范围之内的,尽力给大家解答。
PS 真的不建议大家安装2.X版本的tensorflow,很多基于tensorflow的工程和程序都不支持2.X版本。或许这个版本新增了很多特性和功能吧,但是感觉还不是很成熟,在我安装和运行的过程中,经常会遇到一些莫名其妙的报错,甚至很多库都还不支持2.X版本的tensorflow。所以如果是尝鲜的话是可以,但是要是基于这个大版本进行开发的话,除非是大神,否则的话笔者是不建议的。无论是从库的支持程度来说,还是从运行的稳定程度来说1.X版本的tensorflow都还是现在首选的。