处理好的voc2012语义分割数据集见:voc2012_semanticsegment | Kaggle
1.voc2012数据集介绍
这是下载的voc2012数据集,上边一个是测试集,下边的是训练+验证
VOCdevkit_train结构如下:
注意该数据集不全是用来做图像分割的,也有目标检测等其他任务的。
Annotations是保存每一张图片的xml信息,其中包含是否用来分割等选项,目标检测Xmin,Xmax,Ymin,Ymax等信息,此处我们用不到
JPEGimages就是需要用到的图片
SegmentationClass是语义分割的label,需要复制整个文件夹
SegmentationObject是实例分割的,暂时用不到
ImageSets这里需要用到,里边有各种任务的txt文件--我们可以根据此来找图像分割需要用到的图片
我们这里只用到下图的Segmentation部分,打开可以看到以下几个文件,我们可以根据这几个txt文件把图像分割需要的数据提取出去。
2.具体代码
import os
import numpy as np
import pandas as pd
import shutil
train = pd.read_csv('D:/medical_dataset/VOCdevkit_train/VOC2012/ImageSets/Segmentation/trainval.txt',header= None)
test = pd.read_csv('D:/medical_dataset/VOCdevkit_train/VOC2012/ImageSets/Segmentation/test.txt',header= None)
train = train.iloc[:,0]
new_path = 'C:/Users/lsy/Desktop/segment_voc2012/image/'
ob_image_train = []
for i in train:
ob_image_train.append(i+ '.jpg')
file_path_train = 'D:/medical_dataset/VOCdevkit_train/VOC2012/JPEGImages/'
for i in ob_image_train:
shutil.copy(file_path_train+i, new_path+i)
ob_image_test = []
for i in test:
ob_image_test.append(i+ '.jpg')
file_path_test = 'D:/medical_dataset/VOCdevkit/VOC2012/JPEGImages/'
for i in ob_image_test:
shutil.copy(file_path_test+i, new_path+i)
3.总结
该分割数据集数量:训练集train(1464)+ 验证集val(1449) + 测试集(1456)=4369
该分割数据集种类:加上背景一共21类,分别为:
classes = ['background','aeroplane','bicycle','bird','boat',
'bottle','bus','car','cat','chair','cow','diningtable',
'dog','horse','motorbike','person','potted plant',
'sheep','sofa','train','tv/monitor']