1.首先进行物体标注
本次流程使用的是LabelImage软件,进行标注,此次标注了person以及dog两类,每类各有200张图片(图片比较少,只是为了实验流程),标注完以后产生对应的.xml文件,随后创建文件夹VOC2007,并在此文件夹下按照PASCAL VOC数据集的格式创建文件夹(主要用到三个文件夹:Annotations(标注的xml文件),ImageSets,(创建Main文件夹(若只训练就创建train.txt文件(里面是图片的名称)))JPEGImages)。
文件夹的格式如图所示:
2.xml文件转化为txt文件的形式
将上述标注好的图片放入JPEGImages文件夹下,将标注好的文件.xml文件放入Annotations文件夹下,使用darknet下的voc_label.py文件进行转换。
在使用voc_label.py文件的时候,首先要改掉sets以及类别,如果我们使用的是PASCAL VOC标准数据集,那么我们只要注意到路径就可以,上面博文我已经详细的介绍了该整个流程。
以及
只需要注意这两张图片的路径即可,看懂代码理解便会更好一点。
3.配置文件以及Training
(1)上述voc_label.py文件会将xml文件转为txt文件并存储在VOC2007的Label文件夹下。(即这是我们训练所需要的目标位置信息)
(2)上述voc_label.py文件会生成一个2007_train的txt文件,该文件下存储的是我们所要求的所有图片的路径信息,即为我们配置文件中train的设置提供了条件.(此操作皆是在darknet文件夹下的scripts下进行的)
(3)在cfg文件下,创建我们所要的obj.data,obj.names以及配置文件yolo_voc.cfg(这个配置文件我们需要为不同的数据集,不同的分类作更改).
obj.data下写的是:
obj.names下存放的是分类的种类类别
配置文件yolo_voc.cfg训练的配置文件:训练的时候需要根据的是自己的电脑设置batch_size以及subdivision,我使用的是1080TI,batch_size=64,subdivision=8,在最后设置filter以及classes的个数.随后更改MakeFile里面的配置,若使用GPU加速,则将GPU以及CUDNN设置为1,若有需要需要更改nvcc的位置信息。
重新进行编译,然后进行训练:./darknet detector train cfg/obj.data cfg/yolo-voc.cfg 可以加入Pre-trainning的参数,下载网站我前面几个已经展示了,随后进行训练。