VOC2012¶
- class paddle.vision.datasets. VOC2012 ( data_file=None, mode='train', transform=None, download=True, backend=None ) [源代码] ¶
VOC2012 数据集的实现。
参数¶
data_file (str,可选) - 数据集文件路径,如果
download参数设置为True,data_file参数可以设置为None。默认值为None,默认存放在:~/.cache/paddle/dataset/voc2012。mode (str,可选) -
'train'或'test'模式两者之一,默认值为'train'。transform (Callable,可选) - 图片数据的预处理,若为
None即为不做预处理。默认值为None。download (bool,可选) - 当
data_file是None时,该参数决定是否自动下载数据集文件。默认值为True。backend (str,可选) - 指定要返回的图像类型:PIL.Image 或 numpy.ndarray。必须是 {'pil','cv2'} 中的值。如果未设置此选项,将从 paddle.vision.get_image_backend 获得这个值。默认值为
None。
代码示例¶
import itertools
import paddle.vision.transforms as T
from paddle.vision.datasets import VOC2012
voc2012 = VOC2012()
print(len(voc2012))
# 2913
for i in range(5): # only show first 5 images
img, label = voc2012[i]
# do something with img and label
print(type(img), img.size)
# <class 'PIL.JpegImagePlugin.JpegImageFile'> (500, 281)
print(type(label), label.size)
# <class 'PIL.PngImagePlugin.PngImageFile'> (500, 281)
transform = T.Compose(
[
T.ToTensor(),
T.Normalize(
mean=[0.5, 0.5, 0.5],
std=[0.5, 0.5, 0.5],
to_rgb=True,
),
]
)
voc2012_test = VOC2012(
mode="test",
transform=transform, # apply transform to every image
backend="cv2", # use OpenCV as image transform backend
)
print(len(voc2012_test))
# 1464
for img, label in itertools.islice(iter(voc2012_test), 5): # only show first 5 images
# do something with img and label
print(type(img), img.shape)
# <class 'paddle.Tensor'> [3, 281, 500]
print(type(label), label.shape)
# <class 'numpy.ndarray'> (281, 500)