transforms.Compose()函数的使用及说明

 更新时间:2023年08月03日 09:06:28   作者:HealthScience  
这篇文章主要介绍了transforms.Compose()函数的使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

transforms.Compose()函数的使用

torchvision.transforms是pytorch中的图像预处理包。

一般用Compose把多个步骤整合到一起

比如说:

transforms.Compose([
    transforms.CenterCrop(10),
    transforms.ToTensor(),
])

这样就把两个步骤整合到了一起。

介绍transforms中的函数

Resize把给定的图片resize到given size
Normalize用均值和标准差归一化张量图像
ToTensorconvert a PIL image to tensor (H*W*C) in range [0,255] to a torch.Tensor(C*H*W) in the range [0.0,1.0]
CenterCrop在图片的中间区域进行裁剪
RandomCrop在一个随机的位置进行裁剪
FiceCrop把图像裁剪为四个角和一个中心
RandomResizedCrop将PIL图像裁剪成任意大小和纵横比
ToPILImageconvert a tensor to PIL image
RandomHorizontalFlip以0.5的概率水平翻转给定的PIL图像
RandomVerticalFlip以0.5的概率竖直翻转给定的PIL图像
Grayscale将图像转换为灰度图像
RandomGrayscale将图像以一定的概率转换为灰度图像
ColorJitter随机改变图像的亮度对比度和饱和度

备注:Python图像库PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。

实例

经常看到

transform.ToTensor(),
transform.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))

那transform.Normalize()是怎么工作的呢?以上面代码为例,

  • ToTensor()能够把灰度范围从0-255变换到0-1之间,
  • 而后面的transform.Normalize()则把0-1变换到(-1,1).

具体地说,对每个通道而言,Normalize执行以下操作:image=(image-mean)/std其中mean和std分别通过(0.5,0.5,0.5)和(0.5,0.5,0.5)进行指定。

原来的0-1最小值0则变成(0-0.5)/0.5=-1,而最大值1则变成(1-0.5)/0.5=1. 

transforms.Compose()类详解:串联多个transform操作

torchvision是pytorch的一个图形库,它服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。torchvision.transforms主要是用于常见的一些图形变换。

以下是torchvision的构成:

  • torchvision.datasets: 一些加载数据的函数及常用的数据集接口;
  • torchvision.models: 包含常用的模型结构(含预训练模型),例如AlexNet、VGG、ResNet等;
  • torchvision.transforms: 常用的图片变换,例如裁剪、旋转等;
  • torchvision.utils: 其他的一些有用的方法。

本文的主题是其中的torchvision.transforms.Compose()类。

这个类的主要作用是串联多个图片变换的操作。

这个类的构造很简单:

class torchvision.transforms.Compose(transforms):
 # Composes several transforms together.
 # Parameters: transforms (list of Transform objects) – list of transforms to compose.
Example # 可以看出Compose里面的参数实际上就是个列表,而这个列表里面的元素就是你想要执行的transform操作。
>>> transforms.Compose([
>>>     transforms.CenterCrop(10),
>>>     transforms.ToTensor(),])

事实上,Compose()类会将transforms列表里面的transform操作进行遍历。

实现的代码很简单:

## 这里对源码进行了部分截取。
def __call__(self, img):
	for t in self.transforms:	
		img = t(img)
    return img

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在Django的模型和公用函数中使用惰性翻译对象

    在Django的模型和公用函数中使用惰性翻译对象

    这篇文章主要介绍了在Django的模型和公用函数中使用惰性翻译对象,Django是丰富多彩的Python框架中人气最高的一个,需要的朋友可以参考下
    2015-07-07
  • python字符串常用方法

    python字符串常用方法

    这篇文章主要介绍了python字符串常用方法,find、count、replace、split、startswith、endswith等多种方法,需要的朋友可以参考一下文章得具体内容,希望对你有所帮助
    2021-10-10
  • 详解python脚本自动生成需要文件实例代码

    详解python脚本自动生成需要文件实例代码

    这篇文章主要介绍了详解python脚本自动生成需要文件实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • python mqtt 客户端的实现代码实例

    python mqtt 客户端的实现代码实例

    这篇文章主要介绍了python mqtt 客户端代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python中的json内置库详解

    Python中的json内置库详解

    这篇文章主要介绍了Python中的json内置库详解,在学习做自动化测试的过程中,python 里有一个内置的 json 库,必须要学习好,json 是用于存储和交换数据的语法,是一种轻量级的数据交换式使用场景,需要的朋友可以参考下
    2023-08-08
  • python3中bytes数据类型的具体使用

    python3中bytes数据类型的具体使用

    bytes类型是python3引入的,本文就来介绍一下python3中bytes数据类型的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • Python机器学习之scikit-learn库中KNN算法的封装与使用方法

    Python机器学习之scikit-learn库中KNN算法的封装与使用方法

    这篇文章主要介绍了Python机器学习之scikit-learn库中KNN算法的封装与使用方法,结合实例形式分析了scikit-learn库中KNN算法的相关调用与使用技巧,需要的朋友可以参考下
    2018-12-12
  • python logging添加filter教程

    python logging添加filter教程

    今天小编就为大家分享一篇python logging添加filter教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python内置函数的用法实例教程

    Python内置函数的用法实例教程

    这篇文章主要介绍了Python内置函数的用法,包括求绝对值的abs()函数及数值类型转换函数等,需要的朋友可以参考下
    2014-09-09
  • vue防止用户连续点击造成多次提交的三种解决方法

    vue防止用户连续点击造成多次提交的三种解决方法

    本文主要介绍了vue防止用户连续点击造成多次提交的三种解决方法,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03

最新评论