YOLOv2目标检测_单目标_训练自己数据全过程(自用)

1.    制作符合要求的VOC数据集

目标:制作如下格式的文件夹

格式:

--VOC2017(大写字母+数字)

--Annotations(存放储存标注信息的xml)

--ImageSets

--Main(存放储存图片名的train.txttest.txt)

--Layout

--JPEGImages(存放图片)

1.1 整理图像

使用TotalCommander的批量重命名,将图片按数字序号重命名,并存储一文件夹下(路径中不能有数字)。

1.2  标注图像

使用InputRectangle.exe对图片进行标注,最终得到包括标注位置信息的list.txt。

不用labelImg的原因:labelImg标注速度较慢,操作量大时效率不高。

1.3 生成xml

      将List.txt放在txtandxmlcpp工程目录下,修改main.cpp中相应路径和信息,运行,可自动生成xml到Annotations文件夹下,自动选出有标注信息的图片复制到JPEGImages文件夹下。

1.4 生成train\test.txt

根据JPEGImages文件夹下的图片数,按比例输出训练集和测试集的图片名(不带后缀名),存在一个txt中。运行trainandtest工程即可。并将train.txt、test.txt放在main文件夹下。

 

至此VOC格式数据集已制作完成。

 

2.    使用YOLO训练VOC数据集

目标: 得到训练好的权重文件

 2.1 预处理

将制作好的VOC数据集转换成YOLO需要的包含label信息的txt。使用WinSCP将VOC数据集传送到darknet/scripts/VOCdevkit下。修改scripts下的voc_label.py,并执行,即可生成对应的label信息,并生成完整路径的图片信息。

 2.2  训练调参数

训练前需要修改

data/voc.names

cfg/voc.data

cfg/tiny-yolo-voc.cfg(使用其他模型同理)

2.3  训练、等待

执行:./darknetdetector train cfg/voc.data cfg/tiny-yolo-voc.cfg

等待


 3.    检测训练结果

3.1 单张检测

./darknet detector test cfg/voc.datacfg/tiny-yolo-voc.cfg results/tiny-yolo-voc_final.weights data/xxxxx.jpg -thresh0.25

3.2 批量检测

修改example/detector.c下recall函数中的list路径(包括检测图片的路径),一级对应的阈值thresh。

因为修改了detector.c所以需要在darknet目录下重新make一下。然后执行下面的指令:

./darknet detector recall cfg/voc.datacfg/tiny-yolo-voc.cfg results/tiny-yolo-voc_final.weights data/xxxxx.jpg -thresh0.25

 

 

你可能感兴趣的:(yolo)