Transform的作用

把图片经过Transforms的一些函数之后就会对图片进行一些变化。比如,resize就是改变其大小,totensor就是把图片PIL或者numpy类型转化为Tensor类型。

Transforms的结构及和 用法

totensor的使用

Transforms下的toTensor是一个对象,我们需要先实例化一个对象之后再通过这个实例化的对象进行调用。

from torchvision import transforms

tensor_class = transforms.ToTensor()
img_tensor = tensor_class(img_PIL)

为什么使用transforms转化为Tensor类型

因为tensor类型包装了我们神经网络中所需要的一些参数,而PIL或者numpy类型是没有的。

ToTensor实例代码


from PIL import Image
from torchvision.transforms import transforms
from torch.utils.tensorboard import SummaryWriter img_PIL = Image.open("Dataset/hymenoptera_data/train/ants/0013035.jpg")
# print(img_PIL)
tensor_class = transforms.ToTensor()
img_tensor = tensor_class(img_PIL) writer = SummaryWriter('logs') writer.add_image('tensor-test',img_tensor,1,)
# print(img_tensor)
writer.close()

效果如下

常用的Transforms

Transforms的使用主要就是使用其中的一些常见 的类比如ToTensor(),Resize(),使用这些类的时候主要是注意其输入和输出,作用。最主要的是输入和输出。下图是transforms中的类,可以使用pycharm中的structure功能查看一个py文件中的函数和类。AIT+7快捷键

compose类



他的作用就是将transforms中的几个类结合使用。比如

transforms.Compose([transforms.CenterCrop(10),transforms.ToTensor()])
意思就是先进行CenterCrop再进行Totensor操作,要注意前一个类的输出符合后一个类的输入。
举例:
trans_Compose = transforms.Compose([transforms.Resize(216),transforms.ToTensor()])
img_PIL_to_resize_to_tensor = trans_Compose(img_PIL)
print(type(img_PIL_to_resize_to_tensor))

效果输出:

Normalize类

transforms.Normalize 是一个在深度学习库 PyTorch 中广泛使用的图像预处理函数,属于 torchvision.transforms 模块。该函数主要用于对输入数据(尤其是图像数据)进行标准化处理,以便提升模型训练的效率和效果。标准化处理的具体操作是对数据的每个通道(对于RGB图像即红、绿、蓝三个通道)执行如下操作:

output[channel] = (input[channel] - mean[channel]) / std[channel]

。通过这种方式,数据会被调整到均值为0、标准差为1的分布,这样的处理有助于消除不同通道间尺度不一致的问题,并使得模型学习过程更加稳定。

在实际应用中,transforms.Normalize 需要两个参数:mean 和 std,它们分别是每个通道的均值和标准差的列表。例如,对于典型的ImageNet数据集,常用的参数值为 mean=[0.485, 0.456, 0.406] 和 std=[0.229, 0.224, 0.225]。

需要注意的是,在应用 transforms.Normalize 之前,数据往往需要被转换成 PyTorch 的 Tensor 格式且其值通常位于[0, 1]或[-1, 1]区间内,这通常通过 transforms.ToTensor() 或其他预处理步骤完成。

from PIL import Image
from torchvision.transforms import transforms
from torch.utils.tensorboard import SummaryWriter img_PIL = Image.open("Dataset/hymenoptera_data/train/ants/0013035.jpg")
# print(img_PIL) #Totensor
tensor_class = transforms.ToTensor()
img_tensor = tensor_class(img_PIL) #Nor
print(img_tensor[0][0][0])
trans_Nor = transforms.Normalize([1,2,0.5],[1,0.5,0.5])
img_Normal = trans_Nor(img_tensor)
print(img_Normal[0][0][0]) #
writer = SummaryWriter('logs') writer.add_image('Totensor',img_tensor,1,)
writer.add_image('Normal',img_Normal,2)
# print(img_tensor)
writer.close()

效果如下:

Resize

改变图片大小,输入要么是(H,W)或者是一个整数,如果是(H,W)那么照片就是固定这个比例,如果是整数,那么就按照最小边来处理。通常适用于预处理那些尺寸不一的图像,使其适配模型所需的固定输入尺寸,同时保持图像内容的自然外观。

from PIL import Image
from torchvision.transforms import transforms
from torch.utils.tensorboard import SummaryWriter img_PIL = Image.open("Dataset/hymenoptera_data/train/ants/0013035.jpg")
# print(img_PIL) #Totensor
tensor_class = transforms.ToTensor()
img_tensor = tensor_class(img_PIL) #Nor
print(img_tensor[0][0][0])
trans_Nor = transforms.Normalize([1,2,0.5],[1,0.5,0.5])
img_Normal = trans_Nor(img_tensor)
print(img_Normal[0][0][0]) #Resize trans_Resize = transforms.Resize((100,300))
img_resize = trans_Resize(img_tensor)
# print(img_resize.shape) #
writer = SummaryWriter('logs') writer.add_image('Totensor',img_tensor,1,)
writer.add_image('Normal',img_Normal,2)
writer.add_image('resize',img_resize,3)
# print(img_tensor)
writer.close()

效果如下:

对于其他类的使用,多看官方文档,不会就翻译或者问chatgpt

Transforms的使用的更多相关文章

  1. Intro to CSS 3D transforms

    原文地址:Intro to CSS 3D transforms,本文只是翻译了其中的一部分,省去了作者写文章的原因浏览器兼容部分(已经过时) Perspective 元素需要设置需要设置perspec ...

  2. OpenCASCADE Coordinate Transforms

    OpenCASCADE Coordinate Transforms eryar@163.com Abstract. The purpose of the OpenGL graphics process ...

  3. IE10开始支持CSS3 Transitions, Transforms 和 Animations

    这是一个好消息,微软公开说明IE10预览版已经支持CSS3属性 Transitions, Transforms 和 Animations,你可以直接写transitions,而不是加个恶心的前缀-ms ...

  4. CSS3 笔记四(Transforms/Transition/Animations)

    CSS3 2D Transforms Methods translate() rotate() scale() skewX() skewY() matrix() 1> translate() T ...

  5. 前端开发教程:使用 CSS3 Transforms 构建圆形导航

    在本教程中我将告诉你如何使用 CSS 变换来创建圆形导航.教程逐一讲解实现这个样式将要涉及一些基本的数学知识并配合 CSS 变换来创建这些样式.不过不用担心,这里用到的数学知识真的是很简单的.教程使用 ...

  6. Codrops 优秀教程:CSS 3D Transforms 实现书本效果

    这个使用  CSS 3D Transforms 实现创意书本效果的来自 Codrops 网站.你可以看到两种类型的书设计:精装书和平装书.这两个效果都可以很容易地使用 CSS 修改.赶紧体验一下吧. ...

  7. CSS3 transforms 3D翻开

    R T L B   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  8. CSS3 Transitions, Transforms和Animation使用简介与应用展示

    CSS3 Transitions, Transforms和Animation使用简介与应用展示 by zhangxinxu from http://www.zhangxinxu.com本文地址:htt ...

  9. 图形变幻矩阵 Transforms

    https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d ...

  10. Cocos2D:变换(transforms)在图形编程中扮演的角色

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...

随机推荐

  1. saltStack自动化工具

    目录 SaltStack自动化工具 核心概念 1. Master 和 Minion 2. State 3. Pillar 4. Grains 5. Modules 6. Runner 7. React ...

  2. Spring MVC 中视图的实现原理,在Spring MVC 中实现重定向和转发,以及访问静态资源

    1. Spring MVC 中视图的实现原理,在Spring MVC 中实现重定向和转发,以及访问静态资源 @ 目录 1. Spring MVC 中视图的实现原理,在Spring MVC 中实现重定向 ...

  3. django 信号第一个 raise ValidationError出现后,还会继续下一个if吗

    在你提供的代码片段中,如果第一个 raise ValidationError 触发,会抛出异常并停止执行当前函数或代码块.这是因为异常(Exception)会中断正常的代码流程,将控制权传递给调用堆栈 ...

  4. 2024-07-27:用go语言,给定一个正整数数组,最开始可以对数组中的元素进行增加操作,每个元素最多加1。 然后从修改后的数组中选出一个或多个元素,使得这些元素排序后是连续的。 要求找出最多可以选

    2024-07-27:用go语言,给定一个正整数数组,最开始可以对数组中的元素进行增加操作,每个元素最多加1. 然后从修改后的数组中选出一个或多个元素,使得这些元素排序后是连续的. 要求找出最多可以选 ...

  5. SpringSecurity:hasAuthority与自定义权限校验

    springsecurity中有两种权限控制方法 1.基于注解 @PreAuthorize("hasAuthority('syst:add')") 他的作用是在controller ...

  6. 假期小结3Hadoop学习

    学习Hadoop是一个很好的选择,因为它是大数据处理和分析领域最流行的框架之一.Hadoop提供了可靠.可扩展的分布式数据处理能力,适用于处理大规模数据和构建可靠的数据管道. 在学习Hadoop时,以 ...

  7. 图书《数据资产管理核心技术与应用》核心章节节选-3.1.2. 从Spark 执行计划中获取数据血缘

    本文节选自清华大学出版社出版的图书<数据资产管理核心技术与应用>,作者为张永清等著. 从Spark 执行计划中获取数据血缘 因为数据处理任务会涉及到数据的转换和处理,所以从数据任务中解析血 ...

  8. 【Scala】04 对象特性Part1

    1.声明式包管理: 一个Scala文件可以声明N个包 包的意义和Java的包管理是一样的 同样也需要import导入资源声明 package pkgA { import com.oracle.nio. ...

  9. 【Vue】Re06 组件化

    将一个应用页面拆分成若干个可重复使用的组件 一.Vue的组件的使用步骤: 1.创建组件构造器 2.注册组件 3.使用组件 <!DOCTYPE html> <html lang=&qu ...

  10. ubuntu18.04 环境下如何为 vscode 安装kite

    传说中的Python环境下最好用的智能补全工具   kite =============================================================== 1.   ...