读取voc中的数据集路径修改_GluonCV读取VOC数据

读取voc中的数据集路径修改_GluonCV读取VOC数据_第1张图片

在Mxnet的代码pascal_voc.ipynb基础上,做了一些探索。主要看下如何使用gluoncv来操作pascal VOC数据集。

参考https://gluon-cv.mxnet.io/build/examples_datasets/pascal_voc.html#sphx-glr-build-examples-datasets-pascal-voc-py

%matplotlib inline

使用GluonCV读取数据

Loading images and labels is straight-forward with :py:class:gluoncv.data.VOCDetection.

文件网盘地址:

链接: https://pan.baidu.com/s/1xfoI7uaGjfUdcs_qPFv9lw 提取码: t73r

官方地址:

http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar

http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar

http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar

http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/semantic_contours/benchmark.tgz

需要解压文件,并且将文件拷贝到文件夹/root/.mxnet/datasets/voc中。

如果要正确执行下面的代码,需要将VOCtrainval_11-May-2012.tar、VOCtrainval_06-Nov-2007和VOCtest_06-Nov-2007解压的文件夹直接拷贝到上述路径。如果需要深入研究具体代码机制的,可以参考gluoncv的对应源码。

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

# 用了2007和2012的数据。
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
def show_voc_data(index):
    '''
    可视化一个例子
    train_label的标签Bounding boxes (num_boxes, x_min, y_min, x_max, y_max)
    类别标签为train_label的第5个元素
    '''
    train_image, train_label = train_dataset[index]
    print('Image size (height, width, RGB):', train_image.shape)

    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)

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

    utils.viz.plot_bbox(train_image.asnumpy(), bounding_boxes, scores=None,
                    labels=class_ids, class_names=train_dataset.classes)
    plt.show()
show_voc_data(5)
Image size (height, width, RGB): (364, 480, 3)
Num of objects: 2
Bounding boxes (num_boxes, x_min, y_min, x_max, y_max):
 [[184.  61. 278. 198.]
 [ 89.  77. 402. 335.]]
Class IDs (num_boxes, ):
 [[14.]
 [12.]]

读取voc中的数据集路径修改_GluonCV读取VOC数据_第2张图片
show_voc_data(-1)
Image size (height, width, RGB): (400, 500, 3)
Num of objects: 1
Bounding boxes (num_boxes, x_min, y_min, x_max, y_max):
 [[263. 141. 291. 216.]]
Class IDs (num_boxes, ):
 [[2.]]

读取voc中的数据集路径修改_GluonCV读取VOC数据_第3张图片
show_voc_data(40)
Image size (height, width, RGB): (374, 500, 3)
Num of objects: 4
Bounding boxes (num_boxes, x_min, y_min, x_max, y_max):
 [[ 19.   6. 182. 354.]
 [ 97. 214. 428. 373.]
 [331. 139. 454. 365.]
 [ 21.  50. 316. 290.]]
Class IDs (num_boxes, ):
 [[14.]
 [14.]
 [14.]
 [ 8.]]

读取voc中的数据集路径修改_GluonCV读取VOC数据_第4张图片

你可能感兴趣的:(读取voc中的数据集路径修改)