这篇文章主要为刚入门目标检测的人提供一些tensorflow/models模块中object_detection的使用步骤。
1.数据准备
首先需要有训练用的数据集,可以下载网上的开源数据,也可以自己制作。自己制作通常使用LabelImg工具地址:https://github.com/tzutalin/labelImg.git label尽量使用英文。使用LabelImg工具标注产生xml文件,每个xml文件对应一个图片文件,每个xml文件里面包含图片中多个物体的位置和种类信息。
然后,还需要建立一个labels_items.txt文档用来声明模型输出的数字跟分类类别对应的关系。书写格式如下:
最后把训练用的图片,制作的xml文件和labels_items.txt放在一个单独的文件夹里,这样数据准备工作就ok了。
2.创建训练数据
object_detection/dataset_tools/ 文件下自带了一些生成tfrecord的py文件。也可以先把xml文件转换为csv文件,再将csv文件转换为tfrecord文件,可参考目标检测第2步-数据准备
注: 1.在生成数据之前,说明一下。因为用的object_detection需要用到同级目录slim里面的东西,所以需要先设置环境变量,把slim的路径加上
export PYTHONPATH=$PYTHONPATH:./models/research:./models/research/slim:
./models/research/object_detection
其实加前两个就可以了,最后这个可以不加。这里用的是相对路径,也可以改成绝对路径。
有时候加上这个路径也还会出错
然后你可以在报错的文件加上
2.object_detection里使用proto buffer定义了一些class,这些proto buffer需要预先编译成python代码,如果没有编译,在使用object_detection时会出现如下报错
解决方式是直接在research目录下运行如下代码
sudo apt install protobuf-compiler
pro