前言:

前面part1~part2已经把环境安装、模型训练这一套流程介绍了一次。该教程介绍如何更换一个模型去训练数据。


教程结构:

本教程分为三个步骤:

1.寻找模型配置文件以及其预训练模型
2.修改模型配置文件内容
3.测试

4.后记:假如需要使用tensorflow2.0的模型(环境安装的一些注意事项!!!!)


1.寻找模型配置文件以及其预训练模型

Ⅰ.寻找模型配置文件

相关模型配置文件可以在models-r1.13.0.zip的“…/research/object_detecion/samples/configs”里面找到。

models-r1.13.0.zip 可以在我github上Clone下来,链接:
https://github.com/HelloSZS/models-r1.13.0

tensorflow savedmodel打分测试_深度学习

Ⅱ.寻找预训练模型

因为使用tensorflow框架及tensorflow object detection API进行模型训练,因此在Tensorflow的github网站上可以寻找预训练模型。

使用预训练模型可以加快模型训练收敛速度,其实也可以选择不使用预训练模型。

Tensorflow object detection API的github网址:
https://github.com/tensorflow/models/tree/r1.13.0/research/object_detection

因为使用tensorflow1.0,因此选择了Tensorflow object detection API(r1.13.0版本)

以下是上面网址打开后的页面展示:

tensorflow savedmodel打分测试_配置文件_02


本系列教程提供的“models-r1.13.0.zip”压缩包,便是r1.13.0版本的压缩包。

tensorflow savedmodel打分测试_深度学习_03

网页下拉到该位置,点击tensorflow detection model zoo。

tensorflow savedmodel打分测试_配置文件_04

然后会跳转到下一个页面:这里就有预训练模型,按需下载。

tensorflow savedmodel打分测试_深度学习_05

预训练模型压缩包里包含了checkpoint文件和pb文件,还有配置文件,如下图:

tensorflow savedmodel打分测试_tensorflow_06


2.修改模型配置文件内容

为何要修改配置文件内容?

首先,训练自己的数据集,需要给模型配置文件提供数据集放置的位置。其次,如果有想法,可以在基础的配置文件上修改优化器或者模型结构。再来,如果显存或内存不足,可以在里面修改batch_size。

如果需要使用不同的模型,则选用相应的配置文件,建议复制一份到其他文件夹,更改配置名称,以便与原版配置文件作区分:

tensorflow savedmodel打分测试_目标检测_07


示例:假如我要使用rfcn_resnet101 这个模型,建议复制一份:

tensorflow savedmodel打分测试_配置文件_08


并打开该配置文件,然后对以下内容进行修改:

tensorflow savedmodel打分测试_深度学习_09


如何修改,可以参考之前步骤中示例的模型配置文件:

tensorflow savedmodel打分测试_深度学习_10


修改后如下图:

tensorflow savedmodel打分测试_github_11


至此,修改完成。


3.测试

测试的命令与“step1-Anaconda & Tensorflow安装教程”中下图位置的步骤一样,不过要修改命令:

tensorflow savedmodel打分测试_目标检测_12


2022.02.21更新

不知道为什么用model_main.py会卡住在这里不动然后报错,用legacy/train.py,就没问题

tensorflow savedmodel打分测试_配置文件_13

2022.1–原本:

python model_main.py --logtostderr --train_dir=training/ --pipeline_config_path=images/object/ssd_mobilenet_v2_coco.config

2022.02.21更新, 原本:

python legacy/train.py --alsologtostderr --train_dir training/ --pipeline_config_path images/object/ssd_mobilenet_v2_coco.config --num_train_steps=60000 --num_eval_steps=20

其中:ssd_mobilenet_v2_coco.config,修改成:rfcn_resnet101_coco.config

2022.1–即变成:

python model_main.py --logtostderr --train_dir=training/ --pipeline_config_path=images/object/rfcn_resnet101_coco.config

2022.02.21更新,即变成:

python legacy/train.py --logtostderr --train_dir=training/ --pipeline_config_path=images/object/rfcn_resnet101_coco.config

如果出现:Windows fatal exception: access violation

tensorflow savedmodel打分测试_tensorflow_14


则检查配置文件的路径有没有错误:常见的是相对路径出错不过这里是因为没有配置预训练模型的路径所以导致出错

tensorflow savedmodel打分测试_深度学习_15


可以选择注释掉不用预训练模型并且from_detection_checkpoint设置为false,如下图:

或者把存放预训练模型的位置放进去。

tensorflow savedmodel打分测试_github_16


重新输入训练命令进行训练,出现loss,step,则表示成功修改了配置文件,并已经开始进行训练。

tensorflow savedmodel打分测试_目标检测_17


自此,Tensorflow Object detection API Win10使用教程全部结束。


4.后记:假如需要使用tensorflow2.0的模型

如果后续需要选择其他版本的Tensorflow object detection API(例如r2.0版本),则需要注意去创建新的anaconda环境再安装tensorflow2.0版本,以及相应的tensorboard/tensorflow-estimator版本。

tensorflow2.0版本安装过程与1.0一样,只需要在“step1教程”的相应步骤更改部分命令参数(例如: conda install tensorflow==1.15.1改成 conda install tensorflow==2.0.0)。并且网上查找tensorflow与cuda/cudnn版本兼容的列表(可以上tensorflow官网查找),看是否需要修改cuda/cudnn版本。

还要注意的一点,本系列教程提供的“models-r1.13.0.zip”压缩包已经对.proto文件进行过编译,生成了.py文件(省略了编译的过程,方便初学)。文件如下图所示:

tensorflow savedmodel打分测试_配置文件_18

如果需要下载其他版本,在如下图红框安装步骤之前重新编译.proto,下文会介绍编译方法。

tensorflow savedmodel打分测试_深度学习_19


编译.Proto的步骤介绍:

打开protobuf的github网站下载相应的文件,链接如下:
https://github.com/protocolbuffers/protobuf/releases

如果你是windows系统,则下载下列文件

(32位系统下载win32,64位系统下载win64)

tensorflow savedmodel打分测试_配置文件_20

打开已经下载好的压缩包,把bin文件夹里的protoc.exe放到C:\Windows文件夹里:

tensorflow savedmodel打分测试_tensorflow_21


然后重新打开一个cmd,输入protoc,回车,如果如下图所示,即准备就绪。

tensorflow savedmodel打分测试_目标检测_22


cmd中,激活环境,切换到“…/research”作为当前工作目录,然后输入以下命令:

protoc object_detection/protos/*.proto --python_out=.

然后如下图所示:

tensorflow savedmodel打分测试_github_23


如果回车后没有任何错误提示,如下图所示:

tensorflow savedmodel打分测试_目标检测_24

并且会在“…/research/object_detection/proto中”生成下图内容(.py文件):

tensorflow savedmodel打分测试_深度学习_25

则表示已经成功,可以继续进行下续install步骤(对tensorflow object detection API进行安装)。

tensorflow savedmodel打分测试_目标检测_26