Faster-RCNN训练自己的数据集
2016-12-22 16:02
309 查看
CAFFE深度学习交流群:532629018
就目前我在了解到的资料来看,训练RCNN系列,一般有两种思路:
修改CNN的工程代码,适应自己的数据集格式
将自己的数据格式做成VOC2007形式的数据集
从工作量来看,无疑后者更容易一些,本文的思路也是如此。
首先是图片的命名格式,虽然图片的命名理论上不会影响训练。因为训练的数据都是从txt文件中读取图片的名称。但是为了统一数据集,仍然建议批量、有规律的命名数据图片。
我的数据集是jpg格式,和PASCAL_VOC2007一样。将图片置于同一个文件夹中,然后运行一段Python代码即可。
代码见文末
命名之后,就可以进行标注了。我借用了一个网上的标注工具,windows7下运行良好,可惜没放出源码,无法学习交流。
标注工具得到了一份标注的集合的txt文件,记录图片和标注信息
上述都是准备工作,然后就可以制作VOC格式的数据集了。总体来看,VOC格式的数据集格式如下:
2
3
4
5
1
2
3
4
5
Annotations中存放的是.xml文件,文件中记录描述每张图片的信息
ImagesSet\Main中存放txt文件,每个文件中写入训练和测试所用的数据(也就是图片名称的集合)
JPEGImages中存放的是数据集中的图片
关于VOC数据集格式,不清楚的可以下载一份VOC2007数据集,看一下就明白了。
搞明白了数据集包含哪些内容之后就可以制作数据集了。首先是Annotations中的xml文件,这些文件是根据标注信息得到的txt文件生成的。我参考了网上的一些代码,自己写了一份python脚本,运行良好。只需要读入txt文件和遍历图片即可。
代码见文末
因为JPEGImages中只是存放图片,所以我在生成Annotations时,同时拷贝了每张图片到JPEGImages中,也就完成了这两个文件夹的内容。
【注意】: xml文件中很多标签内容不一定要一样,可以自己定义,比如作者什么的,我是根据VOC的xml内容来修改的,大家也可以自己修改。
制作Main中的四个txt文件
txt内容即是图片名字,所以遍历一遍JPEGImages或者Annotations都行,我遍历了Annotations。
test.txt是测试集,大概是整个数据集的50%;
trainval是训练和验证数据集,也就是整个数据集的剩余的50%
train.txt是训练集,是trainval的50%
val.txt是验证集,trainval剩余的50%
代码见文末
这样就完成VOC2007格式的数据集的制作。如果想要训练faster-RCNN,还需要进入faster-RCNN中修改网络的一些参数。请参考:
Faster-RCNN训练自己的数据集python版本
因为标注过程中,可能存在标注的目标框太靠近边缘或者自己没注意,导致标注的数据在训练时产生了异常,通常是
这行代码报错。(反正我中招了。。。)
原因和解决办法看这里
解决faster-rcnn中训练时assert(boxes[:,2]>=boxes[:,0]).all()的问题
亲测前两步即可解决
以上即是简单的Faster-RCNN训练自己的数据集教程,整个教程涉及的代码(均为python)可以在github上下载,感谢参考的两篇博文!
就目前我在了解到的资料来看,训练RCNN系列,一般有两种思路:
修改CNN的工程代码,适应自己的数据集格式
将自己的数据格式做成VOC2007形式的数据集
从工作量来看,无疑后者更容易一些,本文的思路也是如此。
首先是图片的命名格式,虽然图片的命名理论上不会影响训练。因为训练的数据都是从txt文件中读取图片的名称。但是为了统一数据集,仍然建议批量、有规律的命名数据图片。
我的数据集是jpg格式,和PASCAL_VOC2007一样。将图片置于同一个文件夹中,然后运行一段Python代码即可。
代码见文末
命名之后,就可以进行标注了。我借用了一个网上的标注工具,windows7下运行良好,可惜没放出源码,无法学习交流。
标注工具得到了一份标注的集合的txt文件,记录图片和标注信息
上述都是准备工作,然后就可以制作VOC格式的数据集了。总体来看,VOC格式的数据集格式如下:
---VOC2007 ------Annotations ------ImagesSet ---------Main ------JPEGImages1
2
3
4
5
1
2
3
4
5
Annotations中存放的是.xml文件,文件中记录描述每张图片的信息
ImagesSet\Main中存放txt文件,每个文件中写入训练和测试所用的数据(也就是图片名称的集合)
JPEGImages中存放的是数据集中的图片
关于VOC数据集格式,不清楚的可以下载一份VOC2007数据集,看一下就明白了。
搞明白了数据集包含哪些内容之后就可以制作数据集了。首先是Annotations中的xml文件,这些文件是根据标注信息得到的txt文件生成的。我参考了网上的一些代码,自己写了一份python脚本,运行良好。只需要读入txt文件和遍历图片即可。
代码见文末
因为JPEGImages中只是存放图片,所以我在生成Annotations时,同时拷贝了每张图片到JPEGImages中,也就完成了这两个文件夹的内容。
【注意】: xml文件中很多标签内容不一定要一样,可以自己定义,比如作者什么的,我是根据VOC的xml内容来修改的,大家也可以自己修改。
制作Main中的四个txt文件
txt内容即是图片名字,所以遍历一遍JPEGImages或者Annotations都行,我遍历了Annotations。
test.txt是测试集,大概是整个数据集的50%;
trainval是训练和验证数据集,也就是整个数据集的剩余的50%
train.txt是训练集,是trainval的50%
val.txt是验证集,trainval剩余的50%
代码见文末
这样就完成VOC2007格式的数据集的制作。如果想要训练faster-RCNN,还需要进入faster-RCNN中修改网络的一些参数。请参考:
Faster-RCNN训练自己的数据集python版本
因为标注过程中,可能存在标注的目标框太靠近边缘或者自己没注意,导致标注的数据在训练时产生了异常,通常是
assert(boxes[:,2]>=boxes[:,0]).all()
这行代码报错。(反正我中招了。。。)
原因和解决办法看这里
解决faster-rcnn中训练时assert(boxes[:,2]>=boxes[:,0]).all()的问题
亲测前两步即可解决
以上即是简单的Faster-RCNN训练自己的数据集教程,整个教程涉及的代码(均为python)可以在github上下载,感谢参考的两篇博文!
相关文章推荐
- 用faster-rcnn训练自己的数据集(VOC2007格式,python版)
- 【faster-rcnn】训练自己的数据集时的坑
- 【faster-rcnn】训练自己的数据集时的坑
- Faster_rcnn训练自己的数据集
- Faster-Rcnn训练自己的数据集
- faster-rcnn训练自己的数据集以及遇到的一些问题
- 用faster-rcnn训练自己的数据集(VOC2007格式,python版)
- 不能再详细!!!手把手教你用Faster-RCNN训练自己的数据集
- Faster_rcnn训练自己的数据集(2)
- py-faster-rcnn训练自己数据集需要修改的参数
- 【faster-rcnn】训练自己的数据集时的坑
- Faster-RCNN 训练自己数据集的坑记录
- win10 Faster-RCNN训练自己数据集遇到的问题集锦 (转)
- win10 caffe python Faster-RCNN训练自己数据集(转)
- pva-faster-rcnn配置安装及训练自己的数据集
- Faster-RCNN训练自己的数据集
- Faster-RCNN训练自己的数据集
- 深度学习Caffe实战笔记(20)Windows平台 Faster-RCNN 训练自己的数据集
- 使用py-faster-rcnn训练自己的数据集
- 【faster-rcnn】训练自己的数据集时的坑