](https://blog.csdn.net/chenzhoujian_/article/details/106874950)
coco2017
(ZSSeg中称之为COCO-stuff 164k
) 简介
包括训练集
118287
张图片,5000
张验证集图片作为测试集。该数据集包括图像数据
train_2017
和val_2017
,从上面的链接中可以下载标注数据stuffthingmaps
,包括了stuff
和thing
这两个大类,前者指草地、天空这些语义类别,后者指人、车辆等可数的一些语义类别。
数据集的制作
数据集下载之后不需要做特别的预处理,只需要针对零样本分割任务做处理即可。
在零样本分割工作如Decoupling Zero-Shot Semantic Segmentation
会选择156
个类作为可见类(seen classes
或者是base classes
),15
个类作为不可见类(unseen classes
或者说是novel classes
),此外从可见类中选择一些类作为验证集。
在ZSSeg_Baseline基于Detectron2
的开源代码中将数据集标注划分出了以下部分:
train2017_base
train_2017_novel
val2017_base
val2017_novel
以
val
数据集的标注数据为例:可以看出
coco
数据集的标注文件是灰度图,也就是说每个位置像素值对应的是其类别id
。此外在划分为novel
和base
两个集合之后,该图会进一步分成novel class mask
与base class mask
,划分源码参考ZSSeg_Baseline/datasets/prepare_coco_stuff_164k_seem_seg.py
。关于该源码需要注意的几点:
首先需要知道
coco
里的标注文件的像素值是0~181,实际使用时去掉了其中的11个,因此实际上只有171个语义类别。在划分数据的时候,会把
train
数据中的图像属于base classes
的部分剥离出来重新copy
一份到train_base
,属于novel classe
的部分会剥离出来拷贝到train_novel
,原则上训练过程中不能使用train_novel
标注信息。对于val
数据的划分也是如此最后划分出来annotations
就是
train_base
train_novel
val_base
val_novel
ZSSeg_Baseline
使用的VOC2012
数据集。MMseg给出的数据集下载地址
下载后的数据包括1464
张训练集图像(train.txt
)和1445
张验证集图像(val.txt
).但是在ZSSeg
任务还常常会使用PASCAL
的增广版数据集,MMseg给出的下载地址,下载后得到的是一个名字为benchmark_RELEASE
的文件夹,该数据集含有9118
张图像,其中和前面的train
与val
均有一定重合,融合的过程中是保持val
数据集不变,剔除掉val
数据再与train
融合。
数据集的制作:
benchmark_RELEASE/dataset/cls
)格式是mat
文件,因此需要将其转换成统一的.png
灰度图。转换的代码参考MMseg数据集准备-PASCAL-VOC。PASCAL VOC
原始数据标注的转换。由于原始数据的标注格式是三通道彩色图.png
格式,因此需要调色板转换为单通道灰度图.png
格式。合并转换后的原始标注数据和增广数据集的标注数据。需要注意的是将存在于增广数据中但是在原始数据中没有的放到原始数据中(别人的博客中也是这么做的),观察数据的过程中发现增广数据的标注好像没有原始的标注准确。该步操作与上一步操作合并在一起执行, 代码参考\ZSSeg_Baseline\datasets\prepare_voc_sem_seg_rgb_gray.py
Detectron2
的[开源代码]http://data.csail.mit.edu/places/ADEchallenge/ADEChallengeData2016.zip