Pytorch实战——3、数据加载与处理

🍅 写在前面
👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。
🔎个人主页:主页链接(欢迎各位大佬光临指导)
⭐️近期专栏:机器学习与深度学习
                       LeetCode算法实例

目录

  • transforms——Crop
  • transforms——Flip
  • 图像变换
  • 自定义transforms
  • transforms方法汇总
    • 裁剪:
    • 翻转和旋转:
    • 图像变换:
    • transforms的操作:

transforms——Crop

  1. torchvision.transforms.CenterCrop(size)

    • 功能:从图像中心裁剪图片
    • size:所需裁剪图片尺寸
  2. torchvision.transforms.RandomCrop(size, padding=None,
    pad_tf_needed=False, fill=0, padding_mode=‘constant’)

    • 功能:从图片中随机裁剪出尺寸为size的图片
    • size: 所需裁剪图片尺寸
    • padding: 设置填充大小
      当为a时,上下左右均填充a个像素;
      当为(a, b)时,上下填充b个像素,左右填充a个像素;
      当为(a, b, c, d)时,左、上、右、下分别填充a、b、c、d。
    • pad_if_need: 若图像小于设定size,则填充
    • padding_mode: 填充模式,有4种模式
      ⅰ. constant: 像素值由fill设定
      ⅱ. edge: 像素值由图像边缘像素设定
      ⅲ. reflect: 镜像填充,最后一个像素不镜像
      ⅳ. symmetric: 镜像填充,最后一个像素镜像
    • fill: constant时,设置填充的像素值
  3. torchvision.transforms.RandomResizedCrop(size, scale=(0.08, 1.0),
    ratio=(3/4, 4/3), interpolation=2)

    • 功能:随机大小、长宽比裁剪图片
    • size: 所需裁剪图片尺寸
    • scale: 随机裁剪面积比例,默认(0.08, 1)
    • ratio: 随机长宽比,默认(3/4, 4/3)
    • interpolation: 插值方法
      PIL.Image.NEAREST
      PIL.Image.BILINEAR
      PIL.Image.BICUBIC
  4. torchvision.transforms.FiveCrop(size)

  5. torchvision.transforms.TenCrop(size, vertical_flip=False)

    • 功能:在图像的上下左右以及中心裁剪出尺寸为size的5张图片,TenCrop对这5张图片进行水平或者垂直镜像获得10张图片
    • size: 所需裁剪图片尺寸
    • vertical_flip: 是否垂直翻转
# torchvision.transforms.CenterCrop
transforms = T.Compose([T.Resize(224),T.CenterCrop(224),T.ToTensor()])  # Resize:缩放
cat_t = transforms(cat)  # 传入transforms中的数据是PIL数据,lena_t为tensor
cat_t.shape  # 3*224*224 ; 当T.CenterCrop()的参数大于T.Resize()的参数时,周围用0填充
to_pil(cat_t)

在这里插入图片描述

# torchvision.transforms.RandomCrop
transforms = T.Compose([T.Resize(224),T.RandomCrop(224, padding=(16, 64)),T.ToTensor()])  # Resize:缩放
cat_t = transforms(cat)  # 传入transforms中的数据是PIL数据,lena_t为tensor
cat_t.shape  # 3*224*224 ; 当T.CenterCrop()的参数大于T.Resize()的参数时,周围用0填充
to_pil(cat_t)

在这里插入图片描述

transforms——Flip

  1. torchvision.transforms.RandomHorizontalFlip(p=0.5)

  2. torchvision.transforms.RandomVerticalFlip(p=0.5)

    • 功能:依据水平(左右)或垂直(上下)翻转图片
    • p: 翻转概率
  3. torchvision.transforms.RandomRotation(degrees, resample=False,
    expand=False, center=None)

    • 功能:随机旋转图片
    • degrees: 旋转角度
      当为a时,在(-a, a)之间选择旋转角度;
      当为(a, b)时,在(a, b)之间选择旋转角度。
    • resample: 重采样方法
    • expand: 是否扩大图片,以保持原图信息
      在这里插入图片描述
      在这里插入图片描述

图像变换

  1. torchvision.transforms.Pad(padding, fill=0, padding_mode=‘constant’)

    • 功能:对图像边缘进行填充
    • padding: 设置填充大小
      当为a时,上下左右均填充a个像素;
      当为(a, b)时,上下填充b个像素,左右填充a个像素;
      当为(a, b, c, d)时,左、上、右、下分别填充a、b、c、d。
    • padding_mode: 填充模式,有4种模式,constant、edge、reflect和symmetric
      = fill: constant时,设置填充的像素值,(R, G, B)or(Gray)
  2. torchvision.transforms.ColorJitter(brightness=0, contrast=0,
    saturation=0, hue=0)

    • 功能:调整亮度、对比度、饱和度和色相
    • brightness: 亮度调整因子
    • contrast: 对比度参数,同brightness
    • saturation: 饱和度参数,同brightness
    • hue: 色相参数
  3. torchvision.transforms.Grayscale(num_output_channels=1)

  4. torchvision.transforms.RandomGrayscale(p=0.1)

    • 功能: 依概率将图片转换为灰度图
    • num_output_channels: 输出通道数,只能设置为1或3
    • p: 概率值,图像被转换为灰度图的概率
  5. torchvision.transforms.RandomAffine(degrees, translate=None,
    scale=None, shear=None, resample=0, fillcolor=0)

    • 功能:对图像进行仿射变换,仿射变换是二维的线性变换,由五种基本原子变换构成,分别是旋转、平移、缩放、错切和翻转
    • degrees: 旋转角度设置
    • translate: 平移区间设置,如(a, b),a设置宽(width),b设置高(height),图像在宽维度平移区间为 -img_width a < dx < img_width a
    • scale: 缩放比例(以面积为单位)
    • fill_color: 填充颜色设置
    • shear: 错切角度设置,有水平错切和垂直错切
      若为a,则仅在x轴错切,错切角度在(-a, a)之间;
      若为(a, b),则a设置x轴角度,b设置y的角度;
      若为(a, b, c, d),则a、b设置x轴角度,c、d设置y轴角度。
    • resample: 重采样方式,有NEAREST、BILINEAR、BICUBIC
  6. torchvision.transforms.RandomErasing(p=0.5, scale=(0.02, 0.33),
    ratio=(0.3, 3.3), value=0, inplace=False)

    • 功能:对图像进行随机遮挡
    • p: 概率值,执行该操作的概率
    • scale: 遮挡区域的面积
    • ratio: 遮挡区域长宽比
    • value: 设置遮挡区域的像素值,(R, G, B)or(Gray)
    • 参考文献:《Random Erasing Data Augmentaion》
  7. torchvision.transforms.Lambda(lambd)
    - 功能: 用户自定义lambda方法
    - lambd: lambda匿名函数
    例如:transforms.Lambda(lambda crops: torch.stack([transforms.Totensor()(crop) for crop in crops]))

自定义transforms

自定义transforms要素:

1、仅接收一个参数,返回一个参数
2、注意上下游的输出与输入

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

通过类实现多参数传入:

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

椒盐噪声又称为脉冲噪声,是一种随机出现的白点或者黑点,白点称为盐噪声,黑色为椒噪声。
信噪比(Signal-Noise Rate,SNR)是衡量噪声的比例,图像中为图像像素的占比。

class AddPepperNoise(object):def __init__(self, snr, p):self.snr = snrself.p = pdef __call__(self, img):# 添加椒盐噪声具体实现过程img = Nonereturn img

transforms方法汇总

裁剪:

a. transforms.CenterCrop
b. transforms.RandomCrop
c. transforms.RandomResizedCrop
d. transforms.FiveCrop
e. transforms.TenCrop

翻转和旋转:

a. transforms.RandomHorizontalFlip
b. transforms.RandomVerticalFlip
c. transforms.RandomRotation

图像变换:

a. transforms.Pad
b. transforms.ColorJitter
c. transforms.Grayscale
d. transforms.RandomGrayscale
e. transforms.RandomAffine
f. transforms.LinearTransformation
g. transforms.RandomErasing
h. transforms.Lambda
i. transforms.Resize
j. transforms.Totensor
k. transforms.Normalize

transforms的操作:

a. transforms.RandomChoice
b. transforms.RandomApply
c. transforms.RandomOrder

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/412823.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux操作系统----gdb调试工具(配实操图)

绪论​ “不用滞留采花保存&#xff0c;只管往前走去&#xff0c;一路上百花自会盛开。 ——泰戈尔”。本章是Linux工具篇的最后一章。gdb调试工具是我们日常工作中需要掌握的一项重要技能我们需要基本的掌握release和debug的区别以及gdb的调试方法的指令。下一章我们将进入真正…

【4k】4k的webrtc播放示例

目录 使用带研发角色的账号&#xff0c;在app端设置下分辨率 &#xff1a; 4k 点播 ffplay播放看下详细的参数 使用带研发角色的账号&#xff0c;在app端设置下分辨率 &#xff1a; 4k 点播 ffplay播放看下详细的参数

机器学习---特征选择与稀疏学习

1. 特征 特征&#xff1a;描述物体的属性。 特征的分类&#xff1a;相关特征: 对当前学习任务有用的属性&#xff1b;无关特征: 与当前学习任务无关的属性 特征选择&#xff1a;从给定的特征集合中选出任务相关特征子集&#xff1b;必须确保不丢失重要特征。 原因&#xff…

Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

场景 Mysql中怎样设置指定ip远程访问连接&#xff1a; Mysql中怎样设置指定ip远程访问连接_navicat for mysql 设置只有某个ip可以远程链接-CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式&#xff0c;如果通过可视化工具比如Navicat来实现。 注&#xff1a…

Windows 下 QT开发环境的搭建:

下载QT:Index of /archive/qt/5.14 下载Cmake :CMake - Upgrade Your Software Build System (1)QT在windows,C, 打包exe&#xff1a; step1:window上安装QT软件&#xff1a; Windows下的QT系统开发环境搭建_qt windows-CSDN博客. step2:新建一个界面工程&#xff1a; (1)打…

在客户端访问远程Linux服务器的私有IP地址的URL

文章目录 环境背景SSH tunnel和正向/反向代理步骤第一步第二步效果考一考 其它多次跳转另一种方法&#xff1a;正向代理 参考 环境 服务器&#xff1a;Ubuntu 22.04客户端&#xff1a;Mac 14.2.1 背景 在远程Linux服务器上搭建了minikube环境。minikube提供了dashboard功能&…

vscode调试debug,launch.json文件‘args’无法发传递给脚本

问题&#xff1a;调试时&#xff0c;脚本执行&#xff0c;发现在launch.json文件中明明定义了“args”参数&#xff0c;却没有传递给执行命令。 解决&#xff1a; launch.json中的"name"参数不要随便起&#xff0c;要与执行的文件名一致&#xff01; 参考链接&…

上海亚商投顾:沪指探底回升 大金融板块午后走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 指昨日探底回升&#xff0c;深成指、创业板指午后跌超1%&#xff0c;尾盘集体拉升翻红&#xff0c;北证50指数涨…

Air780E开发板开发环境搭建

开发板原理图 开发软件 下载网站 https://luatos.com/luatools/download/last 使用教程 烧录教程 - LuatOS 文档 开发流程 首先下载最新版本的Luatools 然后新建一个Luatools文件夹&#xff0c;将下载的exe文件放入其中后&#xff0c;再打开exe文件&#xff08;会生成目…

JavaScript 学习笔记(WEB APIs Day1)

「写在前面」 本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. JavaScript 学习笔记&#xff08;Day1&#xff09; 2. JavaSc…

pygame里实现导弹追踪效果,同时对python的指针机制有一点点思考

最近,儿子一直缠着让我把之前给他编写的游戏重做一下,要加一些功能.但是因为之前写代码的时候刚学会python,当时的想法就是能跑就行,现在回头看来,代码的可维护性几乎为零.所以没办法只能冲头再来,重构了几乎所有代码.在编写的时候遇到了一个有意思的问题,儿子让我给游戏添加一…

【.NET Core】 多线程之(Thread)详解

【.NET Core】 多线程之&#xff08;Thread&#xff09;详解 文章目录 【.NET Core】 多线程之&#xff08;Thread&#xff09;详解一、概述二、线程的创建和使用2.1 ThreadStart用于无返回值&#xff0c;无参数的方法2.2 ParameterizedThreadStart:用于带参数的方法 三、线程的…