PASCAL VOC是一个国际的计算机视觉挑战赛,数据集包含了20个分类的3万多张图片。挑战赛及其数据集基础上涌现不少知名的目标检测模型如R-CNN,YOLO,SSD等。可以通过下载和读取的方法载入PASCAL VOC数据集。
1 数据集下载
PASCAL VOC数据集可以从官方网站下载
http://host.robots.ox.ac.uk/pascal/VOC/
常用的是2007版和2012版,下载后是一个tar文件包
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
从外网下载速度较慢,如果用迅雷等下载,会自动从国内镜像下载,可以取得较快的速度
下载之后解压,出现VOCdevkit目录,里面包含VOC2012目录,下面包含Annotations,JPEGImages等目录
VOCdevkit #根目录
VOC2012 #2012版
Annotations #标注
ImageSets #分类信息
JPEGImages #jpeg图像目录
SegmentationClass #类别分割信息
SegmentationObject #物体分割信息
2 数据集读取
首先载入需要的模块
import os
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import xml.dom.minidom as minidom
xml模块用来读取Annotations目录中的xml文件,VOC数据集的标注用xml文件来表示。
定义数据目录变量如下
data_path = '../data/PASCAL_VOC/VOCdevkit/VOC2012'
anno_path = f'{
data_path}/Annotations'
image_path = f'{
data_path}/JPEGImages'
然后从Annotations目录读取一个图片信息的列表,这里读取100张
# collect 100 samples from files in anno_path
sample_list = []
for xml in os.listdir(annotation_path):
file_id = os.path.splitext(xml)[0]
xml_file