PASCAL VOC2012 增强数据集
文章目录
- 分割数据集
- Benchmark
- PASCAL VOC 2012
- PASCAL VOC 2012 Augmented Dataset
- 制作 VOC 数据集
分割数据集
下面三张分别是原图,实例分割和语义分割的 PNG 图:
- 语义分割相当于是类别分割,即为每一个像素分类,得到它所属的类别即可,但如果有两个物体都属于同一类别,语义分割并不区分这两个物体,只是单纯的将他们都分为同一类,体现为下面最右侧图中花盆全被填充为绿色;
- 实例分割相当于是物体分割,它是语义分割的子类型,需要在像素级分类的基础上,进一步对不同的实例进行区分,体现为中间一幅图中对每一个花盆都填充了不同的颜色进行区分。
在 FCN 这篇论文中,用到了两个基本的分割数据集,分别是benchmark_RELEASE
和PASCAL VOC2012
Benchmark
Benchmark 数据集:benchmark_RELEASE
其所有的图片都可用于分割任务(语义分割与实例分割),共 11355 张,其中官方划分用于训练的数据包含 8498 张,用于验证的数据包含 2867 张,如下表:
训练(train) | 验证(val) | 总计 |
---|---|---|
8498 张 | 2857 张 | 11355 张 |
dataset
文件夹下包含了训练数据的相关内容,其中 cls
为语义分割标签,inst
为实例分割标签,img
为原图,其中两种标签都是以 .mat 的格式存储的。
(1)img:
(2)cls 和 inst:
查看 cls 语义分割 中的一个 .mat 文件:
CategoriesPresent
为 20,表示该图片上物体的分类编号为 20
Segmentation
为 375 x 500 的 unit8 数据,打开如下:
这张表形状为 375 行 500 列,表示了图像中的每一个像素点,且只有两个数值:0 和 20,代表给一个像素点的分类要么是 0(背景),要么是 20(某一类前景)
查看 inst 实例分割中与上面对应的 .mat 文件:
可以看到类别标注 Categories
仍是 20,但是打开 Segmentation
发现在 cls 标注为 0 和 20 的像素点在 inst 中标注为了 0 和 1,这说明在 inst 中的 label 信息只是为了实现目标的分割任务,只要将一幅图中的分割目标显示出来即可,而不需要对物体进行类别标记。
再查看另一个 inst 中的例子:2008_000036.mat
看到其 Categories
值为 [2;2;4;4;15],说明这幅图里包括 3 类物体,其中属于 2 类和 4 类的物体分别有两个,属于 15 类的物体有 1 个,打开 Segmentaion
如下:
发现像素点范围是 0 ~ 5,其中 0 代表背景,1 ~ 5 代表图中的 5 个物体,但是这里仅仅是对不同物体做出了区分,并未进行分类标记,如果从 cls 中打开对应的 label 信息,那么上面 1 ~ 5 对应的像素应该分别对应 2,2,4,4,15。
PASCAL VOC 2012
PASCAL VOC2012 数据集官网:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html
不过官网的下载链接总是挂掉的状态,所以下载数据集用下面的镜像地址
Pascal VOC Dataset Mirror:https://pjreddie.com/projects/pascal-voc-dataset-mirror/
VOC2012 数据集可以做很多任务,包括图像分类,目标检测,目标分割等。这里主要介绍用于分割任务的数据。官方划分 VOC2012 为两个压缩包,分别用于训练验证(trainval)和测试(test),数据分布如下:
训练+验证(trainval) | 测试(test) | |
---|---|---|
可用于分割任务 | 2913 张 | 1456 张(ground truth未公开) |
总计 | 17125 张 | 16135 张 |
VOC2012 数据集共有 20 + 1 = 21 个类,其中 1 是背景类,20 个类分别为:
- Person:person
- Animal:bird, cat, cow, dog, horse, sheep
- Vehicle:aeroplane, bicycle, boat, bus, car, motorbike, train
- Indoor:bottle, chair, dining table, potted plant, sofa, tv/monitor
1. JPEGImages
中是原始图像。
2. Annotation
中包含图像对应的标记信息:存储为 xml 格式,其中 segmented 为1,意思是这幅图可以用于分割任务(因为VOC2012 中一共有 10000+ 图,但并不都用于分割任务,有的用以目标检测或动作识别等),若这一栏为 0 则说明这幅图不能用于分割任务。
3. ImageSets
文件夹下的 Segmentation
保存了三个 txt 文件,用于记录用于分割任务的图片名,这样在跑程序时用 train.txt 就可以直接从 10000+ 图片中挑出可以用于分割训练的图片。
4. SegmentationClass
中的 PNG 图片用于语义分割任务,每个类别都有固定的颜色。
5. SegmentationObject
中的 PNG 图片用于实例分割任务,对图中不同的物体进行区分。
PASCAL VOC 2012 Augmented Dataset
PASCAL VOC 2012 增强数据集(PASCAL VOC 2012 Augmented Dataset)是目前语义分割和实例分割领域最常用、也是最基础的 benchmark 数据集,它是由两个数据集合二为一制作的,下面只针对分割任务进行说明:
- PASCAL VOC 2012:用于分割任务中训练+验证的图像有 2913 张,用于测试的图像有 1456 张
- Semantic Boundaries Dataset(SBD):用于训练和验证分别有 8498 张和 2857 张
数据集 | 训练+验证(trainval) | 测试(test) | 类别数 |
---|---|---|---|
PASCAL VOC 2012 | 2913 | 1456 | 21 |
SBD | 11355 | / | 21 |
PASCAL VOC 2012 Augmented Dataset | 12031 | 1456 | 21 |
说明:
- SDB 数据集的 11355 张图片实际上是包含在原 VOC 2012 数据集当中的,区别在于原 VOC 2012 数据集只有 1462 张图片可以用于做语义分割,而 SBD 数据集的 11355 张图片全是用来做语义分割的
- 为什么 VOC2012 和 SBD 合起来之后,用于trainval 的数据不是 2913+11355,而是 12031,看一下具体数据就会发现,SBD 中有一部分数据和 VOC2012 的 2913 张是重复的
- PASCAL VOC 2012 Augmented Dataset 的测试数据与原 VOC 2012 数据集一致,仍是 1456 张图像
- VOC 2012 测试数据集的 ground truth 未公开,要测试性能需要向官网提交结果,在线评估模型性能
因此,如果你要需要使用 PASCAL VOC 2012 Augmented Dataset 进行实验,其实不用把 benchmark 和 VOC 2012 分别下载下来再手动合并,只需要下载 SegmentationClass & ImageSets 和 VOCtrainval_11-May-2012.tar,然后替换掉 VOC 2012 中的对应文件即可,这样就是增强数据集了。
数据处理脚本下载: tools.zip
# 脚本包含mat2png.py
convert_labels.py
utils.py
PASCAL VOC 2012 数据集下载:
- 训练+验证:VOCtrainval_11-May-2012.tar
- 测试:VOC2012test.tar
- 镜像下载地址:pascal-voc-dataset-mirror/
Pascal voc 数据文件组织如下:
+ VOCdevkit+ VOC2012+ Annotations # 数据标签+ ImageSets # 数据集索引+ JPEGImages # 17125张图片+ SegmentationClass # 用于语义分割的mask,2913张+ SegmentationObject # 用于实例分割的mask+ tools # 用于数据转换的脚本+ convert_labels.py+ utils.py
SBD 数据集下载:benchmark.tgz,官网:download.html
SBD 数据文件组织如下:
+ benchmark_RELEASE+ cls # 用于语义分割的mask,11355个.mat文件+ img # 11355张图片+ inst # 用于实例分割的mask,11355个.mat文件+ tools # 用于数据转换的脚本+ mat2png.pytrain.txt # 训练数据索引,8498个图片索引val.txt # 验证数据索引,2857个图片索引
说明:tools
文件夹下放脚本文件
制作 VOC 数据集
跑代码大部分用到的数据集格式都是 VOC,所以记录一下整理自己的数据集为 VOC 格式的一些代码~
# 提取文件名保存在txt文件
import random
import globimg_path = glob.glob('/root/data/image/*.jpg')
for each in img_path:with open('/root/data/image/all.txt','a')as f:f.write(each[15:-4]+'\n')# 切片换成自己路径对应的文件名位置# 将上面的txt文件内容随机划分为三个txt
import randomwith open('/root/data/image/all.txt','r')as f:lines = f.readlines()g = [i for i in range(1, 2172)]# 设置文件总数random.shuffle(g)# 设置需要的文件数train = g[:1500]trainval = g[1500:1900]val = g[1900:]for index, line in enumerate(lines,1):if index in train:with open('/root/data/index/train.txt','a')as trainf:trainf.write(line)elif index in trainval:with open('/root/data/index/trainval.txt','a')as trainvalf:trainvalf.write(line)elif index in val:with open('/root/data/index/val.txt','a')as valf:valf.write(line)
原图、标签、XML文件的命名一一对应。xml标注文件的基本格式:
1)xmin 和 ymin 是目标物体 bounding box 的左上角坐标,xmax 和 ymax 是目标物体 bounding box 的右下角坐标;
2)这里每张图片只有一个目标,信息量还是很小的。
增强数据集组织格式:
pascal_voc_aug
├── pascal # 原voc数据
│ └── voc2012
└── sbd # 原sbd数据
│ └── ...
└── pascal_aug # 增强voc数据└── cls_aug # 17125张└── img_aug # 12031张└── list└── test.txt # 测试数据索引└── train.txt└── train_aug.txt # 训练数据索引└── trainval.txt └── trainval_aug.txt└── val.txt # 验证数据索引
1. 数据集格式转换
SBD 数据的 mask 是 .mat 格式,先将其转换为 .png 格式。
在 benchmark_RELEASE
目录下创建 cls_png
文件夹用于存放转换后的 sbd png 图片,然后在该目录下执行脚本 mat2png.py
进行数据转换,转换后的图片是 8-bit 的灰度图。
python tools/mat2png.py cls cls_png
Pascal VOC 2012 数据的 mask 为 RGB 图像,将它们也转换为 8-bit 的灰度图。
在 VOCdevkit/VOC2012
目录下创建 SegmentationClass_1D
文件夹用于存放转换后的 mask 图片,
python tools/convert_labels.py SegmentationClass ImageSets/Segmentation/trainval.txt SegmentationClass_1D
两个数据集已经转换好的 Label 标注文件,可以直接下载:SegmentationClassAug.zip
2. 合并数据
创建文件夹 pascal_voc_aug/img_aug
和 pascal_voc_aug/cls_aug
,分别存放增强后的图片数据和对应的标签文件,数量分别为 17125 张和 12031 张,这里图片数据(img_aug)其实仍然是原 VOC 2012 数据集的 JPEGImages
,标签文件(cls_aug)是转换后的 VOC 和 SBD 灰度图标注文件。
这里由于 txt 文件中路径名的问题,将 img_aug
和 cls_aug
分别改名为 JPEGImages
和 SegmentationClassAug
,这样就不用再改 txt 文件啦。
VOC 增强数据集所使用的验证数据和测试数据集与原始 VOC 2012 一致,所以直接将原本的 val.txt
和 test.txt
文件放在增强数据集目录下即可。
数据索引文件下载:VOC增强数据集数据索引文件
PASCAL VOC2012 增强数据集相关推荐
- 【图像分类】基于Pascal VOC2012增强数据的多标签图像分类实战
接着上一次的多标签分类综述,本文主要以Pascal VOC2012增强数据集进行多标签图像分类训练,详细介绍增强数据集制作.训练以及指标计算过程,并通过代码进行详细阐述,希望能为大家提供一定的帮助! ...
- python不同曲线设置标签_【图像分类】基于Pascal VOC2012增强数据的多标签图像分类实战...
接着上一次的多标签分类综述,本文主要以Pascal VOC2012增强数据集进行多标签图像分类训练,详细介绍增强数据集制作.训练以及指标计算过程,并通过代码进行详细阐述,希望能为大家提供一定的帮助! ...
- PASCAL VOC 2012数据集及其增强版介绍
PASCAL VOC 2012数据集及其增强版介绍 Pascal voc 2012数据集可以用于分类.检测和分割.这篇文章主要介绍其在语义分割任务上的使用.原始的Pascal voc 2012数据集仅 ...
- PspNet在MMsegmentation框架下成功训练Pascal VOC2012数据集及踩坑实录
时间:2021/08/29/05:45:28 一晚上了,难以置信,我竟然还不困,还有着整理博客的冲动.也就在这周,熬夜能力突然就在几个晚上的不归宿中突破了,一夜过后天壤之别,一晚比一晚能熬,之前还会担 ...
- PASCAL VOC2012数据集
PASCAL VOC2012数据集 下载的官方网址:http://host.robots.ox.ac.uk/pascal/voc/voc2012/index.html#devkit 一.介绍与下载 P ...
- PASCAL VOC2012类型的数据集生成train.txt\val.txt等文件
PASCAL VOC 2012 图像分割经常要用的到这个数据集,我是自己做的数据集,但也仿照了PASCAL VOC2012的格式,在数据中,需要把所有图片放在一个文件夹中,mask放在另一个文件夹中, ...
- 语义分割数据集Pascal VOC2012的读取与处理
语义分割数据集Pascal VOC2012的读取与处理 前言 读取文件路径 数据预处理 自定义数据集类 完整代码 前言 Pascal VOC2012是语义分割的一个重要数据集.学习一下使用Pytorc ...
- PASCAL VOC 2012数据集介绍
数据集下载在百度云盘:链接:https://pan.baidu.com/s/1FTjY-ISsDMu0vIypAQyDpg 提取码:fyxt 云盘里面有3个文件夹:VOC2012, VOC2012 ...
- (转) 技术揭秘:海康威视PASCAL VOC2012目标检测权威评测夺冠之道
技术揭秘:海康威视PASCAL VOC2012目标检测权威评测夺冠之道 原创 2016-09-21 钟巧勇 深度学习大讲堂 点击上方"深度学习大讲堂"可订阅哦!深度学习大讲堂是高质 ...
- 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——④转换成PASCAL VOC格式数据集
文章目录 关于PASCAL VOC数据集 目录结构 ①创建VOC数据集的几个相关目录 XML文件的形式 ②读取dcm文件与xml文件的配对关系 ③创建VOC格式数据集 ④创建训练.验证集 本文所用代码 ...
最新文章
- “睡眠猴子”团队项目及成员介绍
- lvm 逻辑卷 和 网络管理
- 【hdu 6342】Expression in Memories
- java反射的用途及实现
- T5: Text-to-Text Transfer Transformer 阅读笔记
- 精简linux操作系统,Tiny Core Linux—仅10多MB的精简Linux 操作系统发行版
- docker卸载 windows版本_DevOps系列 006 - Docker安装
- [转载] Python基础之类型转换与算术运算符
- mysql 的节点组是什么_什么是MySQL集群
- smokeping with tcpping centos 7 环境
- AWVS 12下载与破解
- 蚂蚁金服技术90后:从艺术转投数学,还出版首本TensorFlow中文教材
- 凯恩斯归来,大堡礁畅游记
- 贷超、贷超分销系统 贷超分销模式 简介
- RAW和QCOW2 两种存储设备格式区别
- 编译Busybox产生的两个错误
- 开源笔记本工具及待办事项软件Joplin推荐
- CodeRush and Refactor! Pro Version 3.2.3 for Visual Studio .NET
- NPL处理之Word2Vec-task01
- 药店计算机系统知识题,药店计算机系统未运行整改.doc