torchvision.transforms模块功能介绍

2024-02-20 09:50

本文主要是介绍torchvision.transforms模块功能介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

torchvision.transforms模块介绍

torchvision.transforms模块是PyTorch进行图片预处理的模块。

一、 图片数据读取

对图像进行处理的第一步就是读取图片。一般来说,图片读入后以numpy.ndarray格式和PILImage方式。这里简单介绍几种图片的读取方式。
请添加图片描述

1. PIL读取和显示图片

PIL通过Image模块读入图片。

from PIL import Imagedir_path = r"C:\Users\用户名\Pictures\test.jpg"
img_plt = Image.open(dir_path)
>>>print(img_plt)
output: <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=4000x2250 at 0x20319DB3240>
>>>plt.imshow(img_plt)

在这里插入图片描述

2. matplotlib.pyplot读取图片

import matplotlib.pyplot as pltdir_path = r"C:\Users\用户名\Pictures\test.jpg"
img_plt = plt.imread(dir_path)
>>>print(type(img_plt))
output: <class 'numpy.ndarray'>
>>>plt.imshow(img_plt)

在这里插入图片描述

二、对PIL.Image图像的变换

1. torchvision.transforms中对PIL.Image变换的类

  1. class torchvision.transforms.CenterCrop(size)
    将给定的 PIL.Image 进行中心切割,得到给定的size,size可以是tuple(target_height, target_width)。size也可以是Integer,这种情况下切出来的是正方形。size大小可以超过图片尺寸,
img_trans = transforms.CenterCrop((3000, 4000))(img_plt)
plt.imshow(img_trans)

在这里插入图片描述
2. class torchvision.transforms.RandomCrop(size, padding=0)
切割中心点的位置随机选取。size 可以是tuple也可以是Integer。size大小不能超过图片尺寸。

img_trans = transforms.RandomCrop((300, 400))(img_plt)
plt.imshow(img_trans)

在这里插入图片描述
3. class torchvision.transforms.RandomHorizontalFlip
随机水平翻转给定的PIL.Image,概率为0.5。即:一半的概率翻转,一半的概率不翻转。

img_trans = transforms.RandomHorizontalFlip(0.5)(img_plt)
plt.imshow(img_trans)

在这里插入图片描述
4. class torchvision.transforms.RandomSizedCrop(size, interpolation=2)
先将给定的 PIL.Image 随机切,然后再resize成给定的size大小。

img_trans = transforms.RandomSizedCrop((200, 300))(img_plt)
plt.imshow(img_trans)

在这里插入图片描述
5. class torchvision.transforms.Pad(padding, fill=0)
将给定的PIL.Image的所有边用给定的pad value填充。 padding:要填充多少像素 fill:用什么值填充.

img_trans = transforms.Pad(padding=50, fill=(150, 150, 0))(img_plt)
plt.imshow(img_trans)

在这里插入图片描述

三、 转换为Tensor

  1. class torchvision.transforms.ToTensor
    把一个取值范围是[0,255]的PIL.Image或者shape为(H,W,C)的numpy.ndarray,转换成形状为[C,H,W],取值范围是[0,1.0]的torch.FloadTensor
transforms.ToTensor()(img_trans)
output:tensor([[[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882],[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882],[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882],...,[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882],[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882],[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882]],[[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882],[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882],[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882],...,[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882],[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882],[0.5882, 0.5882, 0.5882,  ..., 0.5882, 0.5882, 0.5882]],[[0.0000, 0.0000, 0.0000,  ..., 0.0000, 0.0000, 0.0000],[0.0000, 0.0000, 0.0000,  ..., 0.0000, 0.0000, 0.0000],[0.0000, 0.0000, 0.0000,  ..., 0.0000, 0.0000, 0.0000],...,[0.0000, 0.0000, 0.0000,  ..., 0.0000, 0.0000, 0.0000],[0.0000, 0.0000, 0.0000,  ..., 0.0000, 0.0000, 0.0000],[0.0000, 0.0000, 0.0000,  ..., 0.0000, 0.0000, 0.0000]]])

四、对Tensor进行变换

  1. class torchvision.transforms.Normalize(mean, std)
    给定均值:(R,G,B) 方差:(R,G,B),将会把Tensor正则化。即:Normalized_image=(image-mean)/std。

这篇关于torchvision.transforms模块功能介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/727826

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe