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 = transforms
    def __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 = snr
        self.p = p
    def __call__(self, img):
        # 添加椒盐噪声具体实现过程
        img = None
        return 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【音视频原理】图像相关概念 ③ ( RGB 色彩简介 | RGB 排列 | YUV 色彩简介 | YUV 编码好处 )

文章目录 一、RGB 色彩1、RGB 色彩简介2、RGB 排列 二、YUV 色彩1、YUV 色彩简介2、YUV 编码好处 一、RGB 色彩 1、RGB 色彩简介 RGB 是 计算机 中的 颜色编码方法 , 红 ( R ) / 绿 ( G ) / 蓝 ( B ) 三个颜色通道 可以设置不同的值 , 每个 通道 的 颜色值都可以取值 0 ~ 255 ,…

Python智能挖掘数据新秘器

大家好&#xff0c;本次分享一款在数据探索中表现出色的工具—Python Lux &#xff0c;通过自动化可视化和数据分析过程&#xff0c;使得数据探索变得更加快捷方便。 Lux的使用方法非常简单&#xff0c;只需在Jupyter notebook中输入dataframe&#xff0c;Lux就会智能推荐一组基…

Java项目:10 Springboot的电商书城管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 该系统分为前台展示和后台管理两大模块&#xff0c;前台主要是为消费者服务。该子系统实现了注册&#xff0c;登录&#xff0c;以及从浏览、下单到支付…

第三讲_ArkTS的初识

ArkTS的初识 1. ArkTS的基本组成2. ArkTS自定义组件 1. ArkTS的基本组成 装饰器&#xff1a; 用于装饰类、结构、方法以及变量&#xff0c;并赋予其特殊的含义。自定义组件&#xff1a;可复用的UI单元&#xff0c;可组合其他组件&#xff0c;图示中Component装饰的struct Hello…

Halcon 一维测量

文章目录 算子矩形算子弧形算子移动到新的参考点 Halcon 案例测量保险丝的宽度&#xff08;边缘对测量&#xff09;使用助手进行测量 halcon 案例获取芯片引脚的个数平均宽度距离&#xff0c;连续两个边缘的距离&#xff08;measure_pos &#xff09;halcon 定位测量Halcon 测量…

C#,水仙花数(Narcissistic number)的计算方法及源代码

一、水仙花数&#xff08;Narcissistic number&#xff09; 水仙花数&#xff08;Narcissistic number&#xff09;也被称为&#xff1a;超完全数字不变数&#xff08;pluperfect digital invariant, PPDI&#xff09;、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数&#xff08;A…

B站提示:“当前浏览器版本较低……”可行的解决方案(edge浏览器)

文章目录 问题研究和分析使用User-Agent Switcher for Chrome插件的解决方法使用userAgent switcher的解决方法 问题研究和分析 问题&#xff1a;使用最新版浏览器访问B站&#xff0c;首页总是有一条横幅提示&#xff1a;当前浏览器版本较低&#xff0c;为保证您的使用体验&am…

vscode设置terminal的最大行数

今天跑代码出现一个问题&#xff0c;就是整个程序跑完&#xff0c;整个程序的输出信息过多&#xff0c;最开始输出的信息已经被vscode的缓存冲掉了&#xff0c;只能看到最后的一部分&#xff0c;具体的原因是vscode的terminal默认只能保存1000行的信息&#xff0c;所以如果想保…

智慧仓储物流远程监控方案分析

智慧仓储物流远程监控方案分析 随着物联网、大数据、云计算等技术的快速发展&#xff0c;智慧仓储物流逐渐成为现代物流发展的重要方向。远程监控作为智慧仓储物流的重要组成部分&#xff0c;可以有效提高仓储物流的效率、准确性和安全性。 一、智慧仓储物流远程监控方案概述 …

llvm pass

pass们组合在一起&#xff0c;处理IR 而最后的目标代码生成阶段&#xff0c;会生成另一种MIR&#xff08;Machine IR&#xff09; PassManager管理这些pass pass处理IR之后会改变分析的情况&#xff0c;这些关于IR的信息由 AnalysisManager处理 1、pass &#xff08;1&…

在线多端口排课教务管理工具:教育机构管理的得力助手

在现代教育中&#xff0c;教务管理是一个复杂而重要的任务。为了简化这一过程&#xff0c;许多在线教务管理工具应运而生。今天&#xff0c;我将向大家介绍一款名为乔拓云的在线多端口排课教务管理工具。 首先&#xff0c;乔拓云是一个功能强大的教务管理系统。它不仅提供了小程…

Python创建线程

Python 提供了 _thread 和 threading 两个模块来支持多线程&#xff0c;其中 _thread 提供低级别的、原始的线程支持&#xff0c;以及一个简单的锁&#xff0c;正如它的名字所暗示的&#xff0c;一般编程不建议使用 thread 模块&#xff1b;而 threading 模块则提供了功能丰富的…

使用C#操作文件:一个实际案例——替换文件中的IP地址

标题&#xff1a; 使用C#操作文件&#xff1a;一个实际案例——替换文件中的IP地址 介绍&#xff1a; 欢迎阅读我的最新博客&#xff01;今天&#xff0c;我们将探讨如何使用C#来处理一个实际的编程挑战&#xff1a;读取一个配置文件并替换其中的IP地址。这是一个非常常见的…

vue写了debugger谷歌浏览器打开控制台没进断点

vue代码中打了断点&#xff0c;谷歌打开f12进不了断点解决方案如下 1、打开谷歌浏览器控制台&#xff0c;点击设置 2、在 Ignore List 中将“Enable Ignore Listing”勾选去掉&#xff0c;然后就可以正常使用debugger了

Es bulk批量导入数据(1w+以上)

最近在学习es的理论知识以及实际操作&#xff0c;随时更新~ 概要&#xff1a;首先你得有1w条数据的json&#xff0c;然后用java读取json文件导入 一. 创建Json数据 首先我生成1.5w条数据&#xff0c;是为了实践分页查询&#xff0c;用from-size和scroll翻页去实践 生成四个字段…

UG机械制图的基本常识

目前来说工程图就是传递产品信息的工具&#xff0c;所以图纸一定不能出错&#xff0c;因为所有的设计都要转化为生产的输入。 一张完整的工程图应由图框&#xff0c;图素&#xff0c;尺寸标注以及技术要求这四部分组成&#xff0c; 图框包括图纸幅面&#xff1a;A0,A1,A2,A3,…

(2024,VMamba,交叉扫描,线性复杂度,全局感受野,动态权重)视觉状态空间模型

VMamba: Visual State Space Model 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 方法 3.1 基础概念 3.2 2D 选择性扫描 3.3 VMamba 模型 3.3.1 整体架构 3.3.2 VSS…

nvm, node.js, npm, yarn 安装配置

文章目录 nvm 安装node.js 安装npm yarn 配置 nvm 安装 nvm 是一个 node.js 管理工具&#xff0c;可以快捷下载安装使用多个版本的node.js linux 命令行输入&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashwget -qO- https…

电子签名实名认证的必要性解析

电子签名是确保电子文件真实性和完整性的重要手段&#xff0c;而实名认证则是保证电子签名有效性的必要条件。在电子签名过程中&#xff0c;实名认证的作用主要体现在以下几个方面&#xff1a; 确认身份&#xff1a;实名认证能够确认签署者的真实身份&#xff0c;防止冒签、代…