voc2007 与 voc2017是互斥的图片。这次说2012
解压统统使用tar -xf 使用命令行,会自动给你融合图片。
标注是图片,存储在/..../VOCdevkit/VOC2012/SegmentationClass
标注一共是20类,加上背景21类,白边呢,算是未标注类,不计算到损失函数里,注意下。
读取代码:
import numpy as np
from PIL import Image
from matplotlib import pyplot as plt
#标注地址
vocdir = '/home/DATA/database/VOC2012/ts/'
labdir = 'VOCdevkit/VOC2012/'
task = 'SegmentationClass/'
#数据set地址
list_dir = '/home/DATA/database/VOC2012/ts/VOCdevkit/VOC2012/ImageSets/Segmentation/'
list_name = 'train.txt'
all_the_text = open(list_dir+list_name).read()
train = all_the_text.split('\n')
for ind in train[0:1]:
#按照图片名字读取,实际上读取数据只需要这一句话。
lab = Image.open(vocdir+labdir+task+ind+'.png')
plt.imshow(lab)
plt.savefig("readlab")
前面写了很多地址,真正的关键是读取使用Image.open以P通道读取,这样的话
>>uniq = np.unique(lab)
>>uniq
>>array([ 0, 1, 15, 255], dtype=uint8)
这个255需要自己处理下,别跑网络的时候也计算到损失里面去
参考:
https://www.zhihu.com/question/263994588
https://arleyzhang.github.io/articles/1dc20586/