在上一篇中我们已经搭建好了TensorFlow Object Detection API所需的环境,现在我们就可以构建自己的模型了,在构建自己的模型之前可以考虑需要用什么模型进行训练和之后进行预测,在这里又要祭出上一篇文章中的模型列表图了,我们可以从下图中找到自己所需要的模型下载,本文选用ssdlite_mobilenet_v2_coco进行训练,大家可以下载其它自己需要的模型进行训练。
1. 构建自己的数据集
在开始训练之前我们需要构建自己的数据集,我们首先看一下官方对数据集的要求(接下来就该上图了)。
官方要求如上图,我们需要注意的是我们图片的格式需要为JPEG或者PNG,简单来说就是我们图片的后缀只能为jpg、jpeg或者是png,所以在准备图片的时候我们需要注意这些至于第二点则是对你标注的框的要求,这个我们可以不用太担心,因为我们利用工具标注出来的图片是可以满足这个要求的。
下面我们就可以开始准备自己的数据集了,小编在images2中trim目录下保存了9张wuli 颖宝的照片,在eval下保存了三张颖宝的照片,然后我们开始标注自己的数据集,首先我们下载一个LabelImg(注意哦这里是LabeLimg不是labeLLmg哦)的小工具,注意下载这个工具的路径不能有中文,如果大家去搜索的话将会是一些编译安装的一些教程在这里给出直接课运行版本的下载链接有兴趣的朋友可以进去下载使用链接如下:https://tzutalin.github.io/labelImg/
下载好后我们就开始用这个小工具给自己标注数据,打开界面如下,我们选择Open Dir打开我们保存图片的目录,然后点击选择目录,之后就可以开始标注自己的图片了我们再设置一下保存目录即Change Save Dir选择和图片所在的同一目录即可。然后我们将输入法切换为英文输入模式,按下W然后会出来一个十字架之后拖动十字架构成一个方框将要标注的目标框起来然后输入目标的名称,因为没测试过是否可以输入中文所以建议大家还是输入英文或者拼音,然后按Ctrl + S保存。
标注好数据之后我们需要将数据集转换为TensorFlow可以识别的TFRecord格式,关于这个可以参考https://blog.csdn.net/dy_guox/article/details/79111949这篇博文,在这里也是借用这篇博文中已经给出的方法来进行数据集的转换。
首先按照博文中的代码我们先将xml图片集转换为csv文件注意要将路径修改为标注的数据集所在的目录,然后将CSV文件移到object_detection下的data目录,按照博文中的CSV转TFRecord 代码(这个代码要保存在objec_detection目录下)运行一遍,类标也要修改为自己的如下图1,注意需要修改图片的路径即如下图2所示代码将图中的images可以替换成我们存储图片的目录在这里我是images2所以改成images2但是因为我们又分了trim和eval目录所以需要在那里分别添加trim和eval分两次运行,如下图3和图4所示,先按照图3修改然后打开Anaconda Prompt(虚拟环境则为Anaconda Prompt(tensorflow))运行,如图5所示运行一遍,然后按照图4修改按照如图6所示运行一遍,这样就不会遇到如7示错误,成功后就可以进行下一步了。
图1
图2
图3
图4
图5
图6