当前位置: 首页 > news >正文

论文阅读笔记——数据增强

一、 核心思想:什么是数据增强?

一句话概括:数据增强就是通过一系列技术手段,从现有的训练数据中,人工制造出更多、更多样的新数据。

一个简单的比喻:
你的模型就像一个学生,训练数据就是它的习题册

  • 情况一(无数据增强):学生只有一本薄薄的习题册,他通过反复刷这几道题来备考。结果一上考场,发现题型全都变了,直接考砸。这就是过拟合——他只会死记硬背原题。

  • 情况二(有数据增强):我们利用原有的习题册,通过改变题目条件、数字、表述方式,生成了厚厚的十本新习题册。学生通过做这些“万变不离其宗”的题目,真正理解了知识点背后的原理。上了考场,无论题型怎么变,他都能灵活应对。这就是提升模型的泛化能力

所以,数据增强的根本目的就是:

  1. 增加数据量,防止模型过拟合。

  2. 提升数据多样性,让模型见识更多可能的情况,从而学到更鲁棒、更本质的特征。


二、 为什么我们需要数据增强?(必要性)

  1. 数据饥渴:深度学习模型是“数据怪兽”,参数动辄百万、千万,需要海量数据才能充分训练,避免过拟合。但收集和标注高质量数据的成本极其高昂。

  2. 覆盖“长尾”:真实世界是复杂多样的,总存在一些罕见场景(比如侧脸、遮挡、特殊光照)。原始数据集很难覆盖所有情况,数据增强可以模拟这些边缘情况,让模型更健壮。

  3. 引入不变性:我们希望模型能识别一只猫,无论这只猫是正着、倒着、在明处还是暗处。通过增强,我们可以主动教会模型这些不变性(旋转不变性、光照不变性等)。


三、 常见的数据增强技术(“十八般武艺”)

数据增强技术主要分为两大类:基础增强 和 高级增强

A. 基础增强(像素级/空间变换)

这类方法直接对图像本身的像素或几何形状进行操作,简单有效。

  1. 几何变换

    • 旋转/翻转:将图像顺时针旋转10度、20度等;水平或垂直翻转。这教会模型目标的方向不是关键特征。

    • 裁剪:随机从图像中截取一部分。这迫使模型不依赖于目标的绝对位置,并关注局部特征。

    • 缩放/拉伸:将图像放大或缩小,或者进行非等比拉伸。

    • 平移:将图像在画布内上下左右移动。

  2. 像素变换

    • 颜色抖动:调整图像的亮度、对比度、饱和度和色调。让模型不依赖于特定的颜色分布。

    • 添加噪声:在图像上加入高斯噪声、椒盐噪声等。让模型对图像质量不敏感,更抗干扰。

    • 模糊/锐化:使用高斯模糊等滤波器。模拟图像失焦或远距离拍摄的情况。

    • 擦除:随机将图像中的一小块矩形区域置为0或随机值。这是非常有效的一种方法,它能强迫模型不去只依赖某一个明显的特征(比如只靠猫脸识别猫),而是必须去学习多个特征。

B. 高级增强(混合式与智能增强)

这类方法更“智能”,通常会将多张图像或其特征进行混合,能生成更复杂、更具挑战性的样本。

  1. MixUp

    • 做法:取两张图片 x1 和 x2,以及它们对应的标签 y1 和 y2,然后按一个比例 λ 进行线性混合。

      • 新图片:x_new = λ * x1 + (1-λ) * x2

      • 新标签:y_new = λ * y1 + (1-λ) * y2

    • 思想:让模型学会“模糊的”决策边界,使其更加平滑,提升泛化能力。标签也是混合的,比如新图片60%是“猫”,40%是“狗”。

  2. CutMix

    • 做法:从图片A随机裁剪一个区域,然后用图片B对应位置的区域来填充,生成一张新图片。新图片的标签也会按裁剪区域的比例进行混合。

      • 新图片:x_new = M * x_A + (1-M) * x_B (M 是一个二进制掩码,表示裁剪区域)

      • 新标签:y_new = λ * y_A + (1-λ) * y_B

    • 优点:相比MixUp,生成的新图片更加自然(因为粘贴的是完整的图像块,而不是像素混合),同时保留了区域定位的信息。它既增加了多样性,又没有完全丢失重要的特征信息。

  3. 基于模型/对抗的增强

    • 神经风格迁移:保留图片A的内容,但套用图片B的风格,生成新的训练图片。

    • 生成对抗网络(GAN):直接使用GAN来生成全新的、逼真的训练图像。这是“终极”的数据增强,但技术复杂且可能引入伪影。

    • AutoAugment / RandAugment:使用强化学习或搜索算法,自动为特定数据集找到最有效的一系列增强策略组合。

http://www.dtcms.com/a/548961.html

相关文章:

  • 如何裁剪YOLOv8m的大目标检测头并验证其结构
  • 扩展阅读:目标检测(Object Detection)标注
  • MR30分布式IO:破局锂电池制造产线,引领高效生产新变革
  • AI赋能科研创新:ChatGPT-4o与DeepSeek-R1在学术研究中的深度应用指南
  • 《数据库系统》SQL语言之分组查询与分组过滤(理论理解分析+实例练习)
  • 家乡介绍网页设计海口seo网络推广
  • 【ROS2】动作服务器:rclcpp_action::Client 详解
  • 红松APP首秀北京老博会,“有温度的科技”赋能退休兴趣生活
  • 【ZEGO即构开发者日报】Soul AI Lab开源播客语音合成模型;腾讯混元推出国内首个交互式AI播客;ChatGPT Go向用户免费开放一年......
  • 数据库基础-数据库的三级模式
  • 图书馆网站建设调查问卷wordpress小工具自定义
  • 前端兼容性与调试技巧完全指南
  • 深度解析 Rust 的数据结构:标准库与社区生态
  • 关于组态软件的三个误解
  • 需要使用耐高温过炉治具的产品类型
  • qt QPushButton 启用选中状态(按钮可切换状态)
  • 河北云网站建设免费空间做网站
  • webrtc代码走读(十二)Transport-cc协议与RTP扩展头
  • 前端多版本零404部署实践:为什么会404,以及怎么彻底解决
  • k8s的包管理工具helm3--流程控制语句(3)
  • Kubernetes 实战入门核心内容总结
  • F042 A星算法课程推荐(A*算法) | 课程知识图谱|课程推荐vue+flask+neo4j B/S架构前后端分离|课程知识图谱构造
  • STM32H743-ARM例程34-BootROM
  • Parasoft C/C++test如何在ARM DS-5环境中进行测试(上)
  • 网站建设批复意见证券投资网站建设
  • 激光测距望远镜的光学设计
  • Unity3D与Three.js构建3D可视化模型技术对比分析
  • 【开发者导航】开源轻量的 Linux 平台设计协作客户端:Figma Linux
  • 从 “不敢练” 到 “实战练”!XM-E01-100 桌面五轴重构院校实训课堂
  • Rust 开发环境管理:安装与切换 Rust 版本的深度实践