当前位置: 首页 > news >正文

Pytorch中transform的应用

在PyTorch中,transforms模块主要用于对图像进行预处理和数据增强,以便于训练深度学习模型。这些转换操作可以包括裁剪、缩放、旋转、翻转等,以及对图像进行标准化处理。下面将详细介绍一些常用的transforms操作及其应用。

1. 常用的transforms操作

1.1 torchvision.transforms模块

torchvision.transforms模块提供了许多常用的图像转换函数,这些函数可以单独使用,也可以组合使用。

1.2 基本转换操作
  • ToTensor: 将PIL图像或NumPy数组转换为Tensor。

    from torchvision import transformstransform = transforms.ToTensor()
    
  • Normalize: 对图像进行标准化处理,即减去均值并除以标准差。

    transform = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
    
  • Resize: 调整图像大小。

    transform = transforms.Resize((256, 256))
    
  • CenterCrop: 中心裁剪图像。

    transform = transforms.CenterCrop(224)
    
  • RandomCrop: 随机裁剪图像。

    transform = transforms.RandomCrop(224)
    
  • RandomHorizontalFlip: 随机水平翻转图像。

    transform = transforms.RandomHorizontalFlip(p=0.5)
    
  • RandomRotation: 随机旋转图像。

    transform = transforms.RandomRotation(degrees=30)
    

2. 组合转换操作

可以使用transforms.Compose将多个转换操作组合在一起,形成一个转换流水线。

from torchvision import transformstransform = transforms.Compose([transforms.Resize((256, 256)),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

3. 应用示例

假设有一个图像数据集,并希望对其进行预处理和数据增强。可以使用上述转换操作来创建一个转换流水线,并将其应用于数据集。

from torchvision import datasets, transforms
from torch.utils.data import DataLoader# 定义转换操作
transform = transforms.Compose([transforms.Resize((256, 256)),transforms.RandomCrop(224),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])# 加载数据集
dataset = datasets.ImageFolder(root='path/to/dataset', transform=transform)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)# 训练模型
for images, labels in dataloader:# 训练代码pass

4. 自定义转换操作

如果内置的转换操作不能满足需求,还可以自定义转换操作。自定义转换操作需要继承torchvision.transforms.Transform类,并实现__call__方法。

from torchvision import transforms
from PIL import Imageclass CustomTransform(transforms.Transform):def __call__(self, img):# 自定义转换操作img = img.filter(ImageFilter.GaussianBlur(radius=2))return imgtransform = transforms.Compose([transforms.Resize((256, 256)),CustomTransform(),transforms.ToTensor()
])

http://www.lryc.cn/news/426702.html

相关文章:

  • okular阅读软件简介
  • 【书生大模型实战营(暑假场)闯关材料】基础岛:第1关 书生大模型全链路开源体系
  • 掌握抽象工厂模式:打造灵活且强大的跨平台产品族
  • 【Hadoop】建立圈内组件的宏观认识(大纲版)
  • NFS主从同步Rsync、sersync2
  • uniapp项目中,在原有数据中增加选中的状态,数据不改变
  • WPF自定义控件
  • Java中的全局异常处理器 -- GlobalExceptionHandler
  • R语言文本挖掘-万字详细解析tm包
  • JWT中的Token
  • 苹果在iOS 18.1中向第三方开发者开放iPhone的NFC芯片
  • 系统开发之禁止卸载应用名单
  • wait 和 notify
  • docker 启动 mongo,redis,nacos.
  • Docker Swarm 搭建
  • 浅述TSINGSEE青犀EasyCVR视频汇聚平台与海康安防平台的区别对比
  • 设计模式系列:策略模式的设计与实践
  • 数据挖掘之数据预处理
  • RocketMQ核心知识点整理,值得收藏!
  • 微信小程序骨架屏
  • Window下node安装以及配置
  • 校园疫情防控系统--论文pf
  • 在Debian 9上使用Apt安装Java的方法
  • 人工智能在网络安全中的三大支柱
  • rk3568mpp终端学习笔记
  • 【C++继承】赋值兼容转换作用域派生类的默认成员函数
  • HTML5+JavaScript绘制彩虹和云朵
  • MySQL——单表查询(二)按条件查询(2)带 IN 关键字的查询
  • 【mysql】mysql 用户管理---创建、权限管理等等
  • 本地服务器物理机中redis设置、取消密码