
2.7 安装TensorFlow Object Detection API框架
2.7.1 TensorFlow Object Detection API简介
TensorFlow Object Detection API是一个在TensorFlow基础上开发出来的用于计算机视觉领域实现在图像中检测并定位多个目标物体的软件框架。
基于TensorFlow Object Detection API开源软件框架,开发者可以快速地创建、训练和部署目标检测模型(Object Detection Model),如图2-47所示。

图2-47 TensorFlow Object Detection API开源软件框架
2.7.2 下载并安装
TensorFlow Object Detection API的下载安装步骤如下。
第一步,建立一个用于TensorFlow训练的文件夹目录结构,将所有基于TensorFlow训练的相关文件集中到一起,方便文件管理。
请读者新建一个文件夹tf_train,文件夹的名字可以根据自己的命名习惯来取。本书推荐tf_train。tf是TensorFlow的通用简称,train表明该文件夹用于管理训练相关的文件。
在tf_train文件夹下,创建一个名字为addons的文件夹,用于存放附加组件或其他软件工具;再创建一个名字为workspaces的文件夹,用于存放每一个具体项目的文件,如图2-48所示。

图2-48 tf_train文件夹
第二步,在tf_train文件夹中的空白处单击右键,在右键菜单中单击Git Bash Here,启动Git Bash。
由于TensorFlow Object Detection API的master分支不断在更新,为了保证读者能复现本书的操作,本书使用的TensorFlow Object Detection API的版本分支(Branch)是r1.13.0,链接为https://github.com/tensorflow/models/tree/r1.13.0。
在Git Bash中输入git clone命令,并加入参数-b r1.13.0,告诉git克隆r1.13.0分支。

下载TensorFlow Object Detection API的相关软件源代码,如图2-49所示。

图2-49 下载TensorFlow Object Detection API的软件源代码
下载完毕后可以得到一个models文件夹,请把models文件夹全部复制到tf_train文件夹下,这样文件夹结构如图2-50所示,完成TensorFlow Object Detection API的下载和安装。注意:若git下载速度太慢,请从本书提供的360云盘中获取。

图2-50 复制models到tf_train
2.7.3 安装依赖的python软件包
TensorFlow Object Detection API框架依赖的Python软件包见表2-2。
表2-2 依赖软件包及其用途

从Windows“开始”菜单启动Anaconda Navigator,在Environments选项卡处单击tf_gpu,先激活虚拟环境tf_gpu;然后再单击tf_gpu右边的绿色箭头,在弹出菜单中选择Open Terminal,然后在弹出的命令行终端中输入命令:

完成TensorFlow Object Detection API框架依赖的Python软件包的安装,运行结果如图2-51所示。

图2-51 安装依赖软件包
2.7.4 配置环境变量
为了让Python能找到TensorFlow Object Detection API依赖的软件模块,需要给Python的模块搜索路径变量PYTHONPATH添加三个路径,如下所示。

将<PATH_TO_TF>替换为tf_train文件夹所在的绝对路径,例如,本书中tf_train文件夹所在的绝对路径是D:\,那么就把<PATH_TO_TF>替换为D:\,替换结果如下。

通常情况下,Windows的系统变量中是没有PYTHONPATH的,需要用户新建一个,具体步骤如下。
第一步,在Windows任务栏的搜索框中输入“环境变量”,接着在搜索结果中单击“编辑系统环境变量”,启动“环境变量”窗口,如图2-52所示。

图2-52 启动“环境变量”窗口
第二步,在“环境变量”窗口单击“新建”按钮,然后在弹出的“新建系统变量”窗口的“变量名”输入栏中输入“PYTHONPATH”;在“变量值”输入栏中输入:

最后单击“确定”按钮,完成环境变量配置工作,如图2-53所示。

图2-53 设置PYTHONPATH变量
2.7.5 安装COCO API
TensorFlow Object Detection API默认评估指标是Pascal VOC,若希望使用COCO评估指标,则需要安装pycocotools,具体步骤如下。
第一步,下载并安装Visual C++ 2015编译工具visualcppbuildtools_full.exe,下载链接为https://go.microsoft.com/fwlink/?LinkId=691126。
第二步,在addons文件夹的空白处单击右键,在右键菜单中单击Git Bash Here,启动Git Bash,然后在Git Bash中输入命令:

下载cocoapi源代码,如图2-54所示。

图2-54 下载cocoapi源代码
下载完毕后,文件夹目录结构如图2-55所示。

图2-55 cocoapi的目录结构
第三步,在Windows任务栏的搜索框中输入“Anaconda Prompt(Anacona3)”,在搜索结果中右键单击Anaconda Prompt(Anacona3),在右键菜单中选择“以管理员身份运行”,启动Anaconda命令行终端,如图2-56所示。

图2-56 以管理员身份运行Anaconda Prompt
然后输入命令:

激活tf_gpu虚拟环境,并输入命令“d:”,进入d盘,再输入命令:

进入PythonAPI文件夹,最后输入命令:

完成COCO API的安装,如图2-57所示。

图2-57 安装COCO API完成
第四步,在安装好COCO API的命令行终端里输入命令“python”,启动Python环境,然后输入语句“import pycocotools”,若import成功,则说明COCO API安装成功,如图2-58所示。

图2-58 import pycocotools成功
2.7.6 编译proto文件
Tensorflow Object Detection API框架使用protobuf工具来配置模型和训练参数。protobuf工具在2.5.2节用命令conda install tensorflow-gpu=1.13.1安装TensorFlow时,被conda附带安装过了,可以用命令conda list查看确认。
在运行Tensorflow Object Detection API框架前,必须编译proto文件。请进入models\research文件夹(D:\tf_train\models\research),在文件夹地址栏中输入“cmd”,启动Windows命令行终端,然后输入命令:

激活tf_gpu虚拟环境,最后输入命令:

完成对proto文件的编译,如图2-59所示。

图2-59 编译proto文件
2.7.7 测试安装
至此,TensorFlow Object Detection API框架及其依赖项就安装完毕了,接下来的工作是测试其是否已经安装成功,具体步骤如下。
第一步,从TensorFlow预训练模型库

中下载模型ssd_inception_v2_coco,如图2-60所示。

图2-60 ssd_inception_v2_coco
第二步,模型下载后,得到文件ssd_inception_v2_coco_2018_01_28.tar.tar,直接将其解压,如图2-61所示。

图2-61 解压ssd_inception_v2_coco_2018_01_28.tar.tar
第三步,将解压缩出来的文件夹ssd_inception_v2_coco_2018_01_28复制到D:\tf_train\models\research\object_detection文件夹中,如图2-62所示。

图2-62 复制文件夹ssd_inception_v2_coco_2018_01_28
第四步,将本书附带的object_detection_example_1.py(从本书提供的360云盘中获取)复制到object_detection文件夹。
第五步,修改D:\tf_train\models\research\object_detection\utils文件夹中的visualization_utils.py文件。请将visualization_utils.py文件的第26行import matplotlib;matplotlib.use ('Agg') 注释掉,如图2-63所示。

图2-63 注释掉import matplotlib;matplotlib.use ('Agg')
第六步,进入object_detection文件夹,在文件夹地址栏中输入“cmd”,启动Windows命令行终端,然后输入命令“conda activate tf_gpu”,激活tf_gpu虚拟环境,最后输入命令“python object_detection_example_1.py”,如图2-64所示。

图2-64 运行object_detection_example_1.py
若弹出如图2-65所示两张识别成功的图片,说明TensorFlow Object Detection API框架及其依赖项已经安装成功,可以支持训练自己的目标检测模型了。

图2-65 object_detection_example_1.py运行结果