2017-10-23更新:YOLO运行环境,CUDA 8 + cuDNN5, 如果使用cuDNN6,编译都不通过。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
初次使用YOLO,记录一下。
0、源码下载,并修改
官网:https://pjreddie.com/darknet/yolo/
1、修改example/darknet.c文件的第424行,将“cfg/coco.data”改为“cfg/voc.data”,如下,
这一步如果不修改,最后执行darknet命令去检测的时候,得到的BoundingBox显示的类名会跟实际检测到的物体“风马牛不相及”。
2、如果已经安装有cuda和cudnn,先修改Makefile文件的第一行和第二行,0改为1,
执行make,得到的darknet执行文件支持cuda和cudnn。
下面开始进入正题
1、准备数据集
准备数据是最难的一步了,我们说的详细些。
最终目的,要得到两个文件:label.txt(标签文件?标注文件?)和train.txt(包含所有训练图片的绝对路径)。
有的文档会说到第三个文件valid.txt(验证文件?测试文件),因为我们只需训练,所以valid.txt我们不需要。
我用了两种方法来准备数据,本篇文章只说一种,第二种方法在此(链接)。
因为YOLO使用的是VOC数据集,所以我们仿照VOC2007数据集文件层级结构来进行。
1.1 建立VOC数据集文件层级结构
因为要用到YOLO自带的voc_label.py文件,其位于darknet/scripts目录下,强烈推荐读一下该文件。
功能一:把标注工具得到的xml文件转为label.txt;功能二