1.下载数据集

在这里面,用的是狗猫数据集中的猫数据的一部分,官方下载地址为:https://www.kaggle.com/c/dogs-vs-cats/data

2.使用labelme最新版打标签

我使用了11个猫的图像数据来制作,制作完成后如下图:

3.采用改进的json_to_mask批量生成标签,制作成为标准数据集

# -*- coding: utf-8 -*-import argparse
import base64
import json
import os
import os.path as ospimport imgviz
import PIL.Imagefrom labelme.logger import logger
from labelme import utils
from skimage import img_as_ubyte
import cv2json_file = "/home/lw/data/mydata/"list_path = os.listdir(json_file)for i in range(0, len(list_path)):path = os.path.join(json_file, list_path[i])if os.path.isfile(path) & path.endswith('.json'):data = json.load(open(path))imageData = data.get('imageData')if not imageData:imagePath = os.path.join(os.path.dirname(json_file), data['imagePath'])with open(imagePath, 'rb') as f:imageData = f.read()imageData = base64.b64encode(imageData).decode('utf-8')img = utils.img_b64_to_arr(imageData)  # 原始图像label_name_to_value = {'_background_': 0}for shape in sorted(data['shapes'], key=lambda x: x['label']):label_name = shape['label']if label_name in label_name_to_value:label_value = label_name_to_value[label_name]else:label_value = len(label_name_to_value)label_name_to_value[label_name] = label_valuelbl, _ = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)image_dir=osp.join(osp.dirname(json_file),"image")print image_dir# 建立image文件夹if not osp.exists(image_dir):os.mkdir(image_dir)PIL.Image.fromarray(img).save(osp.join(image_dir, data['imagePath'])) #保存原图mask_dir=osp.join(osp.dirname(json_file),"mask")# 建立image文件夹if not osp.exists(mask_dir):os.mkdir(mask_dir) #utils.lblsave(osp.join(mask_dir, 'label1.png'), lbl) #三通道标签mask_dst = img_as_ubyte(lbl)cv2.imwrite((osp.join(mask_dir,os.path.splitext(list_path[i])[0]) + '.png'), mask_dst) #二值化标签 full_dir=osp.join(osp.dirname(json_file),"full")# 建立image文件夹if not osp.exists(full_dir):os.mkdir(full_dir)    lbl_viz = imgviz.label2rgb(label=lbl, img=imgviz.asgray(img),  loc='rb')PIL.Image.fromarray(lbl_viz).save(full_dir + '/' +os.path.splitext(list_path[i])[0]+ '_label_viz.png') #label的可视化图像PIL.Image.fromarray(img).save(full_dir + '/' + data['imagePath']) #保存原图cv2.imwrite(full_dir + '/' + os.path.splitext(list_path[i])[0] + '.png', mask_dst) #二值化标签
#
for i in range(0, len(list_path)):path = os.path.join(json_file, list_path[i])if os.path.isfile(path) & path.endswith('.jpg'): os.remove(path)  

执行完成后,生生的数据集目录所下图所示:

image存放的是原图

mask存放的是标签

full 存放的是原图,标签图和三通道标签图

4,判断标签是否正确

# -*- coding: utf-8 -*-import cv2
import matplotlib.pyplot as plt#文件地址
imageAddress="/home/lw/data/mydata/full/0.png"
img=cv2.imread(imageAddress)
print(img.shape)plt.imshow(img)
plt.show()

用代码显示出标签图,用鼠标移动到相应位置,看一下左下角的值是否变化。

5,分训练集与验证集

新建index目录,分别建立train.txt,trainval.txt,  val.txt

将训练和验证图片的名字分别放入train.txt,  val.txt

6,生成tfrecord数据

在终端进入/models/research ,在该路径下,执行官方程序自带的build_voc2012_data.py

首先在mydatah目录下建立新目录tfrecord,然后,执行:

python deeplab/datasets/build_voc2012_data.py \--image_folder="/home/lw/data/mydata/image" \--semantic_segmentation_folder="/home/lw/data/mydata/mask" \--list_folder="/home/lw/data/mydata/index" \--image_format="jpg" \--label_format="png" \--output_dir="/home/lw/data/mydata/tfrecord"

DeepLabV3+训练自定义数据集实例(1)相关推荐

  1. 目标检测第6步:YOLOv5(5.0)如何在Colab中训练自定义数据集?(更新时间:2022.3.22)

    (请先看这篇文章:本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客) 如果看完这篇博文,你的问题还是没有解决,那么请关注我的公众号,后台发消息给我吧,当天回复! 目录 一. ...

  2. CenterNet2实战:手把手带你实现使用CenterNet2训练自定义数据集

    1.CenterNet2 介绍 论文地址:https://arxiv.org/abs/2103.07461 GitHub地址:https://github.com/xingyizhou/CenterN ...

  3. MMDetection 快速开始,训练自定义数据集

    本文将快速引导使用 MMDetection ,记录了实践中需注意的一些问题. 环境准备 基础环境 Nvidia 显卡的主机 Ubuntu 18.04 系统安装,可见 制作 USB 启动盘,及系统安装 ...

  4. 基于MMRotate训练自定义数据集 做旋转目标检测 2022-3-30

    本文目录 简述 1.MMrotate下载 2.环境安装 3.自定义数据集制作 3.1 roLabelImg 打标签 3.2 生成DOTA数据集格式的标签 3.3 数据集裁剪(split) 4.修改配置 ...

  5. 【windows10】使用pytorch版本deeplabv3+训练自己数据集

    目录 序言 开发环境 一.准备数据集 二.修改配置 三.开始训练 四.模型测试 序言 最近工作需要用到语义分割,跑了一个deeplabv3+的模型,deeplabv3+是一个非常不错的语义分割模型,使 ...

  6. 图像语义分割实战:TensorFlow Deeplabv3+ 训练自己数据集

    文章目录 前言 一.环境配置 二.训练过程 1.引入库 2.数据集准备 转换为 VOC 格式的数据集 Convert to 灰度图 Convert to tfrecord 3.训练前代码准备 4.主要 ...

  7. Scaled-YOLOv4 快速开始,训练自定义数据集

    代码: https://github.com/ikuokuo/start-scaled-yolov4 Scaled-YOLOv4 代码: https://github.com/WongKinYiu/S ...

  8. 模糊度判断:史上最详细图像质量评价(IQA)-训练自定义数据集--第三节

    这章节我会讲解的是我在工作上自己开发的项目,模糊度判断,该项目我是将图像质量评价论文–hypernet网络移植到mmclassification中进行图片质量评估,若有地方说错的我会第一时间纠正,如果 ...

  9. Pytorch移植Deeplabv3训练CityScapes数据集详细步骤

    源代码链接: https://github.com/fregu856/deeplabv3#paperspace 这个源代码相对简单,可以用来仔细看下,学习思想. 环境配置 源代码使用的是pytorch ...

最新文章

  1. Java反射在JVM的实现
  2. stm32链接电脑提示无法识别的驱动设备
  3. 有赞“小程序订阅消息”功能上线 支持商家主动推送「活动通知」
  4. 如何破解物联网卡带来的连接痛点
  5. 行存、列存,堆表、AO表性能对比 - 阿里云HDB for PostgreSQL最佳实践
  6. (NeurIPS 2019) Gated CRF Loss -一种用于弱监督图像语义分割的新型损失函数
  7. 常用分辨率、帧率、码率
  8. win7安装nvme固态硬盘win10专业版
  9. [Axure RP9] Axure RP Prototyping: Noob to Master 学习笔记
  10. 任意模数ntt_再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)...
  11. 日志配置:logging.file.path与logging.file.name的区别
  12. 《Lynda.com XML 必备教程》(Lynda.com XML Essential Training)CFE 教程
  13. 打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),写出来真是泪牛满面啊。
  14. 基于MATLAB的条形码识别系统
  15. ChaosBlade
  16. JCR分区(WOS或Thomson Reuters或汤姆森 路透)和中科院分区(附网址及查询方法)...
  17. [大话设计模式C++版] 第14章 老板回来,我不知道 —— 观察者模式
  18. 【十三届蓝桥杯】2022年蓝桥杯省赛个人解答 C++ B 组
  19. python代码风格指南:pep8 中文翻译
  20. [云原生专题-12]:容器 - Ubuntu/CentOS平台没有ifconfig/ping工具的解决办法

热门文章

  1. 微信公众平台对接C#- 根据MediaID下载资源
  2. iOS语音通话SDK集成指引(实时语音通话一)
  3. QQ五子棋棋子的数组数据
  4. SQL基础---day6
  5. Java利用switch实现简单买飞机票
  6. 通过SignalR技术整合即时通讯(IM)在.NET敏捷开发框架中落地
  7. 葛兰岱尔3D/BIM/GIS轻量化引擎直接支持PTC Creo和Siemens Nx软件
  8. 26个英文字母和序号
  9. 个人所得税的纳税筹划思考
  10. 【非编软件】达芬奇非编软件升级为付费版的6个理由