去雨去雪去雾数据集构建

在进行去雨去雪去雾算法的学习过程中,需要构建去雨去雪去雾数据集,本文参考Learning Multiple Adverse Weather Removal via Two-stage Knowledge Learning and Multi-contrastive Regularization: Toward a Unified Model论文中的数据集设定,分别从Rain1400,CSD,OTS三个数据集的训练集中挑选5000张作为训练集,使用原始的测试集作为验证集。

在这里插入图片描述

首先是去雪数据集CSD中挑选5000张,该数据集的挑选最为简单,只需要随机从8000张中挑选5000张即可。其中首先生成要挑选的图片的文本信息,创建csd.txt,随后直接读取csd.txt中的路径即可。

import os, random, shutil
def moveFile(fileDir, tarDir):datas=[]with open("csd.txt", "r") as f:for line in f.readlines():line = line.strip('\n')  #去掉列表中每一个元素的换行符datas.append(line)for name in datas:print(fileDir + name,tarDir + name)shutil.move(fileDir + name, tarDir + name)
#生成要随机抽取的图像地址
def create_img_txt(dir):pathDir = os.listdir(dir)  # 取图片的原始路径picknumber = 5000  # 按照rate比例从文件夹中取一定数量图片sample = random.sample(pathDir, picknumber)  # 随机选取picknumber数量的样本图片for name in sample:with open("csd.txt", "a") as file:file.write(name + "\n")print(name)file.close()
if __name__ == '__main__':fileDir = "F:/datasets\去噪\去雪数据集\CSD\Train\Snow/"  # 源图片文件夹路径tarDir = "F:\datasets\去噪\挑选出的数据集\Snow\Train/Snow/"  # 移动到新的文件夹路径moveFile(fileDir, tarDir)#moveFile(fileDir,tarDir)

csd.txt文件内容:

在这里插入图片描述

随后是去雨数据集的构建,由于该数据集中每一张真值图像对应14张噪声图像,因此本文采用与去雪数据集相同的构造方式,首先在去雾噪声图像中挑选5000张,由于训练集中的真值图像只有900张,因此这5000张噪声图像中包含了所有真值图像的噪声,但为了以防万一,还是通过读取前面的真值图像编号来确定真值图像。

import os, random, shutil
def moveFile(fileDir, tarDir):datas=[]with open("rain_1.txt", "r") as f:for line in f.readlines():line = line.strip('\n')  #去掉列表中每一个元素的换行符datas.append(line)for name in datas:print(fileDir + name,tarDir + name)shutil.copy(fileDir + name, tarDir + name)
def editrain():datas=[]with open("rain_1.txt", "r") as f:for line in f.readlines():line = line.strip('\n')  #去掉列表中每一个元素的换行符line=line.split("_")datas.append(line[0]+".jpg")for name in datas:with open("rain_2.txt", "a") as file:file.write(name + "\n")print(name)
#生成要随机抽取的图像地址
def create_img_txt(dir):pathDir = os.listdir(dir)  # 取图片的原始路径picknumber = 5000  # 按照rate比例从文件夹中取一定数量图片sample = random.sample(pathDir, picknumber)  # 随机选取picknumber数量的样本图片for name in sample:with open("rain_1.txt", "a") as file:file.write(name + "\n")print(name)file.close()
if __name__ == '__main__':fileDir = "F:\datasets\去噪\去雨数据集\下雨检测图像数据集/rainy_image_dataset/training/rainy_image/"  # 源图片文件夹路径tarDir = "F:\datasets\去噪\挑选出的数据集\Rain\Train\Rain/"  # 移动到新的文件夹路径moveFile(fileDir, tarDir)#moveFile(fileDir,tarDir)

rain1.txt文件为噪声图像

在这里插入图片描述

rain2.txt为真值图像

在这里插入图片描述

随后是去雾数据集的构建,去雾数据集包含2601张真实图像,每张图像对应35张噪声图像,且其分为了4个文件,分别包含520x35,520x35,520x35,501x35
考虑挑选的图像总量为5000张,因此分别从每个文件中挑选1300,1300,1300,1100张加噪图像

import os, random, shutil
def moveFile(fileDir, tarDir):datas=[]with open("fog_2.txt", "r") as f:for line in f.readlines():line = line.strip('\n')  #去掉列表中每一个元素的换行符datas.append(line)for name in datas:print(fileDir + name,tarDir + name)shutil.copy(fileDir + name, tarDir + name)
def editrain():datas=[]with open("fog_1.txt", "r") as f:for line in f.readlines():line = line.strip('\n')  #去掉列表中每一个元素的换行符line=line.split("_")datas.append(line[0]+".jpg")for name in datas:with open("fog_2.txt", "a") as file:file.write(name + "\n")print(name)
def create_img_txt(dir):pathDir = os.listdir(dir)  # 取图片的原始路径picknumber = 1100  # 按照rate比例从文件夹中取一定数量图片sample = random.sample(pathDir, picknumber)  # 随机选取picknumber数量的样本图片for name in sample:with open("fog_1.txt", "a") as file:file.write(name + "\n")print(name)file.close()
if __name__ == '__main__':fileDir = "F:/datasets/去噪/室外去雾数据集OTS/OTS_beta/clear/clear/clear/"  # 源图片文件夹路径tarDir = "F:/datasets/去噪/挑选出的数据集/Fog/Train/GT/"  # 移动到新的文件夹路径#create_img_txt(fileDir)#editrain()moveFile(fileDir, tarDir)

为了方便提取,需要生成四个单独的数据集地址文件,最后再汇总在一起。

在这里插入图片描述

最后便是JSON文件的构建了,使用先前生成的地址文件,可以很方便的构建出对应的JSON格式文件。
csd_json文件构建:

gt_path="F:/datasets/CSD/Train/GT/"
input_path="F:/datasets/CSD/Train/Snow/"
def editrain():data=[]with open("csd.txt", "r") as f:for line in f.readlines():line = line.strip('\n')  #去掉列表中每一个元素的换行符data.append(line)with open('csd.json', 'a') as f:for name in data:path='"'+gt_path+name+'",\n'+'"'+input_path+name+'"'f.write("["+path+"],\n")
editrain()

去雨去雾json文件构建

gt_path="F:/datasets/Rain/Train/GT/"
input_path="F:/datasets/Rain/Train/Rain/"
def editrain():data1=[]data2=[]with open("rain_1.txt", "r") as f:for line in f.readlines():line = line.strip('\n')  #去掉列表中每一个元素的换行符data1.append(line)line=line.split("_")data2.append(line[0]+".jpg")with open('rain1400.json', 'a') as f:for name1,name2 in zip(data1,data2):path='"'+gt_path+name2+'",\n'+'"'+input_path+name1+'"'f.write("["+path+"],\n")
editrain()

生成的json文件:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149489.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

面试题 17.24. 最大子矩阵

链接: 面试题 17.24. 最大子矩阵 题解: 这样我们就将二维问题转化为了一维问题,现在另一个问题就是怎么把所有情况都遍历到呢? 我们以第i行为第一行,向下延申,设最后一行为第j行,我们就i在这么…

【AI视野·今日NLP 自然语言处理论文速览 第四十七期】Wed, 4 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 4 Oct 2023 Totally 73 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Contrastive Post-training Large Language Models on Data Curriculum Authors Canwen Xu, Corby Rosset, Luc…

手机或者电脑连接局域网内的虚拟机(网桥)

手机或者电脑连接局域网内的虚拟机(网桥) 手机软件:ConnectBot,Termius,JuiceSSH … 1.虚拟机vmware中添加桥接网卡 这里桥接网卡选择的是自动,是自动生成动态IP,如果不需要动态生成&#xff…

MySQL:数据库的物理备份和恢复-冷备份(3)

介绍 物理备份: 直接复制数据文件进行的备份 优点:不需要其他的工具,直接复制就好,恢复直接复制备份文件即可 缺点:与存储引擎有关,跨平台能力较弱 逻辑备份: 从数据库中导出数据另存而进行的备…

性能测试工具 - LoadRunner

什么是性能测试? 性能测试就是测试人员利用性能测试工具模拟系统在不同情况下的性能指标是否正常。 性能测试工具 - LoadRunner 接下来介绍LoadRunner的作用和使用。 LoadRunner 就是一个很常见的性能测试工具,它有三个部分组成: 这三个组…

【MyBatis-Plus】快速精通Mybatis-plus框架—快速入门

大家在日常开发中应该能发现,单表的CRUD功能代码重复度很高,也没有什么难度。而这部分代码量往往比较大,开发起来比较费时。 因此,目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…

Java实现微信支付

微信支付 小黄最在工作中对接需要对接微信支付,在此记录一下微信支付开发的相关流程,望能帮助到各位 前期准备 由于小黄是小程序端需要对接微信支付,需要注册小程序等,小黄会一一列举出来 小程序注册 所需文件 没有注册过微信…

私有云盘:lamp部署nextcloud+高可用集群

目录 一、实验准备: 二、配置mariadb主从复制 三台主机下载mariadb 1)主的操作 2)从的操作 3)测试数据是否同步 三、配置nfs让web服务挂载 1、安装 2、配置nfs服务器 3、配置web服务的httpd 4、测试 四、web 服务器 配…

排序篇(三)----交换排序

排序篇(三)----交换排序 1.冒泡排序 基本思想: ​ 通过不断地比较相邻的元素,将较大的元素往后移动,从而实现排序的目的。 具体的步骤如下: 从待排序的数组中选择相邻的两个元素进行比较,如果前一个元素大于后一个元素&#…

ParagonNTFSforMac_15.5.102中文版最受欢迎的NTFS硬盘格式读取工具

Paragon NTFS for Mac是一款可以为您轻松解决Mac平台上不能识别Windows通用的NTFS文件难题,这是一款强大的Mac读写工具,相信在很多时候,Mac用户需要对NTFS文件的移动硬盘进行写入,但是macOS系统默认是不让写入的,使用小…

Nginx与Spring Boot的错误模拟实践:探索502和504错误的原因

文章目录 前言502和504区别---都是Nginx返回的access.log和error.log介绍SpringBoot结合Nginx实战502 and 504准备工作Nginx配置host配置SpringBoot 502模拟access.logerror.log 504模拟access.logerror.log 500模拟access.logerror.log 总结 前言 刚工作那会,最常…

Jmeter基础篇

1.性能测试指标 【虚拟用户数】:线程用户 【并发数】:指在某一时间,一定数量的虚拟用户同时对系统的某个功能进行交互,一般通过集合点实现 【事务】:事务代表一个完整的功能,一个接口可以是事务,多个接口…

第八章 排序 三、希尔排序

目录 一、算法思想 二、例子 三、代码实现 五、验证 六、空间复杂度 七、时间复杂度 八、稳定性 一、算法思想 先追求表中元素部分有序,在逐渐逼近表中元素全部有序。 二、例子 1、我们要升序排列此表 2、取一个差值作为子表的划分的条件,希尔本…

医疗器械标准目录汇编2022版共178页(文中附下载链接!)

为便于更好地应用医疗器械标准,国家药监局医疗器械标准管理中心组织对现行1851项医疗器械国家和行业标准按技术领域,编排形成《医疗器械标准目录汇编(2022版)》 该目录汇编分为通用技术领域和专业技术领域两大类,通用…

【逐步剖C】-第十一章-动态内存管理

一、为什么要有动态内存管理 从我们平常的学习经历来看,所开辟的数组一般都为固定长度大小的数组;但从很多现实需求来看需要我们开辟一个长度“可变”的数组,即这个数组的大小不能在建立数组时就指定,需要根据某个变量作为标准。…

分词.join 保存txt

要求 分词.join 保存txt 第1种方法 分词.join 保存txt input多行文本 /storage/emulated/0/数据中心/txt没有就新建为什么会想到这么做 1. 是因为有分词文件📄要处理 2. 对各种词语和线索进行分类 3. 解释一下生活中不常见的现象,但是深刻的符合社会…

Inno Setup新手使用教程

1.编写脚本.iss文件 2.使用Inno Setup打开脚本 3.点击运行 4.打包好的文件在output文件夹下 注:运行不通过可能是文件不存在或者路径错误 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含…

PsychoPy Coder 心理学实验 斯特鲁普效应

选题:斯特鲁普效应实验 选题来源:你知道的「有趣的心理学实验」有哪些? - 知乎 (zhihu.com) 测试目标:探索斯特鲁普效应,即被试在判断文字颜色时,当文字的颜色与其所表示的颜色名称不一致时,是…

博途1200/1500 ALT指令

SMART PLC的ALT指令实现代码,请查看下面文章博客 SMART PLC如何构造ALT指令_smart200类似alt指令-CSDN博客单按钮启停这些老生常谈的问题,很多人感兴趣。这篇博文讨论下不同的实现方法,希望对大家有所帮助。指令虽然简单,但是在编程的时候合理使用对我们高效率编程帮助还是…

C/S架构学习之TCP的三次握手和四次挥手

TCP的三次握手:一定由客户端主动发起的,发生在建立连接的过程中。此过程发生在客户端的connect()函数和服务器的accept()函数之间。第一次握手:客户端向服务器发送一个带有SYN标志的数据包,表示客户端请求建立连接。并且客户端会选…