数据集创建

本工程最终目标是实现一个汽车检测器,在训练过程中需要依次实现以下数据集

  1. VOC数据集中提取汽车类别
  2. 创建微调数据集
  3. 创建分类器数据集

Note 1:有关数据集创建程序均位于py/utils/data/目录

Note 2:本次实验使用VOC 2007数据集

PSACAL VOC 2007

参考:[数据集]PASCAL VOC 2007

从VOC数据集中提取汽车类别

python文件:

  1. pascal_voc.py
  2. pascal_voc_car.py

下载并完成解析操作后,可从VOCdevkit/VOC2007/ImageSets/Main目录下查找car_train.txtcar_val.txt文件,里面保存了相关的汽车类别图像名

数据集格式

创建得到数据集voc_car,其格式如下:

├── train
│   ├── Annotations
│   ├── car.csv
│   └── JPEGImages
└── val
    ├── Annotations
    ├── car.csv
    └── JPEGImages

创建微调数据集

python文件:

  • create_finetune_data.py

通过选择性搜索算法的质量模式获取候选建议,然后计算候选建议与标注边界框的IoU

  1. 正样本:IoU大于等于0.5
  2. 负样本:剩余的候选区域

在代码实现中,为了进一步减小负样本数据集,我修改了负样本判定规则

  • 副样本(修改后):IoU大于0,小于0.5。为了进一步限制负样本数目,其大小必须大于标注框的1/5

数据集格式

创建得到数据集finetune_car,其格式如下:

├── train
│   ├── Annotations
│   ├── car.csv
│   └── JPEGImages
└── val
    ├── Annotations
    ├── car.csv
    └── JPEGImages

训练集和验证集的正负样本个数如下:

# train
# positive num: 66517
# negatie num: 464340
# val
# positive num: 64712
# negative num: 415134

创建分类器数据集

python文件:

  • create_classifier_data.py

通过选择性搜索算法的质量模式获取候选建议,然后计算候选建议与标注边界框的IoU

  1. 正样本:标注边界框
  2. 负样本:IoU小于0.3的候选区域

在代码实现中,为了进一步减小负样本数据集,我修改了负样本判定规则

  • 副样本(修改后):IoU大于0,小于0.3。为了进一步限制负样本数目,其大小必须大于标注框的1/5

数据集格式

创建得到数据集classifier_car/,其格式如下:

├── train
│   ├── Annotations
│   ├── car.csv
│   └── JPEGImages
└── val
    ├── Annotations
    ├── car.csv
    └── JPEGImages

训练集和验证集的正负样本个数如下:

# train
# positive num: 625
# negative num: 366028
# val
# positive num: 625
# negative num: 321474