训练自己的VOC数据集
最近因项目需要,对VOC数据集内部进行了改造,生成了项目中做需要的数据集。在这过程中,出现了大大小小一堆错误,特来博客分享给各位图像识别的各位。
制作过程
1.首先介绍一下VOC数据集内部结构

在目标检测中,主要用到了 Annotations,ImageSets,JPEGImages
其中 ImageSets/Main/ 保存了具体数据集的索引(其中包含test.txt,train.txt,train_val.txt,val.txt),Annotations 保存了标签数据(XML文件), JPEGImages 保存了图片内容(存放原图片)。
具体内容可参见https://blog.csdn.net/wenxueliu/article/details/80327316。
2.对源图片进行打标签
目前网上打标签的软件十分多,比如多伦多大学的PolyRNN Demo++,labelimg等等,都比较好用。在这里我介绍一个软件,特别针对VOC2007数据集的改造,即网上牛人自己用MFC制作的VOC2007数据集制作工具。软件界面如下:
首先构造VOC2007数据集内部形式,即建立Annotations,ImageSets,JPEGImages文件夹,在ImageSets下面建立Main文件夹,用于存放数据集索引。
然后按照博客https://blog.csdn.net/nienelong3319/article/details/80368057就可以制作出自己的数据集了。
训练过程
先从网上下载VOC0712的文件夹,其中内部主要文件如下图所示。
制作自己的数据集其实关键在于create_list.sh、create_data.sh以及labelmap_voc.prototxt。针对自己的数据集,修改这三个文件。

labelmap_voc.prototxt里面可以对照着修改,其中存放的是目标识别的类别数,内部构造如下:
item {
name: “none_of_the_above”
label: 0
display_name: “background”
}
item {
name: “aeroplane”
label: 1
display_name: “aeroplane”
}
修改完这三个文件,就可以进行正常的训练了。
常见的错误分析
1.bounding box越界
错误原因:在终端下执行bash ./create_data过程中,出现下图现象。其原因在于框选过程不仔细,导致bounding box出了图像。

解决方法:针对提示的错误信息,打开VOC2007数据集制作软件重新对提示错误的文件重新框选。
2.提示无法获取文件状态或者找不到文件,实际上存在
原因分析:这个主要是因为你的数据集是在windows下制作的,VOC2007/ImageSets/Main/下的训练文件 test.txt,trainval.txt的分行符是windows格式的换行(0d0a)(\r\n),而create_list.sh则按unix格式换行(0a)(\n)来处理的,导致生成的临时文件(caffe/data/VOC0712/test.txt,val.txt)的换行都是错的。打开VOC0712文件夹下生成的test.txt文件,会发现是乱码的。

解决方法:如上图绿框标记图修改VOC0712/create_list.sh。

参考博客:https://blog.csdn.net/10km/article/details/70144925
本文分享了如何制作和训练自己的VOC数据集,包括介绍VOC数据集内部结构,使用标签工具打标签,以及训练过程中的文件配置。在训练过程中,文章详细分析了bounding box越界和文件状态错误的常见问题,并提供了相应的解决方法。

5463

被折叠的 条评论
为什么被折叠?



