数据集——高分辨率图像分割成大小均匀图像(附Python代码)

将高分辨率图像分割成大小均匀的图像用于训练,可以提高训练效率,提高模型性能,并提供更大的灵活性。

目录

  • 一、大小均匀图像用于训练优势
  • 二、代码
    • 2.1 代码参数修改
    • 2.2 代码
    • 2.3 输出
    • 2.4 分割结果
  • 三、总结

一、大小均匀图像用于训练优势

内存管理:高分辨率图像通常占用大量内存。通过将它们分割成较小的图像,可以更有效地利用内存,使训练过程更加高效。

并行化:小图像可以在多个处理器或GPU上并行处理,这可以大大提高训练速度。

避免过拟合:通过从大图像中提取出许多小图像,可以增加训练样本的数量,这有助于提高模型的泛化能力,避免过拟合。

学习局部特征:在许多情况下,图像的局部特征(如纹理、形状等)对于任务来说可能是非常重要的。使用小图像可以使模型更专注于这些局部特征。

灵活性:分割后的小图像可以适应各种网络结构,特别是那些设计用于处理固定大小输入的网络。

二、代码

2.1 代码参数修改

下面是使用代码,根据自己情况修改参数,其中output_dir是裁剪后小图像的保存路径,此路径在代码中设置就行,不用在本地文件夹中提前创建好。

在这里插入图片描述

2.2 代码

import multiprocessing
import os
import sysimport cv2
import numpy as np
from tqdm import tqdmdef main():args = {"inputs_dir": "F:\Code\Python\SRGAN\SRGAN-PyTorch\data\SRGAN_ImageNet",  # Path to input image directory."output_dir": "data/SRGAN_ImageNet_train_GT_sub2",  # Path to generator image directory."crop_size": 128,  # Crop image size from raw image."step": 64,  # Step size of sliding window."thresh_size": 0,  # Threshold size. If the remaining image is less than the threshold, it will not be cropped."num_workers": 10  # How many threads to open at the same time.}split_images(args)def split_images(args: dict):"""Split the image into multiple small images.Args:args (dict): Custom parameter dictionary."""inputs_dir = args["inputs_dir"]output_dir = args["output_dir"]num_workers = args["num_workers"]if not os.path.exists(output_dir):os.makedirs(output_dir)print(f"Create {output_dir} successful.")else:print(f"{output_dir} already exists.")sys.exit(1)# Get all image pathsimage_file_paths = os.listdir(inputs_dir)# Splitting images with multiple threadsprogress_bar = tqdm(total=len(image_file_paths), unit="image", desc="Split image")workers_pool = multiprocessing.Pool(num_workers)for image_file_path in image_file_paths:workers_pool.apply_async(worker, args=(image_file_path, args), callback=lambda arg: progress_bar.update(1))workers_pool.close()workers_pool.join()progress_bar.close()print("Split image successful.")def worker(image_file_path: str, args: dict):"""Split the image into multiple small images.Args:image_file_path (str): Image file path.args (dict): Custom parameter dictionary."""inputs_dir = args["inputs_dir"]output_dir = args["output_dir"]crop_size = args["crop_size"]step = args["step"]thresh_size = args["thresh_size"]image_name, extension = os.path.splitext(os.path.basename(image_file_path))image = cv2.imread(os.path.join(inputs_dir, image_file_path), cv2.IMREAD_UNCHANGED)image_height, image_width = image.shape[0:2]image_height_space = np.arange(0, image_height - crop_size + 1, step)if image_height - (image_height_space[-1] + crop_size) > thresh_size:image_height_space = np.append(image_height_space, image_height - crop_size)image_width_space = np.arange(0, image_width - crop_size + 1, step)if image_width - (image_width_space[-1] + crop_size) > thresh_size:image_width_space = np.append(image_width_space, image_width - crop_size)index = 0for h in image_height_space:for w in image_width_space:index += 1# Cropcrop_image = image[h: h + crop_size, w:w + crop_size, ...]crop_image = np.ascontiguousarray(crop_image)# Save imagecv2.imwrite(os.path.join(output_dir, f"{image_name}_{index:04d}{extension}"), crop_image)if __name__ == "__main__":main()

2.3 输出

分割过程如下,高分辨率图像较多时,会等待很久…

在这里插入图片描述

2.4 分割结果

在这里插入图片描述

三、总结

以上就是数据集制作,将高分辨率图像分割成大小均匀图像的详细方法,后续还可以再均匀大小图像基础上进一步做数据增强,数据增强方法参考博文:数据增强

感谢您阅读到最后!关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

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

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

相关文章

onenav一为导航主题4.05开心版 可保存授权

一款大多数导航网站使用且功能非常全面的导航主题,有能力的情况下还是劝大家支持正版。 演示站:onenav一为导航主题演示站 后台演示 | 演示后台:登录 - onenav一为导航主题演示站 后台演示 后台测试账号获取:演示站后台账号获取…

快团团供货大团长如何打印电子面单?

一、功能说明 快团团打单平台是目前唯一一个服务于快团团团长的打单发货工具,免费提供给团长使用。可帮助团长快速打印面单、分拣包裹、完成发货。 目前快团团打单平台已支持大批量打印快递单、自定义快递面单、自动发货、绑定拼多多电子面单账号等功能&#xff0c…

重学java51.Collections集合工具类、泛型

"我已不在地坛&#xff0c;地坛在我" —— 《想念地坛》 24.5.28 一、Collections集合工具类 1.概述:集合工具类 2.特点: a.构造私有 b.方法都是静态的 3.使用:类名直接调用 4.方法: static <T> boolean addAll(collection<? super T>c,T... el…

AVL树的模拟实现

我们上期提到了二叉搜索树&#xff0c;只是简单的讲了一下原理&#xff0c;那么今天我们就讲一下AVL树。 目录 AVL树的概念AVL树的实现AVL树的架构insert插入引用pair对象引进parent指针仅插入数据调节平衡因子情况1&#xff1a;插入在父亲的右边&#xff0c;父亲的平衡因子后…

【算法】前缀和

Hello&#xff01;大家好&#xff0c;我是学霸小羊&#xff0c;今天讲一下前缀和算法。 这要从一个故事说起。 一天&#xff0c;老师叫小明做一道题&#xff1a;一个长度为n的数组a&#xff0c;请你计算a[x]a[x1]a[x2] a[y-1]a[y]。 输入数据 第1行 1个整数n 0≤n≤1,000…

《STM32Cube高效开发教程基础篇》- 安装软件/Demo3_1LED

文章目录 下载两个软件安装问题记录在STM32CubeMX中新建项目编辑代码在CudeMX中完成图形化设置在CudeIdea中编码在CLion中编码&#xff08;智能化&#xff09; 效果图 下载两个软件 百度网盘链接&#xff1a;https://pan.baidu.com/s/1uXLWIIVCJbF4ZdvZ7k11Pw 提取码&#xff1…

Go 错误日志处理

是不是所有的 if err ! nil 的地方都应该输出错误日志&#xff1f; 打印过多的错误日志会导致日志文件变得冗长和难以阅读。 其次&#xff0c;重复的错误信息会增加冗余。 此外&#xff0c;每一层都打印错误日志&#xff0c;一旦错误信息设计不当&#xff0c;可能会导致上下…

消费者相关高效读写ZK作用

消费者分区分配策略 目录概述需求&#xff1a; 设计思路1.消费者分区分配策略2. 消费者offset的存储3. kafka消费者组案例4. kafka高效读写&Zk作用5. Ranger分区再分析 实现思路分析 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show …

MySQL建库

删除数据库 新建数据库 右键-新建数据库 字符集选中utf8(支持中文) 修改字符集 右键--数据库的属性 将字符集支持的数量变少可以修改

vue3 部署后修改配置文件

前端项目部署之后&#xff0c;运维可以自行修改配置文件里的接口IP&#xff0c;达到无需再次打包就可以使用的效果 vue2如何修改请看vue 部署后修改配置文件&#xff08;接口IP&#xff09;_vue部署后修改配置文件-CSDN博客 使用前提&#xff1a; vite搭建的vue3项目 使用setu…

大数据技术分享 | Kylin入门系列:基础介绍篇

Kylin入门教程 在大数据时代&#xff0c;如何高效地处理和分析海量数据成为了企业面临的挑战之一。Apache Kylin作为一个开源的分布式分析引擎&#xff0c;提供了Hadoop之上的SQL查询接口及多维分析&#xff08;OLAP&#xff09;能力&#xff0c;使得对超大规模数据集的分析变…

【leetcode——栈的题目】——1003. 检查替换后的词是否有效python

题目&#xff1a; 给你一个字符串 s &#xff0c;请你判断它是否 有效 。 字符串 s 有效 需要满足&#xff1a;假设开始有一个空字符串 t "" &#xff0c;你可以执行 任意次 下述操作将 t 转换为 s &#xff1a; 将字符串 "abc" 插入到 t 中的任意位置…

前缀和(下)

目录 热身&#xff1a; 寻找数组的中心下标 题解&#xff1a; 代码&#xff1a; 进阶&#xff1a; 除自身之外数组的乘积 题解&#xff1a; 代码&#xff1a; 和为K的子数组 题解&#xff1a; 代码&#xff1a; 和可被 K 整除的子数组 题解&#xff1a; 同余定理…

C语言 指针——指针变量做函数参数

目录 指针变量的解引用 为什么要用指针变量做函数参数&#xff1f; 演示Call by value 指针变量的解引用 为什么要用指针变量做函数参数&#xff1f; 演示Call by value

本特利330130-040-01-00 PLC模块深度解析 询价联系ID

本特利330130-040-01-00 PLC模块深度解析 在工业自动化领域&#xff0c;准确、高效的数据采集和监控是确保生产安全、提高生产效率的关键。本特利&#xff08;Bently Nevada&#xff09;作为全球知名的工业自动化和监控设备制造商&#xff0c;其生产的330130-040-01-00 PLC模块…

半藏酒业新零售分红制度拆解,起盘运营服务商

半藏酱酒招商模式&#xff0c;白酒合伙人模式&#xff0c;顶层模式设计 社群玩法用这几年的互联网词汇描述叫私域营销。虽然不走传统商超&#xff0c;酒桌之外很少能看到&#xff0c;但随着核心消费者裂变和流量汇聚&#xff0c;现在能见度越来越高&#xff0c;并溢出到达公域。…

深度学习:手撕 RNN(2)-RNN 的常见模型架构

本文首次发表于知乎&#xff0c;欢迎关注作者。 上一篇文章我们介绍了一个基本的 RNN 模块。有了 这个 RNN 模块后&#xff0c;就像搭积木一样&#xff0c;以 RNN 为基本单元&#xff0c;根据不同的任务或者需求&#xff0c;可以构建不同的模型架构。本节介绍的所有结构&#…

运维开发.MySQL.范式与反范式化

运维开发 MySQL.三大范式 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/artic…

spdlog日志库源码:线程池thread_pool

线程池 线程池本质上一组事先创建的子线程&#xff0c;用于并发完成特定任务的机制&#xff0c;避免运行过程中频繁创建、销毁线程&#xff0c;从而降低程序运行效率。通常&#xff0c;线程池主要涉及到以下几个方面问题&#xff1a; 如何创建线程池&#xff1f;线程池如何执…

Ubuntu22.04之解决:登录计算机的密码与登录密钥环里的密码不再匹配(二百三十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…