深度学习之CD数据集创建

news2024/11/24 20:23:30

深度学习之数据集创建

  • 1. 原始文件相关文件路径
  • 2. 数据集创建
    • 2.1 数据格式一
    • 2.2 数据格式二

1. 原始文件相关文件路径

  • 原始路径
    在这里插入图片描述
  • 对于label图片文件,通道需要为单通道,如果不是单通道,训练数据会报错
    • 报错信息例如:ValueError: Mask should be a 1-channel image, but recevied is a 4-channel image
  • 批量转换图片通道实现
    import os
    import PIL.Image as Image
    
    # 防止转换错误,备份,不覆盖原文件,后期再修改文件名称
    data_path = r'C:\data\label'  # 原始路径
    save_path = r'C:\data\label_copy'  # 转换保存路径
    data = os.walk(data_path)
    file_list = [file_list for path, folder_list, file_list in data][0]  # 所有图片名称文件夹
    if not os.path.exists(save_path):
        os.makedirs(save_path)
    
    for i in file_list:
        file_name = os.path.join(data_path, i)  # 拼接绝对路径
        images_name = Image.open(file_name).convert('L')  # 转换为L,如果转换为1,训练数据时,预测不出来,图片全为黑色
        save_name = os.path.join(save_path, i)
        images_name.save(save_name)
    
    

2. 数据集创建

2.1 数据格式一

  • 相关算法数据格式
    • https://github.com/justchenhao/BIT_CD
      在这里插入图片描述
  • 与原始数据对比,多出list文件夹,list文件夹存放文文件为划分的不同类型的数据集
    在这里插入图片描述
  • 文件保存为图片名称 【注意只有名称,没有路径】
    在这里插入图片描述
  • 代码实现
    import os
    
    def create_list_dataset(start_size, end_size, types):
        """
        保存图片名称文件
    
        :param start_size:开始步长
        :param end_size: 结束步长
        :param types: 数据集文件类型
        :return:
        """
        save_path = os.path.join(save_list_path, types + '.txt')
        f = open(save_path, mode='w', encoding='utf-8')
        for i in file_list[start_size:end_size]:
            f.write(i + '\n')
        f.close()
    
    
    if __name__ == '__main__':
        root_path = r'C:\data'  # 文件根目录: A,B,label上一级目录
        label_path = os.path.join(root_path, 'label')  # 获取label路径
        save_list_path = os.path.join(root_path, 'list')  # 设置list路径
        types_dataset = ['train', 'val', 'test']
        if not os.path.exists(save_list_path):
            os.makedirs(save_list_path)
        label_path_name = os.walk(label_path)
        file_list = [file_list for path, folder_list, file_list in label_path_name][0]  # 读取图片所有文件名称
    
        # 数据集划分
        all_size, train_rate, val_rate = len(file_list), 0.7, 0.9  # 测试集,校验集比例
        train_size, val_size, test_size = int(all_size * train_rate), int(all_size * val_rate), all_size + 1
    
        # 函数调用
        create_list_dataset(0, train_size,types_dataset[0])
        create_list_dataset(train_size, val_size, types_dataset[1])
        create_list_dataset(val_size, test_size, types_dataset[2])
    
    

2.2 数据格式二

  • 相关算法数据格式

    • paddle框架 Bitemporal image transformer(BIT)
      在这里插入图片描述
  • 将不同的数据集放在不同的文件夹里,不需要txt文件
    在这里插入图片描述

  • 代码实现

    import os
    import shutil
    
    
    def remove_images(start_size, end_size, type_A_path, type_B_path, type_label_path):
        """
            保存图片名称文件
    
            :param start_size:开始步长
            :param end_size: 结束步长
            :param type_A_path: A文件夹路径
            :param type_B_path: B文件夹路径
            :param type_label_path: label文件夹路径
    
            :return:
        """
        for i in file_list[start_size:end_size]:
            # 绝对路径拼接
            A_name, B_name, label_name = os.path.join(a_path, i), os.path.join(b_path, i), os.path.join(label_path, i)
            A_name_to, B_name_to, label_name_to = os.path.join(type_A_path, i), os.path.join(type_B_path, i), os.path.join(type_label_path, i)
            # 图片路径移动
            shutil.copy(A_name, A_name_to)
            shutil.copy(B_name, B_name_to)
            shutil.copy(label_name, label_name_to)
            print(i + '-------------------------->  over!!!')
    
    
    types_path = ['A', 'B', 'label']
    types_dataset = ['train', 'val', 'test']
    
    # 原始路径
    root_path = r'C:\data'
    a_path = os.path.join(root_path, types_path[0])
    b_path = os.path.join(root_path, types_path[1])
    label_path = os.path.join(root_path, types_path[2])
    label_path_name = os.walk(label_path)
    file_list = [file_list for path, folder_list, file_list in label_path_name][0]  # 获取所有图片文件名称
    
    # 保存创建数据集路径
    dataset = root_path + '_DATASET'
    dataset_train = os.path.join(dataset, types_dataset[0])
    dataset_val = os.path.join(dataset, types_dataset[1])
    dataset_test = os.path.join(dataset, types_dataset[2])
    
    # 创建相关文件夹
    for i in types_dataset:
        dataset_path = os.path.join(dataset, i)
        for j in types_path:
            types_dir = os.path.join(dataset_path, j)
            if not os.path.exists(types_dir):
                os.makedirs(types_dir)
    
    # 数据集划分
    all_size, train_rate, val_rate = len(file_list), 0.7, 0.9  # 测试集,校验集比例
    train_size, val_size, test_size = int(all_size * train_rate), int(all_size * val_rate), all_size + 1
    
    # 获取不同类型数据集路径
    for i, types in [(dataset_train, types_dataset[0]), (dataset_val, types_dataset[1]), (dataset_test, types_dataset[2])]:
        # types path
        types_a_path = os.path.join(i, types_path[0])
        types_b_path = os.path.join(i, types_path[1])
        types_label_path = os.path.join(i, types_path[2])
        # 调用函数
        if types == types_dataset[0]:
            # train remove images
            remove_images(0, train_size, types_a_path, types_b_path, types_label_path)
        elif types == types_dataset[1]:
            # val remove images
            remove_images(train_size, val_size, types_a_path, types_b_path, types_label_path)
        elif types == types_dataset[2]:
            # test remove images
            remove_images(val_size, test_size, types_a_path, types_b_path, types_label_path)
    
    
    

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

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

相关文章

自然语言处理(八):Lexical Semantics

目录 1. Sentiment Analysis 2. Lexical Database 2.1 What is Lexical Database 2.2 Definitions 2.3 Meaning Through Dictionary 2.4 WordNet 2.5 Synsets 2.6 Hypernymy Chain 3. Word Similarity 3.1 Word Similarity with Paths 3.2 超越路径长度 3.3 Abstra…

波形失真总结

失真是输入信号与输出信号在幅度比例关系、相位关系及波形形状产生变化的现象。音频功放的失真分为电失真和声失真两大类。电失真是由电路引起的,声失真是由还音器件扬声器引起的。电失真的类型有:谐波失真、互调失真、瞬态失真。声失真主要是交流接口失…

idea使用之 单词拼写检查设置 分级管理

前言 idea的智能提示使用起来非常顺手, 拼接检查也是其中一项, 有些字段什么的, 不小心将单词的字母顺序写错了, idea的拼接检查就会提示(前提是字段命名规范,并且乱序之后的不再是一个具有意义的单词), 如此一来, 就能规避很多粗心大意的错误. 但是呢, 有些时候,项目中有些自…

用Claude和Stable Diffusion绘制《武松打虎》

绘制四大名著的经典画面 现在最火爆的AI,分为两类,一个是文本生成,一个是图片生成。如果让这两种结合到一起来,会是什么样的效果的。 这样是不是可能帮我们绘制很多场景下的图片,比如四大名著,帮我们的四…

Numpy基础用法

Numpy 【Numerical Python】是一个开源的Python科学计算库,用于快速处理任意维度的数组。Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。Numpy使用ndarray对象来处理多维数组,该对象是一个快…

【项目分析】基于工艺融合的数控编程方法的设计与实现

系列综述: 💞目的:本系列是个人整理为了秋招项目的,按照面试常问及项目核心点整理 🥰来源:该项目源于数控系统迭代的实验项目 🤭结语:如果有帮到你的地方,就点个赞和关注…

新版 Spring Security 配置的变化

进入到 SpringBoot2.7 时代,有小伙伴发现有一个常用的类忽然过期了: 在 Spring Security 时代,这个类可太重要了。过期的类当然可以继续使用,但是你要是决定别扭,只需要稍微看一下注释,基本上就明白该怎么玩…

机器视觉公司,在玩一局玩不起的游戏

导语 有个著名咨询公司曾经预测过:未来只有两种公司,是人工智能的和不赚钱的。 它可能没想到,还有第三种——不赚钱的AI公司。 去年我们报道过“正在消失的机器视觉公司”,昔日的“AI 四小龙”( 商汤、旷视、云从、依图…

大数据 | HBase基本工作原理

前文回顾:MapReduce基本原理 目录 📚HBase基本介绍 🐇HBase的设计目标和功能特点 🐇HBase在Hadoop中的生态环境 📚HBase的数据模型 🐇逻辑数据模型 🐇物理存储格式 📚HBase基…

rust网络编程以及unsafe模块

网络层目前 IPv4 和 IPv6 分庭抗礼,IPv6 还未完全对 IPv4 取而代之;传输层除了对延迟非常敏感的应用(比如游戏quic协议),绝大多数应用都使用 TCP;而在应用层,对用户友好,且对防火墙友…

PageRank算法介绍

互联网上有数百亿个网页,可以分为这么几类:不含有用信息的,比如垃圾邮件;少数人比较感兴趣的,但范围不是很广的,比如个人博客、婚礼公告或家庭像册;很多人感兴趣的并且十分有用的,比…

基于DBN神经网络的语音分类识别

目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) DBN的语音分类识别 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,是一种非常好的分类算法,本文将DBN算法应用于语音分类 DBN神…

排污口漂浮物监测系统 yolov5

排污口漂浮物监测系统通过YOLOV5网络模型技术,排污口漂浮物监测算法模型对河道两岸各处排污口进行7*24小时不间断实时监测,当监测到河道两岸的排污口违规乱排乱放时,不需人为干预系统立即抓拍存档告警。我们选择当下YOLO卷积神经网络YOLOv5来…

实现数字化转型升级,快速开发平台流辰信息来助力!

在如今迅猛发展的年代里,科技的力量是伟大的,可以让老百姓的生活变得丰富多彩,也可以让各行各业的企业实现办公自动化,朝着数字化转型升级,快速提升办公协作效率。快速开发平台流辰信息作为一家低代码平台服务商&#…

(顺序栈)有效括号序列

文章目录前言:问题描述:问题解析:代码实现:总结:前言: 此篇是针对顺序栈的经典练习题。 问题描述: 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘…

iOS / iPadOS 15.7.4发布安全更新 旧版iPhone和ipad无法升级系统解决方法

苹果于昨日面向无法升级到 iOS / iPadOS 16 的旧款 iPhone 和 iPad,发布了 iOS / iPadOS 15.7.4 更新。本次更新并未引入新的功能,而是重点修复了存在于 WebKit 的两个“关键”漏洞。 iOS / iPadOS 15.7.4发布安全更新: 目前已经有充足的证据…

adb基本操作操作

Mumu模拟器 进入终端 cd C:\Program Files\Netease\MuMuPlayer-12.0\shell 获取root权限 adb root 连接手机 adb connect 127.0.0.1:7555 adb shell 查看连接多少台设备 adb devices 安装程序apk adb install C:\Android\CalcTest.apk adb install -r C:\Android\CalcT…

遥感常用库的比较:Rasterio vs GDAL

一、前言本博客对三种栅格处理工具做一个小小的比较:Python (rasterio) 和 GDAL。当我开始使用 GIS 和栅格处理时,我并没有真正关注我编写的脚本和使用的工具的性能。 但现在,处理更大的数据、更高的空间分辨率、快速处理我的光栅文件是成功的…

国产PIE-SAR软件

1.产品定位 PIE-SAR是一款针对国内外主流星载SAR传感器的数据处理分析软件,提供图形化操作界面。目前已支持国内外主流星载SAR传感器的数据处理与分析,包括强度图像基础处理、区域网平差处理(含异源匹配、RD/RPC区域网平差)、InS…

TensorFlow 1.x 深度学习秘籍:1~5

原文:TensorFlow 1.x Deep Learning Cookbook 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如…