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

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

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

一个简单的比喻:

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

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

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

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

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

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


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

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

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

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


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

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

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

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

  1. 几何变换

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

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

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

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

  2. 像素变换

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

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

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

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

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

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

  1. MixUp

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

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

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

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

  2. CutMix

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

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

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

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

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

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

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

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

相关推荐
张较瘦_6 小时前
[论文阅读] AI + 软件工程 | 从“能用”到“耐用”:LLM生成软件的老化陷阱与研究突破
论文阅读·人工智能·软件工程
美团技术团队6 小时前
LongCat-Video 视频生成模型正式发布,探索世界模型的第一步
人工智能
Brianna Home6 小时前
PyTorch实战:CV模型搭建全指南
人工智能·pytorch·经验分享·python·神经网络·结对编程
文火冰糖的硅基工坊6 小时前
[人工智能-大模型-107]:模型层 - 神经元的功能角色:特征提取与相似度量化
大数据·人工智能
文火冰糖的硅基工坊6 小时前
[人工智能-大模型-118]:模型层 - RNN状态记忆是如何实现的?是通过带权重的神经元,还是通过张量?
人工智能·rnn·深度学习
老兵发新帖6 小时前
LLaMA-Factory 集成了哪些超参数调优框架?及 Optuna + Weights & Biases + TensorBoard对比分析
人工智能
喜欢吃豆6 小时前
spec-kit深度解析:AI驱动的规范驱动开发(SDD)的架构、哲学与实践启示
人工智能·驱动开发·python·架构·大模型
rengang666 小时前
28-Keras:探讨高层神经网络API及其快速原型设计能力
人工智能·python·神经网络·机器学习·keras
河南博为智能科技有限公司7 小时前
十六串口服务器-解决多设备联网难题
大数据·运维·服务器·人工智能·物联网·边缘计算