【机器学习实战】数据增强基础

文章目录

  • 1. 数据增强
  • 2. 数据增强技巧
    • torchvision
    • 2.1 图像大小调整
    • 2.2 图像旋转
    • 2.3 图像转换为张量
    • 2.4 归一化
    • 2.5 图像裁剪
    • 2.6 仿射变换
    • 2.7 透视变换
  • 3. 自动增强
  • 4. Mixup增强

1. 数据增强

什么是数据增强?数据增强是优化数据吗?这种说法并不尽然。首先,数据增强的做法偏向于生成新样本。它是通过对现有数据进行各种变换和处理来生成新的训练样本,从而增加数据集的多样性和数量。但是不会直接修改原始数据集。这样,有助于防止过拟合情况的发生,提高模型的泛化能力。

这是一个偏人工的过程,需要模拟真实世界中的变化,拿视频来说,我们可能需要去掉滤镜效果,计算拍摄视角、光照或者是遮挡。使得特征表示更加具有鲁棒性。

在这里插入图片描述

2. 数据增强技巧

官方笔记推荐我们使用PyTorch来做数据增强,列举了一些数据增强技巧。我个人认为这些技巧本身已经比较好了,于是再补充一下我认识到的另一些技巧。

torchvision

文档库地址:https://pytorch.org/vision/stable/index.html

PyTorch其实更希望我们使用v2,所以如果把resize函数重写成V2格式就是这样:

2.1 图像大小调整

transforms.Resize((256, 256))
默认参数:
torchvision.transforms.Resize(size, interpolation=InterpolationMode.BILINEAR, max_size=None, antialias=True)

2.2 图像旋转

transforms.RandomHorizontalFlip()
# 写成V2版本
torchvision.transforms.v2.RandomHorizontalFlip(p: float = 0.5)
# 垂直反转
torchvision.transforms.v2.RandomVerticalFlip(p: float = 0.5)

2.3 图像转换为张量

transforms.ToTensor()
# 将图像数据转换为PyTorch的Tensor格式,这是在深度学习中处理图像数据的常用格式。
torchvision.transforms.v2.ToTensor

2.4 归一化

# 归一化
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
# 对图像进行归一化处理,这里的均值和标准差是根据ImageNet数据集计算得出的,用于将图像像素值标准化,这有助于模型的训练稳定性和收敛速度。
# 写成V2版本
torchvision.transforms.v2.Normalize(mean: Sequence[float], std: Sequence[float], inplace: bool = False)

2.5 图像裁剪

# 随机裁剪
torchvision.transforms.v2.RandomCrop(size: Union[int, Sequence[int]], padding: Optional[Union[int, Sequence[int]]] = None, pad_if_needed: bool = False, fill: Union[int, float, Sequence[int], Sequence[float], None, Dict[Union[Type, str], Optional[Union[int, float, Sequence[int], Sequence[float]]]]] = 0, padding_mode: Literal['constant', 'edge', 'reflect', 'symmetric'] = 'constant')
# 中心裁剪
torchvision.transforms.v2.CenterCrop(size: Union[int, Sequence[int]])
# 五裁剪和十裁剪
torchvision.transforms.v2.FiveCrop(size: Union[int, Sequence[int]])
torchvision.transforms.v2.TenCrop(size: Union[int, Sequence[int]], vertical_flip: bool = False)

2.6 仿射变换

图像仿射变换是一种在计算机视觉和图像处理领域中常用的变换技术,它用于对图像进行线性变换和仿射变换。通过仿射变换,可以对图像进行旋转、平移、缩放、剪切等操作,同时保持直线的直线性和原点的共线性。
相当于以上几个方法的集成版。

torchvision.transforms.v2.RandomAffine(degrees: Union[Number, Sequence], translate: Optional[Sequence[float]] = None, scale: Optional[Sequence[float]] = None, shear: Optional[Union[int, float, Sequence[float]]] = None, interpolation: Union[InterpolationMode, int] = InterpolationMode.NEAREST, fill: Union[int, float, Sequence[int], Sequence[float], None, Dict[Union[Type, str], Optional[Union[int, float, Sequence[int], Sequence[float]]]]] = 0, center: Optional[List[float]] = None)

2.7 透视变换

torchvision.transforms.v2.RandomAffine(degrees: Union[Number, Sequence], translate: Optional[Sequence[float]] = None, scale: Optional[Sequence[float]] = None, shear: Optional[Union[int, float, Sequence[float]]] = None, interpolation: Union[InterpolationMode, int] = InterpolationMode.NEAREST, fill: Union[int, float, Sequence[int], Sequence[float], None, Dict[Union[Type, str], Optional[Union[int, float, Sequence[int], Sequence[float]]]]] = 0, center: Optional[List[float]] = None)

3. 自动增强

# 自动增强
torchvision.transforms.v2.AutoAugment(policy: AutoAugmentPolicy = AutoAugmentPolicy.IMAGENET, interpolation: Union[InterpolationMode, int] = InterpolationMode.NEAREST, fill: Union[int, float, Sequence[int], Sequence[float], None, Dict[Union[Type, str], Optional[Union[int, float, Sequence[int], Sequence[float]]]]] = None)
# 随机增强
torchvision.transforms.v2.RandAugment(num_ops: int = 2, magnitude: int = 9, num_magnitude_bins: int = 31, interpolation: Union[InterpolationMode, int] = InterpolationMode.NEAREST, fill: Union[int, float, Sequence[int], Sequence[float], None, Dict[Union[Type, str], Optional[Union[int, float, Sequence[int], Sequence[float]]]]] = None)

4. Mixup增强

将两个图像按一定比例混合(类似于叠片),alpha就是这个比例。这样相当于通过图像的“加法”去丰富这个数据集。模型的泛化能力则能更强。
在这里插入图片描述

# alpha (float, optional) – hyperparameter of the Beta distribution used for mixup. Default is 1.
# alpha默认为1,它表示了两张图片混合的比例
torchvision.transforms.v2.MixUp(*, alpha: float = 1.0, num_classes: int, labels_getter='default')

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

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

相关文章

Linux复习01

1. Linux应用场景: 互联网公司的服务器后端智能设备的使用嵌入式... 2.Linux商业化版本 a.商业化版本:(ubuntu,红帽,centos)内核界面等 b.技术版本(Linux的内核源代码)2.6 2.7等等 内核版…

【2024德国签证】留学面签问题汇总

在去交材料的时候,可能会被随机安排面试。这些面试问题一般都很简单,主要是测试你的基本英文交流能力。无需担心,签证官不会问太专业的问题,因为他们也不懂专业内容。到目前为止,没有一个博士生因为这个面试被拒签。毕…

Golang | Leetcode Golang题解之第239题滑动窗口最大值

题目: 题解: func maxSlidingWindow(nums []int, k int) []int {n : len(nums)prefixMax : make([]int, n)suffixMax : make([]int, n)for i, v : range nums {if i%k 0 {prefixMax[i] v} else {prefixMax[i] max(prefixMax[i-1], v)}}for i : n - 1…

将github上的项目导入到vscode并创建虚拟环境

1、将github上的项目导入到vscode 直接从github上下载到本地&#xff0c;用vscode打开&#xff08;Open file&#xff09; 2、创建虚拟环境 python -m venv <name> <name>\Scripts\activate ps: 1、退出虚拟环境 deactivate 2、如果运行python -m venv <…

Unity格斗游戏,两个角色之间互相锁定对方,做圆周运动

1&#xff0c;灵感来源 今天手头的工作忙完了&#xff0c;就等着服务器那边完活&#xff0c;于是开始研究同步问题。 正好想到之前想做的&#xff0c;两个小人对线PK&#xff0c;便有了这篇文章。 2&#xff0c;要实现的效果 如图所示&#xff0c;两个小人可以互相锁定&…

CARLA源码编译避坑指南

文章目录 前言一、CARLA官方编译教程二、无法拉取Unreal Engine Carla分支三、无法下载CARLA地图包四、osm2odr安装错误五、bdist_wheel错误六、编译结果 前言 之前也搭建过这个CARLA源码编译环境&#xff0c;很多坑&#xff0c;但是没记录下来&#xff0c;这次再搭建还是一样…

Spring Web MVC(一篇带你了解并入门,附带常用注解)

一&#xff0c;什么是Spring Web MVC 先看一下官网怎么说&#xff1a; 也就是Spring Web MVC一开始就是包含在Spring框架里面的&#xff0c;但通常叫做Spring MVC。 也可以总结出一个信息&#xff0c;这是一个Web框架。后面我就简称为Spring MVC了。 1.1MVC MVC也就是Mode…

防火墙--内容安全

目录 概述 IAE引擎流程 DPI深度包检测 基于特征字的检测技术 基于应用网关的检测技术 基于行为模式的检测技术 DFI深度流检测 基于数据流进行识别检测的技术 DPI和DFI对比 IDS&#xff08;入侵检测&#xff09; IPS&#xff08;入侵防御&#xff09; 优势 入侵检测…

AtCoder Beginner Contest 362

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;彩笔ACMer一枚。 &#x1f3c0;所属专栏&#xff1a;Codeforces 本文用于记录回顾总结本彩笔的解题思路便于加深理解。 比赛题目地址&#xff1a;AtCoder Beginner Contest 362 …

周记-2024年第29周-7.15~7.21:还是在工作内耗

现在是周日晚上21:20&#xff0c;我开始写周总结。 上周计划 工作上保持主动性&#xff0c;要有主人翁意识&#xff0c;积极推动事情&#xff0c;有问题就在群里问别人&#xff0c;不要单点沟通。&#xff08;有进步&#xff0c;在群里发言稍微多了一点&#xff0c;看小组长工…

微服务实战系列之玩转Docker(五)

前言 在我们日常的工作生活中&#xff0c;经常听到的一句话&#xff1a;“是骡子是马拉出来遛遛”。目的是看一个人/物是不是名副其实。我们在使用docker时&#xff0c;也要看看它究竟是如何RUN起来的。当面试官问你的时候&#xff0c;可以如是回答&#xff0c;保你“一文通关…

OpenAI因限制举报人权利遭投诉,呼吁监管介入

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

WindowsStore被误删怎么恢复

WindowsStore被误删怎么恢复 如果您在 Windows 上意外删除了 Windows Store&#xff0c;可以通过以下步骤尝试恢复&#xff1a; 1. 使用 PowerShell 进行恢复 Windows Store 是作为应用程序安装的一部分&#xff0c;可以尝试使用 PowerShell 命令来重新安装它。以下是具体步…

在win10上通过WSL和docker安装Ubuntu子系统,并配置Ubuntu可成功使用宿主机GPU

本文主要记录win10系统上,通过WSL的Ubuntu系统以及Docker使用GPU的全部过程。 文章目录 1、 启用hyper-v2、 安装docker3、 安装WSL3.1 安装WSL23.1.1 检查是否安装了WSL23.1.1 安装和配置 WSL 23.2 安装Ubuntu 子系统3.3 检查并修改WSL版本4、docker配置ubuntu20.04 LTS5、下…

Java和Python的图结构如何实现图的深度优先搜索算法

Java和Python的图结构如何实现图的深度优先搜索算法&#xff1f; 在Java和Python中&#xff0c;实现深度优先搜索&#xff08;DFS&#xff09;算法的基本思路都是通过递归或栈来探索图的各个节点。 Java实现DFS&#xff1a;Java import java.util.ArrayList; import java.uti…

InfiniBand网络-赋能高性能计算的卓越引擎

InfiniBand&#xff1a;赋能高性能计算网络的卓越引擎 InfiniBand作为一种先进的内网计算平台&#xff0c;已成为驱动高性能计算&#xff08;HPC&#xff09;、人工智能&#xff08;AI&#xff09;以及超大规模云基础设施演进的核心力量&#xff0c;其展现出无可比拟的性能优势…

bs4模块使用(二)

遍历文档树 怎样从文档的一段内容找到另一段内容? html_doc """ <html><head><title>The Dormouses story</title></head><body> <p class"title"><b>The Dormouses story</b></p>&…

基于SpringBoot+Vue的财务管理系统(带1w+文档)

基于SpringBootVue的财务管理系统(带1w文档) 基于SpringBootVue的财务管理系统(带1w文档) 财务管理系统的开发运用java技术、springboot框架&#xff0c;MIS的总体思想&#xff0c;以及Mysql等技术的支持下共同完成了该系统的开发&#xff0c;实现了财务管理的信息化&#xff0…

Android开机优化系列文档

Android开机优化系列文档 Android系统开机优化系列文档&#xff0c;将与开机优化相关的文档收集在这里&#xff0c;便于管理和查看 Android 14 开机时间优化措施汇总-CSDN博客 Android 14 开机时间优化措施-CSDN博客 根据systrace报告优化系统时需要关注的指标和优化策略-CSD…

ccf-csp认证--仓库规划

西西艾弗岛上共有 n 个仓库&#xff0c;依次编号为 1⋯n。每个仓库均有一个 m 维向量的位置编码&#xff0c;用来表示仓库间的物流运转关系。 具体来说&#xff0c;每个仓库 i 均可能有一个上级仓库 j&#xff0c;满足&#xff1a;仓库 j 位置编码的每一维均大于仓库 i 位置编…