Potsdam 数据集预处理(切割)

这篇具有很好参考价值的文章主要介绍了Potsdam 数据集预处理(切割)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Potsdam 数据集是一个优秀的城市语义分割数据集主要包含’background’,‘car’,‘tree’,‘low vegetation’,‘building’,'impervious surfaces’共六个类别。
下载完数据集之后解压文件如下,主要使用图片中标注的文件。分别是原始RGB图像,全部标注,部分标注。 采用将部分标注作为训练集,其余图像作为测试集。(PS:2_Ortho_RGB文件夹下的文本文件不清楚是什么,直接删除了)

potsdam数据集,深度学习基础,计算机视觉,opencv,python
对程序中的文件路径需要切换,已使用多进程加速!

import cv2
import matplotlib.pyplot as plt
import os
import numpy as np
import multiprocessing
from PIL import Image
# CLASS = ['background','car','tree','low vegetation','building','impervious surfaces']

def crop(img,target,size,overlap,train):
    img_name = img.split('//')[-1].split('.')[0]
    image = cv2.imread(img)
    target = cv2.imread(target)
    target = cv2.cvtColor(target,cv2.COLOR_BGR2RGB)
    assert image.shape[:2]==target.shape[:2]
    number = 0
    for i in range((image.shape[0]-size)//overlap+1):
        for j in range((image.shape[1]-size)//overlap+1):
            image_ = image[i*overlap:i*overlap+size,j*overlap:j*overlap+size,:]
            target_ = target[i*overlap:i*overlap+size,j*overlap:j*overlap+size,:].reshape(-1,3)
            target_[(target_==[255,0,0]).all(axis=1)] = np.array([0])
            target_[(target_ == [255, 255, 0]).all(axis=1)] = np.array([1])
            target_[(target_ == [0, 255, 0]).all(axis=1)] = np.array([2])
            target_[(target_ == [0, 255, 255]).all(axis=1)] = np.array([3])
            target_[(target_ == [0, 0, 255]).all(axis=1)] = np.array([4])
            target_[(target_ == [255, 255, 255]).all(axis=1)] = np.array([5])
            target_ = target_[:,0]
            target_ = target_.reshape(image_.shape[0],image_.shape[1])
            if train:
                cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\jpg' + '//' + img_name + str(number) + '.jpg', image_)
                cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\target' + '//' + img_name + str(number) + '.png', target_)
            else:
                cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\jpg_test' + '//' + img_name + str(number) + '.jpg', image_)
                cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\target_test' + '//' + img_name + str(number) + '.png', target_)
            # print(r'F:\work\2022_9\Potsdam\dataset\jpg'+'//'+img_name+str(number)+'.jpg')
            number += 1

        image_ = image[i*overlap:i*overlap+size,-size:,:]
        target_ = target[i*overlap:i*overlap+size,-size:,:].reshape(-1, 3)
        target_[(target_ == [255, 0, 0]).all(axis=1)] = np.array([0])
        target_[(target_ == [255, 255, 0]).all(axis=1)] = np.array([1])
        target_[(target_ == [0, 255, 0]).all(axis=1)] = np.array([2])
        target_[(target_ == [0, 255, 255]).all(axis=1)] = np.array([3])
        target_[(target_ == [0, 0, 255]).all(axis=1)] = np.array([4])
        target_[(target_ == [255, 255, 255]).all(axis=1)] = np.array([5])
        target_ = target_[:, 0]
        target_ = target_.reshape(image_.shape[0], image_.shape[1])
        if train:
            cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\jpg' + '//' + img_name + str(number) + '.jpg', image_)
            cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\target' + '//' + img_name + str(number) + '.png', target_)
        else:
            cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\jpg_test' + '//' + img_name + str(number) + '.jpg', image_)
            cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\target_test' + '//' + img_name + str(number) + '.png', target_)
        number += 1
    for i in range((image.shape[1]-size)//overlap+1):
        image_ = image[-size:,i*overlap:i*overlap+size,:]
        target_ = target[-size:,i*overlap:i*overlap+size,:].reshape(-1, 3)
        target_[(target_ == [255, 0, 0]).all(axis=1)] = np.array([0])
        target_[(target_ == [255, 255, 0]).all(axis=1)] = np.array([1])
        target_[(target_ == [0, 255, 0]).all(axis=1)] = np.array([2])
        target_[(target_ == [0, 255, 255]).all(axis=1)] = np.array([3])
        target_[(target_ == [0, 0, 255]).all(axis=1)] = np.array([4])
        target_[(target_ == [255, 255, 255]).all(axis=1)] = np.array([5])
        target_ = target_[:, 0]
        target_ = target_.reshape(image_.shape[0], image_.shape[1])
        if train:
            cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\jpg' + '//' + img_name + str(number) + '.jpg', image_)
            cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\target' + '//' + img_name + str(number) + '.png', target_)
        else:
            cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\jpg_test' + '//' + img_name + str(number) + '.jpg', image_)
            cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\target_test' + '//' + img_name + str(number) + '.png', target_)
        number += 1

    image_ = image[-size:,-size:,:]
    target_ = target[-size:,-size:,:].reshape(-1, 3)
    target_[(target_ == [255, 0, 0]).all(axis=1)] = np.array([0])
    target_[(target_ == [255, 255, 0]).all(axis=1)] = np.array([1])
    target_[(target_ == [0, 255, 0]).all(axis=1)] = np.array([2])
    target_[(target_ == [0, 255, 255]).all(axis=1)] = np.array([3])
    target_[(target_ == [0, 0, 255]).all(axis=1)] = np.array([4])
    target_[(target_ == [255, 255, 255]).all(axis=1)] = np.array([5])
    target_ = target_[:, 0]
    target_ = target_.reshape(image_.shape[0], image_.shape[1])
    if train:
        cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\jpg' + '//' + img_name + str(number) + '.jpg', image_)
        cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\target' + '//' + img_name + str(number) + '.png', target_)
    else:
        cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\jpg_test' + '//' + img_name + str(number) + '.jpg', image_)
        cv2.imwrite(r'F:\work\2022_9\Potsdam\dataset\target_test' + '//' + img_name + str(number) + '.png', target_)
    number += 1

# img = img_file+'//'+'top_potsdam_2_10_RGB.tif'
# target = target_file+'//'+'top_potsdam_2_10_label.tif'
# crop(img,target,640,320)


if __name__ == '__main__':
    print('开始运行主线程')
    img_file = r'F:\work\2022_9\Potsdam\2_Ortho_RGB'
    train_target_file = r'F:\work\2022_9\Potsdam\5_Labels_for_participants'
    target_file = r'F:\work\2022_9\Potsdam\5_Labels_all'

    train_list = os.listdir(train_target_file)
    all_list = os.listdir(target_file)
    test_list = [i for i in all_list if i not in train_list]


    multiprocessing.freeze_support()
    multiprocessing.Process()
    pool = multiprocessing.Pool(multiprocessing.cpu_count())
    SIZE = 640
    OVERLAP = 320

    for file in all_list:
        if file in train_list:
            TRAIN = True
        else:
            TRAIN = False
        IMG = img_file+'//'+file.replace('label','RGB')
        TARGET = target_file + '//' + file
        pool.apply_async(func=crop, args=[IMG,TARGET,SIZE,OVERLAP,TRAIN ])
    pool.close()
    pool.join()
    print('主线程运行结束')



可视化结果展示

potsdam数据集,深度学习基础,计算机视觉,opencv,python

potsdam数据集,深度学习基础,计算机视觉,opencv,python

总结

可以设置SIZE控制切割后图像的大小,以及OVERLAP控制重叠区域的长度。文章来源地址https://www.toymoban.com/news/detail-588195.html

到了这里,关于Potsdam 数据集预处理(切割)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • <2>【深度学习 × PyTorch】pandas | 数据预处理 | 处理缺失值:插值法 | networkx模块绘制知识图谱 | 线性代数初步

      你永远不可能真正的去了解一个人,除非你穿过ta的鞋子,走过ta走过的路,站在ta的角度思考问题,可当你真正走过ta走过的路时,你连路过都会觉得难过。有时候你所看到的,并非事实真相,你了解的,不过是浮在水面上的冰山一角。—————《杀死一只知更鸟》   🎯

    2024年02月01日
    浏览(49)
  • (9-3)基于深度强化学习的量化交易策略(OpenAI Baselines +FinRL+DRL+PyPortfolioOpt):数据预处理

    1.1.6  数据预处理 数据预处理是训练高质量机器学习模型的关键步骤,在这一步需要检查缺失数据并进行特征工程,以将数据转换为适合模型训练的状态。本项目的数据预处理江湾城以下工作: 添加技术指标:在实际交易中,需要考虑各种信息,例如历史股价、当前持仓股票

    2024年01月25日
    浏览(48)
  • Halcon 深度学习之语义分割 预处理 案例解析

    声明:本篇是个人针对于语义分割预处理案例的理解,有理解不到位或者错误的地方,还望各位能够给予指正,在此表示感谢! 例子名称: segment_pill_defects_deep_learning_1_preprocess ①:导入原图文件夹,标注文件夹,类别信息等 ②:通过Deep Learning Tool 工具创建的语义分割文件【

    2024年02月09日
    浏览(43)
  • 深度学习中基于python的预处理和图像扩增方法

    容易出现的报错: 错误原因通常为保存的路径不正确: 应改为: 即第一个参数应该写到文件的名称,而不能只写到文件夹就停止。 灰度图片和黑白图片有些相似,但并不完全相同。 灰度图片是指每个像素点的颜色由灰度值来表示,通常使用8位无符号整数(0-255)表示。灰

    2024年02月08日
    浏览(45)
  • 数据采集与预处理01: 项目1 数据采集与预处理准备

    数据采集:足够的数据量是企业大数据战略建设的基础,因此数据采集成为大数据分析的前站。数据采集是大数据价值挖掘中重要的一环,其后的分析挖掘都建立在数据采集的基础上。大数据技术的意义确实不在于掌握规模庞大的数据信息,而在于对这些数据进行智能处理,

    2024年01月25日
    浏览(65)
  • 数据预处理matlab matlab数据的获取、预处理、统计、可视化、降维

    1.1 从Excel中获取 使用readtable() 例1: 使用 spreadsheetImportOptions(Name,Value) 初步确定导入信息, 再用 opts.Name=Value 的格式添加。 例2: 先初始化 spreadsheetImportOptions 对象, 再用 opts.Name=Value 的格式逐个添加。 例3: 将导入信息存到变量里, 再使用 spreadsheetImportOptions(Name,Value)

    2024年02月15日
    浏览(56)
  • 大数据采集技术与预处理学习一:大数据概念、数据预处理、网络数据采集

    目录 大数据概念: 1.数据采集过程中会采集哪些类型的数据? 2.非结构化数据采集的特点是什么? 3.请阐述传统的数据采集与大数据采集的区别? ​​​​​​​ ​​​​​​​4.大数据采集的数据源有哪些?针对不同的数据源,我们可以采用哪些不同的方法和工具? 数据

    2024年01月25日
    浏览(54)
  • 数据预处理之数据规约

    目录 一、前言 二、PCA的主要参数: 三、数据归约任务1 四、数据规约任务2 PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构

    2024年02月12日
    浏览(47)
  • 数据分析--数据预处理

    本文主要是个人的学习笔记总结,数据预处理的基本思路和方法,包括一些方法的使用示例和参数解释,具体的数据预处理案例case详见其他文章。如有错误之处还请指正! 目录 数据的质量评定 数据处理步骤 缺失值的处理 标记缺失值 删除 缺失值 填充 缺失值 重复值处理 异

    2024年02月04日
    浏览(58)
  • python数据预处理

    输出结果如下: 观察可知,【销量】存在一个缺失值,本例将缺失值所在行进行删除处理 输出结果如下: 输出结果如下: 观察可知,箱线图上下边缘存在异常值,本例通过四分位法对异常值进行处理,即:超出上边缘的异常值让其落在上边缘,低于下边缘的异常值让其落在

    2024年02月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包