去雨去雪去雾数据集构建

news2024/12/24 7:40:31

在进行去雨去雪去雾算法的学习过程中,需要构建去雨去雪去雾数据集,本文参考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.coloradmin.cn/o/1054275.html

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

相关文章

15np+pandas+matplotlib

numpy 维数 一维:shape(4,)二维:shape(4,5)三维:shape(4,5,6) 创建ndarray–np.array() # 可以是数组[1,2,3] 元组(1,2,3) 迭代对象range(n) np.array([1,2,3,4,5])列表中元素类型不同,会使用元素类型最大的作为ndarray类型 指定维度ndim 赋值操作 赋值&#xff…

【SpringBoot学习】收藏的学习资料,精!

文章目录 Spring实战(第五版): https://potoyang.gitbook.io/spring-in-action-v5/di-er-bu-fen-ji-cheng-spring Spring实战(第五版): https://potoyang.gitbook.io/spring-in-action-v5/di-er-bu-fen-ji-…

【cv】图像预处理技术——从特征检测讲述图像预处理理论、实践、应用|01

博主简介:努力学习的22级计算机科学与技术本科生🌸博主主页: 是瑶瑶子啦每日一言🌼: 每一个不曾起舞的日子,都是对生命的辜负。——尼采 文章目录 前言0、特征检测、特征提取、特征描述、特征匹配一、图像预处理概述二…

十、空闲任务及其钩子函数

1、空闲任务的介绍 (1)一个良好的程序,它的任务都是事件驱动的:平时大部分时间处于阻塞状态。 (2)有可能我们自己创建的所有任务都无法执行,但是调度器必须能找到一个可以运行的任务。所以,我们要提供空闲任务。 (3)在使用vTas…

一站式企业协同研发云——云效

一站式企业协同研发云——云效 文章目录 一站式企业协同研发云——云效什么是云效云效的作用云效使用说明公司领导操作步骤项目创建者或项目组长操作步骤项目上线部署 什么是云效 云效是一种基于云计算技术的软件研发与交付管理平台,旨在提高团队的协作效率和软件交…

读者写者问题—内含408真题

读者写者问题—含408 一、问题描述 一个数据问价或记录可以被多个进程共享,我们把只读该文件的进程称为“读者进程”,其他进程为“写者进程”。允许多个进程同时读一个共享对象,但不允许一个写者进程和其他写者进程或读者进程同时访问共享对…

ElementUI结合Vue完成主页的CUD(增删改)表单验证

目录 一、CUD ( 1 ) CU讲述 ( 2 ) 编写 1. CU 2. 删除 二、验证 前端整合代码 : 一、CUD 以下的代码基于我博客中的代码进行续写 : 使用ElementUI结合Vue导航菜单和后台数据分页查询 ( 1 ) CU讲述 在CRUD操作中,CU代表创建(Create&#xff09…

通过Nginx配置域名映射到本地项目

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Spring的注解开发-Spring配置其它注解

Spring配置其它注解 Primary 拓展:Primary注解用于标注相同类型的Bean优先被使用权,Primary是Spring3.0引入的,与Componen(及其衍生的三个注解)t和Bean一起使用,标注该Bean的优先级更高,则在通…

【知识回顾】Java常用类库-Java Runtime

文章目录 一、快速入门1.1 Runtime 介绍1.2 常用方法1.2.1 基本方法1.2.2 行为控制类1.2.3 系统信息类1.2.4 exec1.2.5 其他方法1.2.6 注意事项 二、基本使用2.1 获取当前虚拟机信息2.2 操作系统进程2.3 Process对象 三、业务场景实战3.1 执行外部脚本3.2 动态加载类 四、小结 …

《数据结构、算法与应用C++语言描述》-栈的应用-迷宫老鼠问题

迷宫老鼠 问题描述 迷宫(如图 8-9 所示)是一个矩形区域,有一个入口和一个出口。迷宫内部包含不能穿越的墙壁或障碍物。这些障碍物沿着行和列放置,与迷宫的边界平行。迷宫的入口在左上角,出口在右下角。 假定用 nxm 的…

【Java每日一题】——第十六题:将数组元素逆序并遍历输出。(2023.09.30)

🕸️Hollow,各位小伙伴,今天我们要做的是第十五题。 🎯问题: 设有数组如下:int[] arr{11,34,47,19,5,87,63,88}; 测试结果如下: 🎯 答案: int a[]new int [10];Random …

《三国志》游戏的MySQL数据设计与管理

在任何成功的游戏背后,都有一个精心设计和管理的数据系统。这不仅决定了游戏的运行效率,还直接影响到玩家的游戏体验。 本文将深入探讨著名游戏《三国志》中的数据设计和管理。本文将讲解游戏中核心的数据元素、数据管理方法,以及开发团队在数据方面所做的工作。 文章目录 …

【C语言次列车ing】No.1站---C语言入门

文章目录 前言一、什么是C语言二、第一个C语言程序三、数据类型四、变量、常量五、字符串转义字符注释 前言 👧个人主页:小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专栏:C语言次列车i…

考研王道强化阶段(二轮复习)“算法题”备考打卡表 记录

问题&#xff1a;做408真题_2010_42题&#xff0c;即王道书 2.2.3_大题_10 思路&#xff1a; 回头补 代码&#xff1a; int moveL(SqlList &L,SqlList &S,int p) {// 健壮性表达if( L.len 0 ){return 0;}// 调用另外一个顺序表存储pos前面的元素for( int i0;i<p;…

【模型压缩】模型剪枝模块

模型剪枝模块 最基本的基于阈值策略 基于分布来选择阈值 假定权重是符合一个正太分布正态分布有68% 小于标准差 将标准差作为阈值卷积层的敏感度要比全连接层更大&#xff1a;导致有些层over-pruning 有些层 under-pruning 设置预期的稀疏率 权重值按照绝对值进行排序从最小…

字符串函数与内存函数讲解

文章目录 前言一、字符串函数1.求字符串长度strlen 2.长度不受限制的字符串函数(1)strcpy(2)strcat(3)strcmp 3.长度受限制的字符串函数(1)strncpy(2)strncat(3)strncmp 4.字符串查找(1)strstr(2)strtok 5.错误信息报告(1)strerror(2)perror 二、内存函数1.memcpy2.memmove3.me…

山西电力市场日前价格预测【2023-10-02】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-02&#xff09;山西电力市场全天平均日前电价为355.35元/MWh。其中&#xff0c;最高日前电价为521.18元/MWh&#xff0c;预计出现在18: 45。最低日前电价为309.36元/MWh&#xff0c;预计…

【C语言深入理解指针(2)】

1. 数组名的理解 在上⼀个博客我们在使⽤指针访问数组的内容时&#xff0c;有这样的代码&#xff1a; int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0];这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址&#xff0c;但是其实数组名本来就是地址&#x…

Windows驱动反调试的一种手段

Windows驱动反调试的一种手段 今天要介绍的是eprocess的0xbc位置 0x0bc DebugPort : Ptr32 Void DebugPort是在用windowsapi调试方式时候所使用的数据结构指针&#xff0c;那么如果我们能够循环清空这个值的话&#xff0c;就可以做到大部分windows调试api都无法正确调试进程 …