将NYUDv2数据集从894类转换为40类(NYUDv2-40)或者13类
在使用NYUDv2数据集进行语义分割的时候会发现,从官网直接下载的数据集有894类,而发现在许多论文中描述的是40类,有的也称作nyudv2-40;一些研究中也出现了13类的标签。
可参考:https://github.com/ankurhanda/nyuv2-meta-data
这里给出了40分类的label数据集:labels40.mat,可直接进行提取。
# 从mat文件提取labels
# 需要注意这个文件里面的格式和官方有所不同,长宽需要互换,也就是进行转置
import cv2
import scipy.io as scio
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import os
dataFile = './labels40.mat'
data = scio.loadmat(dataFile)
labels=np.array(data["labels40"])
path_converted='./nyu_labels40'
if not os.path.isdir(path_converted):
os.makedirs(path_converted)
labels_number=[]
for i in range(1449):
labels_number.append(labels[:,:,i].transpose((1, 0))) # 转置
labels_0=np.array(labels_number[i])
#print labels_0.shape
print (type(labels_0))
label_img=Image.fromarray(np.uint8(labels_number[i]))
#label_img = label_img.rotate(270)
label_img = label_img.transpose(Image.ROTATE_270)
iconpath='./nyu_labels40/'+str('%06d'%(i+1))+'.png'
label_img.save(iconpath, optimize=True)
同时,在classMapping40.mat中给出了每个类别标签所对应的类别名:
在此基础上,class13Mapping.mat给出了由40类到13类的映射表:
以及对应的类别名: