作为标准数据集,voc-2007 是衡量图像分类识别能力的基准。 
faster-rcnn,yolo -v1, yolo-v2都以此数据集为最为演示样例,因此,有必要了解一下本数据集的组成架构。

VOC数据集共包含:训练集(5011幅),测试集(4952幅),共计9963幅图,共包含20个种类。

aeroplane 
 bicycle 
 bird 
 boat 
 bottle 
 bus 
 car 
 cat 
 chair 
 cow 
 diningtable 
 dog 
 horse 
 motorbike 
 person 
 pottedplant 
 sheep 
 sofa 
 train 
 tvmonitor 数据集的组成架构如下:
• Annotations —目标真值区域
• ImageSets —-类别标签
• JPEGImages —–图像
• SegmentationClass
• SegmentationObjec

JPEGImages 中存放原始图像,jpg格式。大小一般为 500*375 或 375*500; 
ImageSets 中有三个文件夹【Layout】【Main】【Segmentation】,分类识别我们只关注【Main】,它内部存储类别标签,-1表示负样本,+1为正样本 
*_train.txt 训练样本集 
*_val.txt 评估样本集 
*_trainval.txt 训练与评估样本汇总

2 各类别统计信息

20个类别中,后面数字代表数据集中对应的的正样本图像个数(非目标个数)。

- 训练集

aeroplane 238 
 bicycle 243 
 bird 330 
 boat 181 
 bottle 244 
 bus 186 
 car 713 
 cat 337 
 chair 445 
 cow 141 
 diningtable 200 
 dog 421 
 horse 287 
 motorbike 245 
 person 2008 
 pottedplant 245 
 sheep 96 
 sofa 229 
 train 261 
 tvmonitor 256- 测试集
 aeroplane 204 
 bicycle 239 
 bird 282 
 boat 172 
 bottle 212 
 bus 174 
 car 721 
 cat 322 
 chair 417 
 cow 127 
 diningtable 190 
 dog 418 
 horse 274 
 motorbike 222 
 person 2007 
 pottedplant 224 
 sheep 97 
 sofa 223 
 train 259 
 tvmonitor 229

可以看出,除了person数量较多,其他类别样本个数不算多,在如此小的数据集上,深度学习能获得较高的分类识别结果,足以说明深度学习的强大性能。

现在深度学习很多框架都在使用VOC数据集,来研究一下voc数据集的具体内容

一般voc解压出来后都包括Annotations,ImageSets,JPEFImages,SegmentationClass ,SegmentationObject;

Annotations中是放着所有图片的标记信息,以xml为后缀名.以分类检测的数据为例,打开ImageSets中的layout,会有train,trainval,val三个txt格式数据,:

1 train 很明显是训练数据(注意,均为图片名,没有后缀)

2 val    验证数据

3 trainval 则是所有训练和验证数据

4 test  测试数据

而ImageSets中的Main文件夹中保存的是各类数据出现的统计,以areoplane为例,有三个相关文件aeroplane_train.txt,areoplane_val,areoplane_trainval.txt,以areoplain_train.txt为例,分为两列,第一列为图像名如00012(注意没有后缀),第二列为-1和1,-1表示目标在对应的图像没有出现,1则表示出现。

segmentationclass和segmentationobject中均为分割后的结果

Anotation文件夹中包含了所有train和val的标记信息,标记信息均以xml结尾,其中,以(x,y)的格式保存坐标点.在实际应用中,要不把数据集改为voc形式,如果使用txt

格式的annotations,则需要在代码中进行相应的修改。txt生成xml的代码稍后上传