GitHub上很多语义分割的项目都使用了cityscape数据集,在训练自己的数据时,不想改太多代码,需要将自己的标签数据转换成cityscape格式.

1. cityscape标签数据格式

  1. cityscape标签数据是单通道的灰度图像,第n类目标的像素灰度值为n;
  2. cityscape有自己的标注软件, cityscape使用笔记,我没有使用;

2. 生成自己的数据

  1. 我是使用labelme打的语义分割标签;
  2. labelme安装、使用、标签指定颜色
  3. 在制定颜色时,将其中一个通道®的灰度值设置为类值n,
    lable.py
  4. json文件夹里label.png的R通道就是需要的gtFine标签图像;
    标签图像、.json文件和生成的json文件夹都在2020文件夹里
# gtFine_labelIds.py'''
将color.png =>  gtFine_labelIds.png
单通道,灰度值0-n, n为类别
labelme json文件处理生成的label.png R通道的像素灰度值对应类别n
直接取R通道的图像作为gtFine
'''import os
import cv2json_path = './2020-6-11_11_5'
for root, dirs, files in os.walk(json_path):for file in files:if file.strip() == "label.png":file_path = os.path.join(root, file)src_image_path = os.path.join(root, 'img.png')image = cv2.imread(file_path)src = cv2.imread(src_image_path)file_name = os.path.split(root)[-1]file_name = file_name.split('_')[0] + '.png'# label处理  直接取R通道的图像就是gtFineB, G, R = cv2.split(image)# R = R.astype('uint8')# print(thresh)path = os.path.join(os.path.abspath('.'), 'gtFine')if not os.path.exists(path):os.makedirs(path)# print(path)labelId_image = os.path.join(path, file_name.split('.')[0] + '_gtFine_labelIds.' + file_name.split('.')[-1])print(labelId_image)cv2.imwrite(labelId_image, R)src_image_path = os.path.join(os.path.abspath('.'), 'leftImg8bit')if not os.path.exists(src_image_path):os.makedirs(src_image_path)src_image = os.path.join(src_image_path, file_name)cv2.imwrite(src_image, src)# 显示R = R * 100cv2.imshow('label', R)cv2.waitKey(1)print(file_name)
  1. 生成train、val、test文件夹
# train_val.py'''
将数据分为train val
'''import os
import random
import shutiltotal_list = []
train_list = []
val_list = []
test_list = []image_path = './leftImg8bit'
label_path = './gtFine'# 清空
for dir in ['train', 'val', 'test']:image_dir = os.path.join(image_path, dir)label_dir = os.path.join(label_path, dir)if os.path.exists(image_dir):shutil.rmtree(image_dir)os.makedirs(image_dir)if os.path.exists(label_dir):shutil.rmtree(label_dir)os.makedirs(label_dir)for root, dirs, files in os.walk(image_path):for file in files:if file.endswith('png'):total_list.append(file)total_size = len(total_list)
train_size = int(total_size * 0.7)
val_size = int(total_size * 0.2)train_list = random.sample(total_list, train_size)
remain_list = list(set(total_list) - set(train_list))
val_list = random.sample(remain_list, val_size)
test_list = list(set(remain_list) - set(val_list))print(len(total_list))
print(len(train_list))
print(len(val_list))
print(len(test_list))image_path = './leftImg8bit'
label_path = './gtFine'# 清空
for dir in ['train', 'val', 'test']:image_dir = os.path.join(image_path, dir)label_dir = os.path.join(label_path, dir)if os.path.exists(image_dir):shutil.rmtree(image_dir)os.makedirs(image_dir)if os.path.exists(label_dir):shutil.rmtree(label_dir)os.makedirs(label_dir)for file in total_list:image_path_0 = os.path.join(image_path, file)label_file = file.split('.')[0] + '_gtFine_labelIds' + '.png'label_path_0 = os.path.join(label_path, label_file)if file in train_list:image_path_1 = os.path.join(image_path, 'train', file)shutil.move(image_path_0, image_path_1)label_path_1 = os.path.join(label_path, 'train', label_file)shutil.move(label_path_0, label_path_1)elif file in val_list:image_path_1 = os.path.join(image_path, 'val', file)shutil.move(image_path_0, image_path_1)label_path_1 = os.path.join(label_path, 'val', label_file)shutil.move(label_path_0, label_path_1)elif file in test_list:image_path_1 = os.path.join(image_path, 'test', file)shutil.move(image_path_0, image_path_1)label_path_1 = os.path.join(label_path, 'test', label_file)shutil.move(label_path_0, label_path_1)
  1. 还可能需要crop
# crop.py
'''
将1280×720
=》1280×704
'''
import cv2
import os
import shutilimage_path = './leftImg8bit'
label_path = './gtFine'print("processing")
for root, dirs, files in os.walk(image_path):for file in files:if file.endswith('.png'):image_name = os.path.join(root, file)image = cv2.imread(image_name, -1)crop_image = image[:704, :, :]os.remove(image_name)cv2.imwrite(image_name, crop_image)# cv2.imshow("crop_image", crop_image)# cv2.waitKey(0)for root, dirs, files in os.walk(label_path):for file in files:if file.endswith('.png'):image_name = os.path.join(root, file)image = cv2.imread(image_name, -1)crop_image = image[:704, :]os.remove(image_name)cv2.imwrite(image_name, crop_image)print("processing")# cv2.imshow("crop_image", crop_image)# cv2.waitKey(0)

将自己的数据制作成cityscape格式相关推荐

  1. 把数据库中的数据制作成Excel数据

    把数据库中的数据制作成Excel数据 如果我们在使用Excel的时候,需要把数据库中的数据制作成Excel数据透视表,我们该怎么操作呢?如果数据在数据库中,我们不用把数据导入到工作表中,我们可以直接以 ...

  2. mysql 数据透视_把数据库中的数据制作成Excel数据透视表

    如果我们在使用Excel的时候,需要把数据库中的数据制作成Excel数据透视表,我们该怎么操作呢?如果数据在数据库中,我们不用把数据导入到工作表中,我们可以直接以数据库的全部数据或者部分数据制作数据透 ...

  3. 用UltraISO把硬盘文件制作成ISO格式

    转自:https://wenku.baidu.com/view/0052c88dcc22bcd126ff0cbf.html 用UltraISO把硬盘文件制作成ISO格式方法: 制作硬盘ISO文件步骤一 ...

  4. 把txt格式数据制作成xml数据

    txt格式数据: 代码: s1=""" <object><name>{0}</name><pose>Unspecified ...

  5. 将自己的dcm数据制作成LUNA16数据集提供数据样式之代码整理

    1.获取mhd和raw import cv2 import os import pydicom import numpy import SimpleITK# 路径和列表声明 rootpath=&quo ...

  6. 将自己的dcm数据制作成LUNA16数据集提供数据样式。

    1.先说下luna数据样式.一个CT序列在LUNA16数据集主要是由一个mhd文件一个raw文件以及一个或多个csv文件(以一个为例不做那么多区分(3mm以下不做处理等)).以下为LUNA16数据集的 ...

  7. springboot 后台把数据制作成excel表格并打成压缩包下载

    项目里面遇到要把数据做成资料卡片,然后写入单独的excel文件,之后打成压缩包下载.这个过程记录一下,希望对大家有用. 1.在controller里面开个口子,接收客户端的请求.由于vue里面用了do ...

  8. 简单几步,将官方的Java API文档制作成chm格式文件!

    CHM格式的Java API 长什么样? 如何制作 进入Oracle官网下载Java API文档 将下载后的文档解压如下 使用CHMWriter制作 双击"CHMWriter.exe&quo ...

  9. shell脚本将mysql数据库中查询结果导出制作成.CSV格式文件;或.txt/.log文件

    #第一种方法在命令行中直接执行下面代码(.log可替换为其他格式文件) mysql -hlocalhost -P3306 -uroot -p1234 -e"select * from dem ...

  10. 用JPG转PDF转换器把图片制作成PDF格式文档

    我们都有这样一个想法,如果能将姥爷姥姥那一代的相册与爸爸妈妈以及我们合在一起,制成一个4680影集该是多么开心的事.要实现这个想法并不困难,21世纪信息化的时代给我们一个明确的答案, JPG转换成PD ...

最新文章

  1. C#中的线程(二) 线程同步基础
  2. 简易django项目之登录验证
  3. Java黑皮书课后题第6章:*6.23(指定字符的出现次数)使用下面的方法头编写一个方法,找到一个字符串中指定字符的出现次数。编写一个测试程序,提示用户输入一个字符串以及一个字符,显示该字符出现次数
  4. 关于人脸识别最近浏览器打不开摄像头的解决方案
  5. 工作中常用的但是又容易忽略的问题
  6. 【HTML】使用css3和html给网站添加上春节灯笼特效
  7. CPU取指到发出控制、微程序控制原理详细过程
  8. MySQL数据库几种常用的索引类型使用介绍
  9. 常平计算机培训班,常平大朗CNC编程培训速成班,一个月学会UG编程
  10. BUPT复试专题—密码(2009)
  11. 【吃豆游戏----HTML+JS+CSS等实现,效果+源代码】
  12. 关于差分编码的思想及实现
  13. 格兰杰因果关系检验的局限性
  14. 服务器篇 使用Windows Server 2012R2搭建DHCP服务器-01
  15. html的斜表头设置
  16. python psutil 进程cpu_python 模块psutil获取进程信息
  17. python 提取pdf格式电子发票并改名
  18. 【Linux 将普通用户改为root用户】并授予某个目录或文件的所有权限
  19. VD500潮湿压缩空气流量计0690 5001_A1_B1_C1_D1_E1_F1_G1_K1
  20. php网站源码 闪拍拍卖转拍 微拍堂自动挂售竞拍程序 H5拍卖商城系统+app

热门文章

  1. 幻灯片转换html动画,html5 css3仿ppt幻灯片播放动画效果
  2. 【教程】迅为iTOP-4412精英版exynos4412开发板搭建原生Linux最小系统(二)
  3. Windows和ubuntu互传文件
  4. 验证二叉树的前序序列化[抽象前序遍历]
  5. android 高仿ios开关,Android 仿苹果IOS6开关按钮
  6. 苏轼被贬 康震《唐宋八大家之苏轼》
  7. 求Kinetics400,AVA,prcv2018,Moments in time challenge2018,youtube8M,ActivityNet数据集,原始视频
  8. 一个野生程序员的真实自述:我是如何从数学专业学渣入坑程序员的
  9. 今天咱们不谈学习,只聊风(sha)月(diao))
  10. 如何在EXCEL表格中加斜线表头