](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