自制多分类cityscapes格式数据集用于HRNet网络进行语义分割
!说在前面(原创小文,如有需要请标明转载出处)
语义分割对图像进行分割是基于像素点对其进行分类的,所以我今天要说的分割,用的除了公共数据集之外,我是按照cityscapes数据集的格式进行数据集的制作用于训练。所以,要制作cityscapes格式数据集的话,务必对cityscapes公共数据集进行了解,并且熟知用于训练的图像数据格式,主要强调的是原图像对应的灰度图,这个也是制作数据集的关键。
1. 查看cityscapes格式
import numpy as np
from PIL import Image
img = Image.open(‘***.png’) #图像所在位置
img = np.array(img)
np.unique(img)
标注类别读取结果如下:
2. 数据集制作
首先,标注用的是labele工具,具体可参考:https://github.com/wkentaro/labelme
2.1 数据集的标注
简单标注如下图所示,左边是标注的边缘框架,右边是命名的类别,标注自己想要的类别进行保存即可。
2.2 json文件的转换
json文件进行转换的时候,可以直接在cmd用单个命令直接转,也可以自己写个批量转换的脚本,这个网上也一大堆,在此不做重复。下面这个代码里面对labelme所在文件位置的json_to_dataset.py进行了改进,对标注的类进行了初始化。(记得在代码所在目录建一个文件夹,我的命名是before)
import argparse
import json
import os
import os.path as osp
import warnings
import PIL.Image
import yaml
from labelme import utils
import base64
def main():
count = os.listdir("./before/")
for i in range(0, len(count)):
path = os.path.join("./before", count[i])
if os.path.isfile(path) and path.endswith('json'):
data = json.load(open(path))
if data['imageData']:
imageData = data['imageData']
else:
imagePat