从今年四月份开始报名参加了软件杯,参赛题目是基于人工智能和机器视觉的安全帽提取和分析。因为这个题目有幸接触到了yolov2–实时目标检测框架。
关于yolov2的介绍各位只要去上网搜一下就可以查到很多相关资料介绍。今天详细介绍一下如何用yolov2训练自己的数据。
官方提供的windows下的训练教程
以下是训练详细步骤
-
下载yolov2代码
yolov2 代码网址 -
配置yolov2环境:vs2015+opencv3.4+cuda8.0+cudnn7
(1)步骤1完成之后在darknet目录下找到darknet.sln,用VS2015打开之后darknet.sln后导入opencv(导入opencv教程)
(2)接下来导入cuda8.0.由于官方建议的是cuda9.1版本,如果不是使用该版本应该先打开darknet.vcxproj修改第55行和第288行将CUDA 9.1.targets改为CUDA 8.0.targets,保存。(vs2015配置cuda教程)
(3)上面的步骤如果都配置成功之后,在release X64的环境下点击生成选项下面的重新生成解决方案,然后经过一段时间(一两分钟)的编译后生成对应的darknet.exe(在build\darknet\x64) -
准备自己的数据集
(1) 将自己的数据集图片标注:标注软件LabelImage 下载地址
标注完成之后会生成对应的xml文件,使用LabelImage标注后的xml格式
这时候还需要用另外的工具(如何转换?)将xml转换为txt格式才行。
最后转换后的txt格式:
(2) 将对应的xml文件转换为txt文件之后,将图片与txt文件放在 这个目录下。
(3)修改对应的配置文件:
复制yolo.2.0.cfg文件并命名为yolo_obj.cfg(注意最好不要直接修改yolo.2.0.cfg文件,以便日后可以作为参考),并修改两处地方:
修改230行的classes,其中classes为你标注的目标的种类数(我这里标注了三类)
修改224行的filters, filters的计算公式=(classes+5)* 8 所以这里为40。
修改完毕后保存即可。
接下来创建obj.names和obj.data,内容分别为:
obj.data
其中上图中的train.txt为训练集的存放路径文件,test.txt则为预测用的数据集存放路径,格式为:
data/obj/851.jpg
data/obj/852.jpg
data/obj/853.jpg
data/obj/854.jpg
data/obj/855.jpg
obj.names
4. 开始训练
(1)如果第2步的环境配置成功,则相应的会生成darknet.exe。通过win+R打开cmd,进入对应的目录后,执行命令
darknet.exe detector train data/obj.data yolo-obj.cfg darknet19_448.conv.23
没有出错的话则会开始进入训练,
如果你能看到跟我截图类似的情况,那恭喜你,你已经可以开始跟yolov2一起开心的玩耍了。如有不懂的地方或者我写错的地方欢迎提出来一起讨论。