transforms——PILImage->tensor

news2024/9/25 1:24:41

数据加载
数据加载:将RGB的图像数据变成可以计算的tensor。需要的步骤有:

  1. 定义一个图片转tensor的转换器(transform)
  2. 定义一个继承自Dataset的myDataSet类,在此类的__getitem__(self, index)中完成一张图片变成一个tensor的转换
  3. 生成一个DataLoader对象,并将一个myDataSet对象传入DataLoader构造器。
  4. 通过语句for batch_x,batch_y in dataLoader:… 进行数据的加载
    加载数据

transforms

在这里插入图片描述

transforms.Compose方法是将一系列的transforms方法进行有序的组合包装,具体实现的时候,依次的用包装的方法对图像进行操作。
transforms.RandomCrop方法对图像进行裁剪(这个在训练集里面用,验证集就用不到了)
transforms.ToTensor方法是将图像转换成张量,同时会进行归一化的一个操作,将张量的值从0-255转到0-1
transforms.Normalize方法是将数据进行标准化

在这里插入图片描述
在这里插入图片描述
在transforms中转化为.ToTensor()【该数据增强能把输入的数据格式(numpy.ndarray或者PIL Image)转成tensor格式,输入的shape会从[H, W, C]变成]C, H, W],输入的数值范围会从[0, 255]变成[0, 1]】
进入该类下,进入.to_tensor()
在这里插入图片描述
如果图像是数据类型是torch.ByteTensor要除以255,(RGB范围0~255?)
在这里插入图片描述
PILImage->numpy->tensor

image = Image.open(image_path)  # 读取图片
image = np.array(image, dtype=np.float32)  # PILImage->numpy 输出(h,w,c)
image /= 255.0  # 网络输入需要归一化
image = np.transpos	e(image, (2, 0, 1))  # np下维度转换使用transpose
image = torch.from_numpy(image)  # numpy->tensor
print(image.shape)

输出

torch.Size([3, 575, 551])  # (c,h,w)

PILImage->tensor

image = Image.open(image_path)  # 读取图片
image = transforms.ToTensor()(image)  # PILImage->tensor
# image = torch.Tensor.permute(image, (0, 1, 2))  # tensor下维度转换
print(image.shape)

使用torchvision下transforms依赖包,一步到位。
第二行中,集成处理了以下步骤:
1,img.tobytes() 将图片转化成内存中的存储格式
2,torch.BytesStorage.frombuffer(img.tobytes() ) 将字节以流的形式输入,转化成一维的张量
3,对张量进行reshape
4,对张量进行permute(2,0,1)
5,将当前张量的每个元素除以255
6,输出张量

第三行备注的那句,是在tensor下如果想要转换维度使用的代码。跟之前numpy下不同。

系统学习Pytorch笔记三:Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms)

PILImage和tensor转换
PIL包中图像的mode参数——pic.mode
为什么一些机器学习模型需要对数据进行归一化?
深度学习中数据到底要不要归一化?实测数据来说明!
深度学习模型学习的是一种end-to-end的映射关系,存在一个尺度问题,如果只对X或者Y做预处理,会使得两端的空间(指的是特征空间)差异变大,需要学习的映射就会变得更加的隐晦。而同时对X和Y进行预处理,压缩了这种特征空间的变异性,所以使得要被学习到的映射变得简单了,或者说变的更加的“可视化”。

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

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

相关文章

使用CRM系统如何提高客户成交率?

企业衡量销售业绩的一个重要指标就是客户成交率,它反映了潜在客户到实际客户的转化效率。提高客户成交率,可以帮助企业降本增效,提高收益。那么,如何提高客户成交率呢?下面说说CRM系统提高成交率的方法。 精准定位目标…

Flutter Cannot run with sound null safety, because the following dependencies

flutter sdk 版本升级到2.0或者更高的版本后,运行之前的代码会报错 Error: Cannot run with sound null safety, because the following dependencies dont support null safety:- package:flutter_swiper- package:flutter_page_indicator- package:transformer_p…

聊聊智能物流技术

目录 1.什么是智能物流 2.智能物流的方向 3.智能物流的发展过程 4.智能物流带给人们的福利 1.什么是智能物流 智能物流是指利用物联网、人工智能、大数据等技术手段,对物流过程中的信息、资源和流程进行智能化管理和优化,以提升物流效率、降低成本、增…

Oracle给表空间添加容量

假如给SYSTEM表空间添加 查看文件位置和容量:Select * FROM DBA_DATA_FILES; FILE_NAME就是要修改的文件 查看每一个表空间的容量,单位MB: SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces…

openCV实战-系列教程6:图像金字塔(图像金字塔/高斯金字塔/拉普拉斯金字塔/图像上采样/图像下采样/轮廓检测/轮廓特征与近似/模版匹配)、原理解析、源码解读

1、图像金字塔定义 图像金字塔就是将图像组合成像金字塔一样的形状,比如原来的图像是1600*900,现在将它变换为1200*750的图像,在金字塔越上面就会越小。那么一张图像就会有多种形式,在以后如果做特征提取,可能不知有一…

数据库表结构导出为word、html、markdown【转载,已解决,已验证,开源】

注&#xff1a;本文为gitcode代码验证&#xff0c;转载gitcode gitcode&#xff1a;https://gitcode.net/mirrors/pingfangushi/screw?utm_sourcecsdn_github_accelerator 整理数据库文档&#xff1a;https://mp.weixin.qq.com/s/Bo_U5_cl82hfQ6GmRs2vtA <!--数据库文档核…

[Linux]进程状态

[Linux]进程状态 文章目录 [Linux]进程状态进程状态的概念阻塞状态挂起状态Linux下的进程状态孤儿进程 进程状态的概念 了解进程状态前&#xff0c;首先要知道一个正在运行的进程不是无时无刻都在CPU上进行运算的&#xff0c;而是在操作系统的管理下&#xff0c;和其他正在运行…

Jenkins的流水线详解

来源&#xff1a;u.kubeinfo.cn/ozoxBB 什么是流水线 声明式流水线 Jenkinsfile 的使用 什么是流水线 jenkins 有 2 种流水线分为声明式流水线与脚本化流水线&#xff0c;脚本化流水线是 jenkins 旧版本使用的流水线脚本&#xff0c;新版本 Jenkins 推荐使用声明式流水线。…

职场汇报必备-超级有用12张思维导图

你有没有想过&#xff1f; 为什么你和同事工作的表现同样出色&#xff0c;但是上司最亲睐的人却不是你&#xff1f; 为什么你勤勤恳恳地努力工作&#xff0c;承担了组织内部的许多责任&#xff0c;但却享受不到组织分配的利益&#xff1f; 为什么你的上司对你的态度总是不瘟不火…

2023最新出炉的整理软件测试常见面试题附答案

包含的模块&#xff1a; 本文分为十九个模块&#xff0c;分别是&#xff1a;软件测试 基础、liunx、MySQL、web测试、接口测试、APP测试 、管理工具、Python、性能测试、selenium、lordrunner、计算机网络、组成原理、数据结构与算法、逻辑题、人力资源&#xff01;&#xff0…

工程项目实施时,如何制定项目进度计划?

在实施工程项目之前&#xff0c;必须制定项目进度计划&#xff0c;并按照进度计划进行控制。 项目进度计划是指&#xff0c;在规定的时间内&#xff0c;制定合理且经济的进度计划&#xff08;包括多级管理的子计划&#xff09;。在执行该计划的过程中&#xff0c;需要经常检查实…

全流程R语言Meta分析核心技术高阶应用

查看原文>>>全流程R语言Meta分析核心技术高阶应用 目录 专题一、Meta分析的选题与检索 专题二、Meta分析与R语言数据清洗及统计方法 专题三、R语言Meta分析与作图 专题四、R语言Meta回归分析 专题五、R语言Meta诊断分析 专题六、R语言Meta分析的不确定性 专题…

stm32 无刷电机 V/F控制(无刷电机变频控制)以及与foc(矢量控制)的区别

无刷电机有三种控制方式&#xff0c;方波控制&#xff0c;foc控制以及变频控制&#xff0c;前两章我们讲解了方波和foc的控制方法&#xff0c;今天我们一起来讲一讲什么是无刷电机的变频控制&#xff08;VF&#xff09;以及变频控制的优势是什么。 实验用的硬件还是KY_Motor的无…

Windows上安装Hugo的环境

Hugo是一个使用Go编写的静态站点生成器&#xff0c;即网站构建工具。 静态的意思是指在内容在网站上呈现之前需要全部编译成HTML文件。而动态的站点生成器是请求哪个页面就编译生成哪个HTML页面。 在Windows上可以选用包管理器Chocolatey、Scoop、Winget来安装Hugo。 这里我…

【算法刷题之哈希表篇(1)】

目录 1.哈希表基础理论2.leetcode-242. 有效的字母异位词&#xff08;1&#xff09;方法一&#xff1a;排序&#xff08;2&#xff09;方法二&#xff1a;哈希表 3.leetcode-349. 两个数组的交集&#xff08;1&#xff09;方法一&#xff1a;哈希表&#xff08;2&#xff09;方…

脚本掌控,Linux上实现Spring Boot(JAR包)开机自启

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; 脚本掌控&#xff0c;Linux上实现Spring Boot&#xff08;JAR包&#x…

智能综合性公共系统安防监控系统项目建设方案

一、系统概述 智能综合性公共系统安防监控系统是为了保障公共系统的安全而设计的一套综合性的安防解决方案。该系统集成了多种先进的技术和设备&#xff0c;以实现对系统内部和周围环境的全方位、高效率的监控和管理。智能综合性公共系统安防监控系统旨在提供全面、高效的安全保…

冠达管理大盘分析:光伏板块震荡走高,钧达股份涨停

光伏板块24日盘中震动走高&#xff0c;到发稿&#xff0c;时创动力大涨超16%&#xff0c;钧达股份涨停&#xff0c;昱能科技涨超8%&#xff0c;阿特斯、晶澳科技、阳光电源等涨超5%&#xff0c;隆基绿能涨近4%。 东研山私募证券投资&#xff08;百度搜索冠达管理)基金管理有限公…

用心维护好电脑,提高学习工作效率

无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器&#xff0c;一台好电脑除了自身配置要经得起考验&#xff0c;后期主人对它的维护也是决定它寿命的重要因素&#xff01; 一、我的电脑 系统制造商: ASUSTeK COMPUTER INC. 系统型号: ZenBook UX481FAY 1.1 如…

Docker创建Consul并添加权限控制

一、部署Consul 1、拉取镜像&#xff1a; docker pull consul:<consul-version> 2、运行 docker run --name consul1 -p 8300:8300/tcp -p 8301:8301/tcp -p 8301:8301/udp -p 8302:8302/tcp -p 8302:8302/udp -p 8500:8500 -p 8600:8600/tcp -p 8600:8600/udp -v /h…