DeepLabV3+训练自定义数据集实例(1)
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)相关推荐
- 目标检测第6步:YOLOv5(5.0)如何在Colab中训练自定义数据集?(更新时间:2022.3.22)
(请先看这篇文章:本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客) 如果看完这篇博文,你的问题还是没有解决,那么请关注我的公众号,后台发消息给我吧,当天回复! 目录 一. ...
- CenterNet2实战:手把手带你实现使用CenterNet2训练自定义数据集
1.CenterNet2 介绍 论文地址:https://arxiv.org/abs/2103.07461 GitHub地址:https://github.com/xingyizhou/CenterN ...
- MMDetection 快速开始,训练自定义数据集
本文将快速引导使用 MMDetection ,记录了实践中需注意的一些问题. 环境准备 基础环境 Nvidia 显卡的主机 Ubuntu 18.04 系统安装,可见 制作 USB 启动盘,及系统安装 ...
- 基于MMRotate训练自定义数据集 做旋转目标检测 2022-3-30
本文目录 简述 1.MMrotate下载 2.环境安装 3.自定义数据集制作 3.1 roLabelImg 打标签 3.2 生成DOTA数据集格式的标签 3.3 数据集裁剪(split) 4.修改配置 ...
- 【windows10】使用pytorch版本deeplabv3+训练自己数据集
目录 序言 开发环境 一.准备数据集 二.修改配置 三.开始训练 四.模型测试 序言 最近工作需要用到语义分割,跑了一个deeplabv3+的模型,deeplabv3+是一个非常不错的语义分割模型,使 ...
- 图像语义分割实战:TensorFlow Deeplabv3+ 训练自己数据集
文章目录 前言 一.环境配置 二.训练过程 1.引入库 2.数据集准备 转换为 VOC 格式的数据集 Convert to 灰度图 Convert to tfrecord 3.训练前代码准备 4.主要 ...
- Scaled-YOLOv4 快速开始,训练自定义数据集
代码: https://github.com/ikuokuo/start-scaled-yolov4 Scaled-YOLOv4 代码: https://github.com/WongKinYiu/S ...
- 模糊度判断:史上最详细图像质量评价(IQA)-训练自定义数据集--第三节
这章节我会讲解的是我在工作上自己开发的项目,模糊度判断,该项目我是将图像质量评价论文–hypernet网络移植到mmclassification中进行图片质量评估,若有地方说错的我会第一时间纠正,如果 ...
- Pytorch移植Deeplabv3训练CityScapes数据集详细步骤
源代码链接: https://github.com/fregu856/deeplabv3#paperspace 这个源代码相对简单,可以用来仔细看下,学习思想. 环境配置 源代码使用的是pytorch ...
最新文章
- Java反射在JVM的实现
- stm32链接电脑提示无法识别的驱动设备
- 有赞“小程序订阅消息”功能上线 支持商家主动推送「活动通知」
- 如何破解物联网卡带来的连接痛点
- 行存、列存,堆表、AO表性能对比 - 阿里云HDB for PostgreSQL最佳实践
- (NeurIPS 2019) Gated CRF Loss -一种用于弱监督图像语义分割的新型损失函数
- 常用分辨率、帧率、码率
- win7安装nvme固态硬盘win10专业版
- [Axure RP9] Axure RP Prototyping: Noob to Master 学习笔记
- 任意模数ntt_再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)...
- 日志配置:logging.file.path与logging.file.name的区别
- 《Lynda.com XML 必备教程》(Lynda.com XML Essential Training)CFE 教程
- 打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),写出来真是泪牛满面啊。
- 基于MATLAB的条形码识别系统
- ChaosBlade
- JCR分区(WOS或Thomson Reuters或汤姆森 路透)和中科院分区(附网址及查询方法)...
- [大话设计模式C++版] 第14章 老板回来,我不知道 —— 观察者模式
- 【十三届蓝桥杯】2022年蓝桥杯省赛个人解答 C++ B 组
- python代码风格指南:pep8 中文翻译
- [云原生专题-12]:容器 - Ubuntu/CentOS平台没有ifconfig/ping工具的解决办法