【语义分割项目实战】一种特殊的数据增强方式:copy-paste实战复现
这次复现的是一种特殊的数据增强方式,copy-paste(复制-粘贴)
参考资料:(29条消息) 代码复现:Copy-Paste 数据增强for 语义分割_叶舟的博客-CSDN博客_copy pastehttps://blog.csdn.net/oYeZhou/article/details/111696577?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165932070216782246443539%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165932070216782246443539&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~hot_rank-2-111696577-null-null.142^v36^pc_rank_34&utm_term=copy-paste&spm=1018.2226.3001.4187
GitHub项目代码:
https://github.com/qq995431104/Copy-Paste-for-Semantic-Segmentation
我使用的是仿VOC数据集进行复现,因为我觉得voc格式的数据集更直观简单一些
首先要制作一个自己的语义分割VOC格式数据集,这里我之前的教程有讲过,站里也有很多很详细的教程,就不赘述了
简单来说,我们最终制作完成的数据集只需要有两样东西,按如下格式摆放即可:
JPEGImages下存放的是图片的原图,格式为jpg,不是jpg在读入的时候会error,说return了nonetype
SegmentationClass下面存放的是与原图按顺序一一对应的掩膜图像,格式是png,一般来说用脚本生成的都是png
然后在copy_paste.py中直接修改路径,运行即可
#改成自己的路径即可,如果显示读不到文件就改成绝对路径
def get_args():parser = argparse.ArgumentParser()parser.add_argument("--input_dir", default="./dataset/VOCdevkit2012/VOC2012", type=str,help="input annotated directory")parser.add_argument("--output_dir", default="./dataset/VOCdevkit2012/VOC2012_copy_paste", type=str,help="output dataset directory")parser.add_argument("--lsj", default=True, type=bool, help="if use Large Scale Jittering")return parser.parse_args()
Tips:本人在这里遇到了一个报错
大意为我们读入的mask图像是一个RGB格式的三通道彩色图像(括号中三个参数分别表示长,宽,通道数),而代码需要处理mask的图片是一个单通道的图像,因此我们需要把这个读入的mask图像转换成单通道的,也就是灰度图像,解决办法如下:
#大概在代码的80行左右,在img和mask分别resize之后,把mask转换成单通道灰度图像
h_new, w_new = int(h * rescale_ratio), int(w * rescale_ratio)img = cv2.resize(img, (w_new, h_new), interpolation=cv2.INTER_LINEAR)mask = cv2.resize(mask, (w_new, h_new), interpolation=cv2.INTER_NEAREST)
#我使用的是opencv中的库函数,可以直接转换mask=cv2.cvtColor(mask,cv2.COLOR_BGR2GRAY)
运行成功后,在同一级文件夹下会生成一个格式与VOC2012格式一样的文件夹,里面分别存放了copy-paste之后的原图和掩膜图像
检验成果:
【语义分割项目实战】一种特殊的数据增强方式:copy-paste实战复现相关推荐
- Random ErasingCutout——两种相似的数据增强方式
本文针对两种相似的数据增强方式--Random Erasing&Cutout进行解读.他们的相似点在于都是随机对输入图像遮挡一部分. Random Erasing 论文下载链接:https:/ ...
- 总结 62 种在深度学习中的数据增强方式
数据增强 数据增强通常是依赖从现有数据生成新的数据样本来人为地增加数据量的过程 这包括对数据进行不同方向的扰动处理 或使用深度学习模型在原始数据的潜在空间(latent space)中生成新数据点从而 ...
- 【语义分割项目实战】Augmentor数据增强与U-Net的综合应用
之前已经介绍过了数据增强工具Augmentor的使用 [语义分割项目实战]基于Augmentor工具的语义分割中常见几种数据增强方式(一)_Bill-QAQ-的博客-CSDN博客 以及简单的复现U-N ...
- 只讲关键点之兼容100+种关键点检测数据增强方法
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨DefTruth 编辑丨极市平台 本文介绍了已有的几种关键点检测数据增强的方法,将其的优缺点进行 ...
- mysql数据库有几种删除方式_sql有几种删除表数据的方式
有几种删除表数据的方式? truncate.delete和drop都可以删除数据. TRUNCATE TABLE删除表中的所有行,而不记录单个行删除操作. TRUNCATE TABLE 与没有 WHE ...
- Extjs中三种不同的数据提交方式
Extjs中三种不同的数据提交方式 Extjs的三种提交方式: 表单Ajax提交,普通提交,单独Ajax提交: 1.表单ajax提交(默认提交方式) 提交函数:当按下表单中的提交按钮时执行下面的btn ...
- 提升语义分割性能的几种方法
本文主要记录几种提升基于深度学习的图像语义分割精度的方法,以防忘记! By zhengzibing2011, 2017年10月21日-星期六 1 1.图像语义分割面临的挑战 (1).特征分辨率减小:主 ...
- 语义分割项目:病害程度定量估算(求每类占总量比例)
本项目是根据统计图像中每一个类的像素值求病害比例,像素值查看可以使用微信截图.图像绿色(0,128,0),在pred和mask生成图像前可以自定像素值. 1.文件详情 mask:存放由json生成的m ...
- 语义分割中单类别和多类别图片数据标注,以及灰度类别转换
...
- labelme 语义分割数据集_RangeNet++: 快速精确的雷达数据语义分割(IROS 2019)
本文主要介绍一篇关于雷达数据语义分割的文章.这篇文章将点云通spherical projection投到2D平面后,先通过高效的CNN网络得出segmentation结果,然后还原出点云的segmen ...
最新文章
- python post与get的区别_python中get和post有什么区别
- 一条命令安装Windows Subsystem for Linux
- 互联网1分钟 |1127
- appium()-The event firing
- 1203. 项目管理
- C#知识点总结系列:2、C#中IDisposable和IEnumerable、IEnumerator
- 二进制文件转成文本保存,并可以读回
- Veritas Backup Exec 22 (Windows)
- Jmeter 使用详解
- 台式计算机m.2的参数,联想启天M系列
- STM32入门(一)
- linux 词霸,Ubuntu下使用原版金山词霸
- 马三步内可以到达的点
- 田老师书法工作室学员作品展(二)
- 阿里云OCR通用文字识别和自定义模板OCR识别Python代码及一站式教程
- 114 西崖 柳成龍
- 安卓设备门禁识别开发_基于Android和RFID的门禁管理系统
- 小程序报错errMsg:hideLoading:fail:toast can't be found和hideToast:fail:toast can't be found?解决方案
- 解决JSCH的sftp连接时出现的com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stre
- AD630锁相放大器 相敏检波器 微弱信号提取 原理图和PCB