Pytorch中transform的应用

news/2024/9/22 22:08:40/

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

1. 常用的transforms操作

1.1 torchvision.transforms模块

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

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

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

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

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

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

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

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

    python">transform = transforms.RandomRotation(degrees=30)
    

2. 组合转换操作

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

python">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. 应用示例

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

python">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__方法。

python">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.ppmy.cn/news/1511163.html

相关文章

《AI视频类工具之十七——​ Fliki.ai》

一.简介 官网:https://fliki.ai/ Fliki.ai 是一个在线视频制作平台,它提供了一系列的功能来帮助用户快速创建专业级别的视频内容。 二.功能介绍 1、免费使用: Fliki.ai 是一个免费的在线视频制作工具,用户可以免费访问其基本功能。2、丰富的模板: 平台提供了多种视频模…

Operator 运算符 || 可调用对象

运算符重载 重载:在同一个作用域内定义多个同名函数,这些函数具有不同的参数列表或函数体。泛型:允许编写代码时不指定具体的数据类型重载运算符,可以重新定义运算符的行为几元运算符:包含几个运算对象,重…

FFmpeg源码:av_log2函数分析

一、av_log2函数的声明 av_log2函数声明在FFmpeg源码(本文演示用的FFmpeg源码版本为7.0.1)的头文件libavutil/common.h中: #ifndef av_log2 av_const int av_log2(unsigned v); #endif 该函数作用是:求形参v是2的多少次幂&#…

record 关键字

public record GetTemplateSettingsRequest(string SubjectUuid, SubjectType SubjectType) : IRequest<TemplateSettingsVO>; 使用了 C# 9 引入的新特性 record 来定义一个不可变的数据结构。以下是对这行代码的详细解释&#xff1a; 1. record 关键字 record 是 C# …

基于微信小程序地图实现点位标注、覆盖物、地图聊天

目录 小程序部分map标签的使用获取用户经纬度并转换地址地图点击事件覆盖物标注点击并实现弹窗交互数据库及接口部分数据库表结构设计API搭建小程序接口使用注意事项wx.getLocation深入控制地图小程序部分 map标签的使用 创建小程序的步骤这里不再重复赘述,在wxml页面中放一个…

【经典算法】BFS_最短路问题

目录 1. 最短路问题介绍2. 算法原理和代码实现(含题目链接)1926.迷宫中离入口最近的出口433.最小基因变化127.单词接龙675.为高尔夫比赛砍树 3. 算法总结 1. 最短路问题介绍 最短路径问题是图论中的一类十分重要的问题。本篇文章只介绍边权为1(或边权相同)的最简单的最短路径问…

TinyWebserver的复现与改进(6):定时器处理非活动连接

如果客户端长时间没有动作&#xff0c;会占用了许多连接资源&#xff0c;严重影响服务器的性能。因此需要通过实现一个服务器定时器&#xff0c;处理这种非活跃连接&#xff0c;释放连接资源。 定时器处理流程 SIGALARM触发&#xff1a;整个流程开始于一个 SIGALARM 信号&…

使用WebStorm进行高效的全栈JavaScript开发

使用WebStorm进行高效的全栈JavaScript开发&#xff0c;是一个涉及多方面技能与工具利用的过程。WebStorm&#xff0c;作为JetBrains公司推出的一款专为前端开发者和全栈工程师设计的集成开发环境&#xff08;IDE&#xff09;&#xff0c;以其强大的功能、卓越的性能和友好的用…