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中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

Python模块导入的几种方法实现

《Python模块导入的几种方法实现》本文主要介绍了Python模块导入的几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录一、什么是模块?二、模块导入的基本方法1. 使用import整个模块2.使用from ... i