1.下载官方Cityscapes数据集文件
官网的账号注册
官网https://www.cityscapes-dataset.com/
注册官网账号是需要教育邮箱的,可以在学校的小程序或者个人中心上看看自己的教育邮箱是多少。
注意,想提交自己的测试集结果是必须有一个能登陆的账号的哦。
下载数据集文件
语义分割用到的两个文件分别是
getFine_trainvaltest.zip [241MB]
leftImg8bit_trainvaltest.zip [11GB]
分别下载下来。
处理数据集
下载并解压后,需要对getFine_trainvaltest进行处理
用CityscapesScript中的代码 代码地址https://github.com/mcordts/cityscapesScripts
找到cityscapesscript/preparation/creatTrainIdLableImgs.py
在其中中添加一行代码 (如图中红色框线所示)
os.envrion['CITYSCAPES_DATASET']='输入自己的getFine文件的路径'
比如我的getFine路径是"home/you/下载/getFine_trainvaltest/getFine",那填"home/you/下载/getFine_trainvaltest/"就能run了。
run完以后,getFine文件就会从241MB变成878MB,打开查看会看到彩色mask。
注意,getFine的test中的并不能真的拿来用(打开查看会发现是全黑的),想查看在test上的结果必须提交到官网。
提交test数据集结果到官网
处理结果图
用自己的模型跑test后,得到的mask并不能直接上传到官网,要先将其转化为labelID。
使用代码trainID2lableID.py
# converting trainIDs to labelIDs for evaluating the test set segmenatation results of the cityscapes dataset
import numpy as np
import os
from PIL import Image
# index: trainId from 0 to 18, 19 semantic class val: labelIDs
cityscapes_trainIds2labelIds = np.array([7, 8, 11, 12, 13, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33],
dtype=np.uint8)
def trainIDs2LabelID(trainID_png_dir, save_dir):
print('save_dir: ', save_dir)
if not os.path.exists(save_dir):
os.makedirs(save_dir)
png_list = os.listdir(trainID_png_dir)
for index, png_filename in enumerate(png_list):
#
png_path = os.path.join(trainID_png_dir, png_filename)
# print(png_path)
print('processing(', index, '/', len(png_list), ') ....')
image = Image.open(png_path) # image is a PIL #image
pngdata = np.array(image)
trainID = pngdata # model prediction
row, col = pngdata.shape
labelID = np.zeros((row, col), dtype=np.uint8)
for i in range(row):
for j in range(col):
labelID[i][j] = cityscapes_trainIds2labelIds[trainID[i][j]]
res_path = os.path.join(save_dir, png_filename)
new_im = Image.fromarray(labelID)
new_im.save(res_path)
if __name__ == '__main__':
trainID_png_dir = '../server/cityscapes/predict/' # 自己的模型跑的test结果的目录
save_dir = '../server/cityscapes/labelID/' # 转换为lableID后的存放地址
trainIDs2LabelID(trainID_png_dir, save_dir)
提交
点开官网的submit
Challenge那里选择pixel-level semantic labeling
method name那里随便自定义一下
其他的都可以不选
最后将处理好后的test结果压缩上传提交即可。
提交成功
过几分钟就会收到结果邮件啦!