用YOLOv3训练WIDER_FACE数据集

- 刚开始想训练的时候忘了百度一下没有没可以直接转换的脚本。。。就自己写了。。。
- 后来发现网上的转换脚本基本都是把 WIDER_FACE先转换成VOC再用yolo提供的准换工具,转成yolo所需格式。。。
- 自己写的是直接转成yolo所需的格式的,版本python3.6
GitHub地址:https://github.com/xp56/WIDER_FACE_data_conversion_for_YOLOv3

- 我个人喜欢写东西的时候把中间结果存成文件...

- 这样的话我可以把工作分成一段一段的......不容易弄混......如果不习惯的话可以把它改成一个文件。

---

训练时用

- data_conversion.py是将wide_faced的标注数据集转成yolov3所需要的标签。
- 每个图片转成对应名称的标签
- 由于yolov3需要的是归一化之后的中心坐标和W,H所以在转换方法中进行了归一化和数据转换

- train_list.py将标注文件转成yolov3所需要的train_list,valid_list也是用这个

- (注:如果你得到的train_list.py在训练时一直报错说找不到对应图片,先检查图片是否存在。然后注意转换文件的类型,是否是nux格式,notepad非常方便的查看,显示出所有字符,看一下行尾是不是LF!!!这个坑坑了我好半天!)


---

测试时用

- model_out_clean.py是将yolov3输出的valid文件进行class 值的筛选通过改变不同的阀值可以得到PR图

- model_out_convert.py是将model_out_clean.py的输出转化成wide_face数据格式,方便进行IOU计算

- count_IOU.py是进行检测结果与标注结果的IOU计算,并得到精确率召回率
- text.py用来测试模型效果的,把框画到原图上


在训练时还遇到一个大坑,就是我的cuda和cudnn不在默认安装的位置。刚开始总是不能编译。。。(我是小白,不太懂Makefile)

用YOLOv3训练WIDER_FACE数据集_第1张图片

将这两个地方改成自己的

其他的地方就跟训练单类没有区别了。

cfg文件里 yolo层之前的的那一层 filters改成18 (1+5)*3 一共是三个地方。

batch和subdivisions修改成 64 和 8 如果训练时显存溢出就增大subdivisions

用YOLOv3训练WIDER_FACE数据集_第2张图片

用YOLOv3训练WIDER_FACE数据集_第3张图片



参考资料

官网  https://pjreddie.com/darknet/yolo/

大牛博客 https://blog.csdn.net/lilai619/article/details/79695109

你可能感兴趣的:(用YOLOv3训练WIDER_FACE数据集)