前言:
前面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框架及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版本)
以下是上面网址打开后的页面展示:
本系列教程提供的“models-r1.13.0.zip”压缩包,便是r1.13.0版本的压缩包。
网页下拉到该位置,点击tensorflow detection model zoo。
然后会跳转到下一个页面:这里就有预训练模型,按需下载。
预训练模型压缩包里包含了checkpoint文件和pb文件,还有配置文件,如下图:
2.修改模型配置文件内容
为何要修改配置文件内容?
首先,训练自己的数据集,需要给模型配置文件提供数据集放置的位置。其次,如果有想法,可以在基础的配置文件上修改优化器或者模型结构。再来,如果显存或内存不足,可以在里面修改batch_size。
如果需要使用不同的模型,则选用相应的配置文件,建议复制一份到其他文件夹,更改配置名称,以便与原版配置文件作区分:
示例:假如我要使用rfcn_resnet101 这个模型,建议复制一份:
并打开该配置文件,然后对以下内容进行修改:
如何修改,可以参考之前步骤中示例的模型配置文件:
修改后如下图:
至此,修改完成。
3.测试
测试的命令与“step1-Anaconda & Tensorflow安装教程”中下图位置的步骤一样,不过要修改命令:
2022.02.21更新
不知道为什么用model_main.py会卡住在这里不动然后报错,用legacy/train.py,就没问题
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
则检查配置文件的路径有没有错误:常见的是相对路径出错不过这里是因为没有配置预训练模型的路径所以导致出错
可以选择注释掉不用预训练模型并且from_detection_checkpoint设置为false
,如下图:
或者把存放预训练模型的位置放进去。
重新输入训练命令进行训练,出现loss,step,则表示成功修改了配置文件,并已经开始进行训练。
自此,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文件(省略了编译的过程,方便初学)。文件如下图所示:
如果需要下载其他版本,在如下图红框安装步骤之前重新编译.proto,下文会介绍编译方法。
编译.Proto的步骤介绍:
打开protobuf的github网站下载相应的文件,链接如下:
https://github.com/protocolbuffers/protobuf/releases
如果你是windows系统,则下载下列文件
(32位系统下载win32,64位系统下载win64)
打开已经下载好的压缩包,把bin文件夹里的protoc.exe放到C:\Windows文件夹里:
然后重新打开一个cmd,输入protoc,回车,如果如下图所示,即准备就绪。
cmd中,激活环境,切换到“…/research”作为当前工作目录,然后输入以下命令:
protoc object_detection/protos/*.proto --python_out=.
然后如下图所示:
如果回车后没有任何错误提示,如下图所示:
并且会在“…/research/object_detection/proto中”生成下图内容(.py文件):
则表示已经成功,可以继续进行下续install步骤(对tensorflow object detection API进行安装)。