您的位置:首页 > 其它

使用YOLO训练自己的数据样本经验总结

2016-11-03 04:45 567 查看
YOLO近一年多新出的一种object detection的方法,关于目标检测及YOLO的介绍可参见:基于深度学习的目标检测研究进展CVPR2016目标检测之识别效率篇:YOLO, G-CNN, Loc-NetRCNN学习笔记(6):You Only Look Once(YOLO):Unified, Real-Time Object Detection

1. 好,现在我们使用yolo一般是想训练自己的数据集然后识别自己想要detect的object,因为YOLO程序本身是以VOC2012 dataset为样本来训练并识别的,详见官网YOLO: Real-Time Object Detection

2. 关于自己训练这块,官网没有做太多说明,这里有个不错的教程: Start Training YOLO with Our Own Data 。上边有一个比较小的数据样本,而且都标注好了,方便测试。这里提一下如果自己标注并转换到规范格式的话,注意convert.py本身是不完善的,每标记一类object都需要修改部分代码,尤其类别一定要记的更改,也可参考 yolo的训练和测试

3. 具体操作过程中我本来用的guanghan fork的github代码,然后一直是
Nan
的问题。最后掉头使用了官方的github库,一次运行成功(现在还在运行,哈哈)。所以还是建议用官方的源代码吧,毕竟也在不断update,guanghan的应该是不怎么更新了,不过也有必要下下来试一试。

4. 出现
NaN
问题期间一直在那儿调试(发现自己在调试时还是偏爱printf,哈哈,技术拙略吧),也算是对源代码更熟悉了一点。源代码从
yolo.c
看起,然后是
network.c
data.h
啥的,可以使用
grep 'str_tofind' -nr .
在当前文件夹中递归查找字符出现的位置。还有就是有问题尽量先从官方资料里找,readme文件中有链接其google group 。我就是顺着这里看了一遍最后还是没有找到解决方法,就从新安装了darknet进行尝试了。

5. 其他问题,比如我这里比较悲催,没有配置GPU的大电脑,只有一块nvidia的TX1板。内存比较小,很容易崩,这一点就需要不断调整batch和subdivisions了,不啰嗦了。另外也经常会用到
sudo sysctl -w vm/drop_caches=3
释放内存,
free -m
查看内存使用情况,
~/tegrastats
查看硬件使用情况等命令。

6. 现在还只是处于训练状态,后面应该还会遇到其他问题,再补充。



如图训练过程中,参数IOU代表预测目标位置的准确性,越接近1越好;每个batch之后会输出loss和avg loss,其值越小越好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习