准备 PASCAL VOC 数据集

Pascal VOC 是一个用于目标检测的数据集集合。最常用的基准测试组合是使用 2007 trainval2012 trainval 进行训练,使用 2007 test 进行验证。本教程将逐步指导您为 GluonCV 准备此数据集。

http://host.robots.ox.ac.uk/pascal/VOC/pascal2.png

提示

您需要 8.4 GB 的磁盘空间来下载和解压此数据集。由于性能更好,建议使用 SSD 而非 HDD。

准备数据集的总时间取决于您的互联网速度和磁盘性能。例如,在 AWS EC2 上使用 EBS 通常需要 10 分钟。

准备数据集

我们需要 Pascal VOC 中的以下四个文件

文件名

大小

SHA-1

VOCtrainval_06-Nov-2007.tar

439 MB

34ed68851bce2a36e2a223fa52c661d592c66b3c

VOCtest_06-Nov-2007.tar

430 MB

41a8d6e12baa5ab18ee7f8f8029b9e11805b4ef1

VOCtrainval_11-May-2012.tar

1.9 GB

4e443f8a2eca6b1dac8a6c57641b67dd40621a49

benchmark.tgz

1.4 GB

7129e0a480c2d6afb02b517bb18ac54283bfaa35

下载和解压这些文件的最简单方法是下载辅助脚本 pascal_voc.py 并运行以下命令

python pascal_voc.py

这将自动下载数据并解压到 ~/.mxnet/datasets/voc

如果您已经将上述文件保存在磁盘上,可以将 --download-dir 指向它们。例如,假设文件保存在 ~/VOCdevkit/ 中,您可以运行

python pascal_voc.py --download-dir ~/VOCdevkit

使用 GluonCV 读取

使用 gluoncv.data.VOCDetection 加载图像和标签非常简单。

from gluoncv import data, utils
from matplotlib import pyplot as plt

train_dataset = data.VOCDetection(splits=[(2007, 'trainval'), (2012, 'trainval')])
val_dataset = data.VOCDetection(splits=[(2007, 'test')])
print('Num of training images:', len(train_dataset))
print('Num of validation images:', len(val_dataset))

输出

Num of training images: 16551
Num of validation images: 4952

现在让我们可视化一个示例。

train_image, train_label = train_dataset[5]
print('Image size (height, width, RGB):', train_image.shape)

输出

Image size (height, width, RGB): (364, 480, 3)

通过切片 0 到 4 列获取边界框

bounding_boxes = train_label[:, :4]
print('Num of objects:', bounding_boxes.shape[0])
print('Bounding boxes (num_boxes, x_min, y_min, x_max, y_max):\n',
      bounding_boxes)

输出

Num of objects: 2
Bounding boxes (num_boxes, x_min, y_min, x_max, y_max):
 [[184.  61. 278. 198.]
 [ 89.  77. 402. 335.]]

通过切片第 5 列获取类别 ID

class_ids = train_label[:, 4:5]
print('Class IDs (num_boxes, ):\n', class_ids)

输出

Class IDs (num_boxes, ):
 [[14.]
 [12.]]

可视化图像、边界框

pascal voc

最后,要同时使用 train_datasetval_dataset 进行训练,我们可以将它们通过数据转换并使用 mxnet.gluon.data.DataLoader 加载,更多信息请参见 train_ssd.py

脚本总运行时间: ( 1 分 52.250 秒)

由 Sphinx-Gallery 生成的图库