Pytorch教程[03]transforms(二)

简介: Pytorch教程[03]transforms

5.5 RandomAffine


功能:对图像进行仿射变换,仿射变换是二维的线性变换,由五种基本原子变换构成,分别是旋转、平移、缩放、错切和翻转

• degrees:旋转角度设置

• translate:平移区间设置,如(a, b), a设置宽(width),b设置高(height)

图像在宽维度平移的区间为 -img_width * a < dx < img_width * a

• scale:缩放比例(以面积为单位)

• fill_color:填充颜色设置

RandomAffine(degrees, 
       translate=None, 
       scale=None, 
         shear=None, 
       resample=False, 
       fillcolor=0)

5.6 RandomErasing()


功能:对图像进行随机遮挡

• p:概率值,执行该操作的概率

• scale:遮挡区域的面积

• ratio:遮挡区域长宽比

• value:设置遮挡区域的像素值,(R, G, B) or (Gray)

RandomErasing(p=0.5, 
        scale=(0.02, 0.33), 
        ratio=(0.3, 3.3), 
        value=0, 
        inplace=False)

image.png

5.7 transforms.Lambda()


功能:用户自定义lambda方法

• lambd:lambda匿名函数

lambda [arg1 [,arg2, … , argn]] : expression

transforms.Lambda(lambd)

例:

transforms.TenCrop(200, vertical_flip=True),
transforms.Lambda(lambda crops: torch.stack([transforms.Totensor()(crop) for crop in crops])),

六、transforms的操作


6.1 transforms.RandomChoice()


功能:从一系列transforms方法中随机挑选一个

transforms.RandomChoice([transforms1, transforms2, transforms3])

6.2 transforms.RandomApply()


功能:依据概率执行一组transforms操作

transforms.RandomApply([transforms1, transforms2, transforms3], p=0.5)

6.3 transforms.RandomOrder()


功能:对一组transforms操作打乱顺序

transforms.RandomOrder([transforms1, transforms2, transforms3])

七、自定义transforms


自定义transforms要素:

仅接收一个参数,返回一个参数

注意上下游的输出与输入

class Compose(object):
  def __call__(self, img):
    for t in self.transforms:
      img = t(img)
    return img

通过类实现多参数传入:

class YourTransforms(object):
  def __init__(self, ...):
    ...
  def __call__(self, img):
    ...
    return img

7.1椒盐噪声


椒盐噪声又称为脉冲噪声,是一种随机出现的白点或者黑点, 白点称为盐噪声,黑色为椒噪声

信噪比(Signal-Noise Rate, SNR)是衡量噪声的比例,图像中为图像像素的占比

image.png

class AddPepperNoise(object):
  def __init__(self, snr, p):
    self.snr = snr
    self.p = p
  def __call__(self, img):
    ```
    添加椒盐噪声具体实现过程
    ```
    return img
class Compose(object):
  def __call__(self, img):
    for t in self.transforms:
      img = t(img)
    return img

八、transforms方法总览


一、裁剪

• transforms.CenterCrop

• transforms.RandomCrop

• transforms.RandomResizedCrop

• transforms.FiveCrop

• transforms.TenCrop

二、翻转和旋转

• transforms.RandomHorizontalFlip

• transforms.RandomVerticalFlip

• transforms.RandomRotation

三、图像变换

• transforms.Pad

• transforms.ColorJitter

• transforms.Grayscale

• transforms.RandomGrayscale

• transforms.RandomAffine

• transforms.LinearTransformation

• transforms.RandomErasing

• transforms.Lambda

• transforms.Resize

• transforms.Totensor

• transforms.Normalize

四、transforms的操作

• transforms.RandomChoice

• transforms.RandomApply

• transforms.RandomOrd

点赞!收藏!感谢支持!

这是pytorch目前提供的方法

image.png

from torchvision import transforms
from PIL import Image
import matplotlib.pyplot as plt
img = Image.open("img/5.jpg")
data1 = transforms.RandomResizedCrop(224)(img)  # 功能:随机大小、长宽比裁剪图片
# data2 = transforms.RandomResizedCrop(224)(img)
# data3 = transforms.RandomResizedCrop(224)(img)
data4 = transforms.RandomCrop(224)(img)  # 从图片中随机裁剪出尺寸为size的图片
data5 = transforms.Resize([512, 512])(img)
data6 = transforms.CenterCrop([512, 512])(img)  # 从图像中心裁剪图片
data7 = transforms.RandomHorizontalFlip(p=0.9)(img)  # 功能:依概率水平(左右)翻转图片
data8 = transforms.RandomVerticalFlip(p=0.9)(img)  # 功能:依概率垂直(上下)翻转图片
data9 = transforms.RandomRotation(45)(img)  # 功能:随机旋转图片
data10 = transforms.Pad(padding=100)(img)  # 功能:对图片边缘进行填充
data11 = transforms.ColorJitter(brightness=5,
                                contrast=0,
                                saturation=0, hue=0)(img)  # 功能:调整亮度、对比度、饱和度和色相
data12 = transforms.RandomErasing(p=0.5,
                                  scale=(0.02, 0.33),  # 遮挡区域的面积
                                  ratio=(0.3, 3.3),  # 遮挡区域长宽比
                                  value=0,  # 设置遮挡区域的像素值,(R, G, B) or (Gray)
                                  inplace=False)(img)
data13 = transforms.GaussianBlur(5)(img)
plt.subplot(2, 2, 1), plt.imshow(img), plt.title("input")
plt.subplot(2, 2, 2), plt.imshow(data1), plt.title("data1")
plt.subplot(2, 2, 3), plt.imshow(data4), plt.title("data2")
plt.subplot(2, 2, 4), plt.imshow(data13), plt.title("data3")
plt.show()
相关文章
|
2月前
|
存储 物联网 PyTorch
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
**Torchtune**是由PyTorch团队开发的一个专门用于LLM微调的库。它旨在简化LLM的微调流程,提供了一系列高级API和预置的最佳实践
255 59
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
|
2月前
|
并行计算 监控 搜索推荐
使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
当处理大规模图数据时,复杂性难以避免。PyTorch-BigGraph (PBG) 是一款专为此设计的工具,能够高效处理数十亿节点和边的图数据。PBG通过多GPU或节点无缝扩展,利用高效的分区技术,生成准确的嵌入表示,适用于社交网络、推荐系统和知识图谱等领域。本文详细介绍PBG的设置、训练和优化方法,涵盖环境配置、数据准备、模型训练、性能优化和实际应用案例,帮助读者高效处理大规模图数据。
76 5
|
5月前
|
并行计算 Ubuntu PyTorch
Ubuntu下CUDA、Conda、Pytorch联合教程
本文是一份Ubuntu系统下安装和配置CUDA、Conda和Pytorch的教程,涵盖了查看显卡驱动、下载安装CUDA、添加环境变量、卸载CUDA、Anaconda的下载安装、环境管理以及Pytorch的安装和验证等步骤。
1007 1
Ubuntu下CUDA、Conda、Pytorch联合教程
|
8月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.2 中文官方教程(二十)(4)
PyTorch 2.2 中文官方教程(二十)
165 0
PyTorch 2.2 中文官方教程(二十)(4)
|
8月前
|
Android开发 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(二十)(2)
PyTorch 2.2 中文官方教程(二十)
137 0
PyTorch 2.2 中文官方教程(二十)(2)
|
8月前
|
iOS开发 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(二十)(1)
PyTorch 2.2 中文官方教程(二十)
128 0
PyTorch 2.2 中文官方教程(二十)(1)
|
8月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.2 中文官方教程(十九)(3)
PyTorch 2.2 中文官方教程(十九)
86 0
PyTorch 2.2 中文官方教程(十九)(3)
|
8月前
|
异构计算 PyTorch 算法框架/工具
PyTorch 2.2 中文官方教程(十九)(2)
PyTorch 2.2 中文官方教程(十九)
115 0
PyTorch 2.2 中文官方教程(十九)(2)
|
8月前
|
PyTorch 算法框架/工具 并行计算
PyTorch 2.2 中文官方教程(二十)(3)
PyTorch 2.2 中文官方教程(二十)
205 0
|
8月前
|
PyTorch 算法框架/工具 并行计算
PyTorch 2.2 中文官方教程(十九)(4)
PyTorch 2.2 中文官方教程(十九)
84 0