卷积神经网络-数据增强

server/2024/9/24 1:31:44/

文章目录

  • 一、概述
  • 二、数据增强的类别
    • 1. 裁剪
    • 2.翻转和旋转
    • 3. 随机遮挡
    • 4. 图像变换
    • 5. 对transforms的选择操作,使数据增强更灵活
  • 三、应用场景
  • 四、总结

一、概述

数据增强(也叫数据扩增)的目的是为了扩充数据和提升模型的泛化能力。有效的数据扩充不仅能扩充训练样本数量,还能增加训练样本的多样性,一方面可避免过拟合,另一方面又会带来模型性能的提升。

二、数据增强的类别

1. 裁剪

  • 中心裁剪:transforms.CenterCrop(512);
  • 随机裁剪:transforms.RandomCrop;
  • 随机大小、长宽比裁剪:transforms.RandomResizedCrop;
  • 上下左右中心裁剪:transforms.FiveCrop;
  • 上下左右中心裁剪后翻转: transforms.TenCrop。

2.翻转和旋转

  • 依概率p水平翻转:transforms.RandomHorizontalFlip(p=0.5);
  • 依概率p垂直翻转:transforms.RandomVerticalFlip(p=0.5);
  • 随机旋转:transforms.RandomRotation(degrees, resample=False, expand=False, center=None)。
    • degrees:旋转角度,当为一个数a时,在(-a,a)之间随机旋转
    • resample:重采样方法
    • expand:旋转时是否保持图片完整,只针对中心旋转
    • center:设置旋转中心点

3. 随机遮挡

  • 对图像进行随机遮挡: transforms.RandomErasing。

4. 图像变换

  • 尺寸变换:transforms.Resize;
  • 标准化:transforms.Normalize;
  • 填充:transforms.Pad;
  • 修改亮度、对比度和饱和度:transforms.ColorJitter;
  • 转灰度图:transforms.Grayscale;
  • 依概率p转为灰度图:transforms.RandomGrayscale;
  • 线性变换:transforms.LinearTransformation();
  • 仿射变换:transforms.RandomAffine;
  • 将数据转换为PILImage:transforms.ToPILImage;
  • 转为tensor,并归一化至[0-1]:transforms.ToTensor;
  • 用户自定义方法:transforms.Lambda。

5. 对transforms的选择操作,使数据增强更灵活

  • transforms.RandomChoice(transforms列表):从给定的一系列transforms中选一个进行操作;
  • transforms.RandomApply(transforms列表, p=0.5):给一个transform加上概率,依概率进行选择操作;
  • transforms.RandomOrder(transforms列表):将transforms中的操作随机打乱。

举例说明:
在这里插入图片描述
上图就是由第一张图片经过翻转裁剪颜色变换得到的,每张图对于网络来说都是不同的输入,加上原图就将数据扩充到原来的14倍。
假如我们输入网络的图片的分辨率大小是256×256,若采用随机裁剪成224×224的方式,那么一张图最多可以产生32×32张不同的图,数据量扩充将近1000倍。

三、应用场景

数据增强在多个领域都有广泛的应用,包括但不限于:

  • 计算机视觉:图像识别、目标检测、语义分割等任务。
  • 自然语言处理:文本分类、情感分析、机器翻译等任务。
  • 语音识别:通过时间伸缩、变速不变调、添加噪声等操作提高模型的识别准确性。
  • 生物信息学:基因表达数据分析、蛋白质结构预测等任务。
  • 推荐系统:提高推荐算法的准确性和多样性。
  • 游戏AI:提高游戏角色的智能水平和适应性。

四、总结

总的来说,数据增强是深度学习中一个重要的环节,它通过增加数据集的多样性和数量,提高了模型的泛化能力和鲁棒性。在实际应用中,我们可以根据具体任务的需求选择合适的数据增强方法,以达到最佳的效果。


http://www.ppmy.cn/server/121092.html

相关文章

图文深入理解SQL语句的执行过程

List item 本文将深入介绍SQL语句的执行过程。 一.在RDBMS(关系型DB)中,看似很简单的一条已写入DB内存的SQL语句执行过程却非常复杂,也就是说,你执行了一条诸如select count(*) where id 001 from table_name的非常简…

双路创新深度学习!TCN-Transformer+LSTM多变量时间序列预测(Matlab)

双路创新深度学习!TCN-TransformerLSTM多变量时间序列预测(Matlab) 目录 双路创新深度学习!TCN-TransformerLSTM多变量时间序列预测(Matlab)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab…

Git常用命令详解

Git 是一个功能强大的版本控制系统,以下是一些常用的 Git 命令及其解释和案例: 1、配置 git config --global user.name "Your Name":配置全局用户名。 git config --global user.email "emailexample.com:配置全…

yolov8使用强数据增强

yolo强数据增强 在深度学习的训练中,强数据增强(strong data augmentation)通过对训练数据进行更大幅度的随机变换,增强模型的泛化能力,减少过拟合风险。强数据增强可以包括各种随机的图像变换操作,使得模型…

Qt (17)【Qt 文件操作 读写保存】

阅读导航 引言一、Qt文件概述二、输入输出设备类三、文件读写类四、文件和目录信息类五、自定义“记事本” 引言 在上一篇文章中,我们学习了Qt的事件处理机制,知道了如何响应用户的操作。但应用程序常常还需要处理文件,比如读写数据。所以&a…

大联大诠鼎集团推出基于联咏科技、思特威和TDK产品的电子防抖(EIS)摄像头方案

大联大控股宣布,其旗下诠鼎推出基于联咏科技(NOVATEK)NT98530芯片、思特威(SmartSens)SC850SL图像传感器和TDK ICM-42607 IMU(惯性传感模块)的电子防抖(EIS)摄像头方案。…

Fyne ( go跨平台GUI )中文文档-绘图和动画(三)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…

【Kubernetes】常见面试题汇总(二十八)

目录 79.您如何看待公司从单一服务转向微服务并部署其服务容器? 80.什么是 Headless Service? 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题。 题目 69-113 属于【Kubernetes】的生产应用题。 79.您如何看待公司从单一服务转…