Voc4ICnet
数据集准备的目的:ICNET基于VOc数据集的训练,和同时做分割和检测的Blitznet做对比.
一、数据集标签制作与准备:
Pascal VOC数据集可用于目标检测和分割,提供了语义分割标签和实例分割标签.
本文中使用的数据集为原始的pascal-voc2012,和B. Hariharan et a提供的额外的带有分割label的voc_aug数据集合并而成.
voc_aug: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar # 2 GB
下载后解压并重命名为voc_aug
pascal-voc2012: http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/semantic_contours/benchmark.tgz # 1.3 GB
下载后解压,并将voc2012重命名为VOC2012_orig
由于ICNET原代码中使用的标签数据为灰度图,需要将上述数据集中的标签数据都转换为灰度图作为传入的标签.
而voc_aug下载并解压,得到文件夹benchmark_RELEASE,讲其重命名为VOC_aug.该数据集中的label是.mat格式的文件,这里需要将.mat转化为.png的灰度图.
在网上看到deeplab_v2中作者有给出转化代码,下载deeplab_v2项目,转化代码为deeplab_v2/voc2012/mat2png.py,传入参数为.mat文件的存放路径和转化都的png文件存放路径
本文数据集中用到的文件路径如下:
vocdataset
VOC2012_org
ImageSets
Segmentation
trainval.txt
JPEGImages
SegmentationClass
SegmentationClass_1D
VOC_aug
dataset
cls
cls_png
本文的运行命令如下:
cd ~/TF-Project/deeplab_v2/voc2012
./mat2png.py /media/yue/DATA/vocdataset/VOC_aug/dataset/cls /media/yue/DATA/vocdataset/VOC_aug/dataset/cls_png
由于原始的数据集VOC2012中语义标签是三通道的彩色图片,需要将其降为单通道的图片
./convert_labels.py /media/yue/DATA/vocdataset/VOC2012_orig/SegmentationClass/ /media/yue/DATA/vocdataset/VOC2012_orig/ImageSets/Segmentation/trainval.txt /media/yue/DATA/vocdataset/VOC2012_orig/SegmentationClass_1D/
即可得到两组数据的原图和标签图,具体为
vocdataset
VOC2012_org
JPEGImages #原图
SegmentationClass_1D #单通道标签图
VOC_aug
dataset
img #原图
cls_png #单通道标签图
再将两数据集的原图和单通道标签图分别合并,将原始pascal voc2012数据集中的图片inages和标签labels复制到增强pascal voc2012数据集中,如果重复则覆盖
cd /media/yue/DATA/vocdataset
cp VOC2012_orig/SegmentationClass_1D/* VOC_aug/dataset/cls_png/
cp VOC2012_orig/JPEGImages/* VOC_aug/dataset/img/
- images:img,jpg图片的个数变成17125张;
- labels:文件名是cls_png, png图片的个数是11355张。
再制作训练集和验证集和测试集,生成.txt文件.由于Icnet对输入文件大小有限定,这里还需要将所有图片都resize到2的大小.再根据训练步骤训练即可