Cityscapes数据集官网下载地址:
https://www.cityscapes-dataset.com/
相关介绍:从官网下载这三个压缩包文件leftImg8bit_trainvaltest.zip、gtCoarse.zip、gtFine_trainvaltest.zip
1)leftImg8bit_trainvaltest.zip分为train、val以及test三个文件夹,共包含了5000张图像;
2)gtFine_trainvaltest.zip是精细化的注释信息,在其精细标注数据集文件夹(gtFine)中,也有train、val以及test三个文件夹,每张图片对应四个标注文件:用于可视化的彩色标注图
(_color.png)、用于实例分割的实例I图
(_instanceIds.png)、用于语义分割的标签图
(_labelsIds.png)以及包含原始人工标注信息的JSON文件
(_polygons.json)等;
Cityscapes数据集简单介绍:
城市街景数据集 Cityscapes © 收集了来自 50 个不同城市、良好天气条件下的街景,共包含 5000 张高分辨率(1024x2048)图像。其中 3475 张带标注的图像用于训练和验证(2975 张用于训练,500 张用于验证
),1525 张未标注图像用于测试。此外,数据集中还提供了 20000 张弱标注图像供研究使用。该数据集涵盖 30 多种类别
,主要包括城市街景中的车辆、行人、建筑物、道路等常见物体和场景。
实例分割数据集改造为目标检测数据集
将分割数据中的像素级多边形标注转换为目标检测的边界框(bbox)标注
,其实并不复杂。每个分割目标的多边形标注由多个像素点的 [x, y] 坐标组成,只需找到这些坐标的 Xmin, Ymin, Xmax, 和 Ymax 值,就能确定该目标的边界框
。
结果:
preprocess.py代码如下
import os
import glob
from shutil import copy2
from PIL import Image
import json
import numpy as np
def copy_file(src, src_ext, dst):
# find all files ends up with ext
flist = sorted(glob.glob(os.path.join(src, '*', src_ext)))
for fname in flist:
src_path = os.path.join(src, fname)
copy2(src_path, dst)
print('copied %s to %s' % (src_path, dst))
def construct_box(inst_root, inst_name, cls_name, dst):
inst_list = sorted(glob<