作为标准数据集,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的代码稍后上传