24/9/16 算法笔记 数据增强

数据增强是指通过对原始数据集进行一系列变换操作来生成新的训练样本,从而扩充数据集的方法。数据增强通常用于解决数据不足的问题,提高模型的泛化能力,减少过拟合。数据增强通常在训练模型之前应用。

以下是一些情况下可以考虑使用数据增强的建议:

  1. 数据不足:当训练数据集相对较小时,数据增强可以帮助模型更好地学习到数据的特征,提高模型的泛化能力。

  2. 类别不平衡:在类别不平衡的情况下,数据增强可以通过生成新的样本来平衡各个类别之间的数据分布,有助于提高模型对少数类别的识别能力。

  3. 增强模型的鲁棒性:通过引入各种变换,如旋转、翻转、缩放、裁剪、亮度调整等,可以使模型更具鲁棒性,减少对输入数据微小变化的敏感度。

  4. 防止过拟合:数据增强可以有效减少过拟合的风险,通过引入噪声和变化,使模型更难以记住训练数据的细节,从而提高其泛化能力。

在实际应用中,数据增强通常在训练阶段进行,以下是一些常见的数据增强方法:

  1. 几何变换:包括平移、旋转、缩放、剪切、翻转等操作,可以通过这些操作改变图像的角度、大小和位置。

  2. 色彩变换:如亮度、对比度、饱和度、色调的调整,可以增加模型对不同光照和色彩条件的适应能力。

  3. 增加噪声:添加高斯噪声、椒盐噪声等,可以使模型更鲁棒。

  4. 随机裁剪:随机裁剪图像的一部分,可以增加模型对不同尺度和位置的物体的识别能力。

  5. 混合样本:将不同样本进行混合,生成新的训练样本。

数据增强的一些函数

  1. PyTorch

    • transforms.Compose():将多个数据增强操作组合在一起。
    • transforms.RandomHorizontalFlip():随机水平翻转图像。
    • transforms.RandomRotation():随机旋转图像。
    • transforms.ColorJitter():随机调整图像的亮度、对比度和饱和度等。
    • transforms.RandomCrop():随机裁剪图像。
  2. TensorFlow

    • tf.image.random_flip_left_right():随机水平翻转图像。
    • tf.image.random_brightness():随机调整图像的亮度。
    • tf.image.random_contrast():随机调整图像的对比度。
    • tf.image.random_crop():随机裁剪图像。
  3. Keras

    • ImageDataGenerator 类:提供了多种数据增强选项,如水平翻转、旋转、缩放等。
    • ImageDataGenerator.flow_from_directory():从文件夹中读取图像数据并应用数据增强。

举个例子,我要做数字识别器,为了避免过拟合,需要对手写数字数据集进行人工扩充,它可以让我现有的数据集变得更大,一些常用增强是灰度、水平翻转、垂直翻转、随机裁剪、颜色抖动、平移、旋转还有缩放等等。

通过数据增强可以轻松地将训练集的数量增加一倍或多倍,从而可以创建一个非常健壮的模型

复制代码
# 增加数据以防止过拟合
datagen = ImageDataGenerator(
        featurewise_center=False,  				# 在数据集上将输入平均值设置为0
        samplewise_center=False,  				# 将每个样本的平均值设置为0
        featurewise_std_normalization=False,    # 将输入除以数据集的std
        samplewise_std_normalization=False,  	# 将每个输入除以它的std
        zca_whitening=False,  					# 使用ZCA白化
        rotation_range=10,  					# 在范围内随机旋转图像(0到180度)
        zoom_range = 0.1, 						# 随机缩放图像
        width_shift_range=0.1,  				# 水平随机移动图像(总宽度的一部分)
        height_shift_range=0.1,  				# 垂直随机移动图像(总高度的一部分)
        horizontal_flip=False,  				# 随机翻转图像
        vertical_flip=False)  					# 随机翻转图像


datagen.fit(X_train)

为了增加数据选择了:

  • 训练图像随机旋转10度;
  • 随机缩放10%一些训练图像;
  • 将图像水平移动10%的宽度;
  • 将图像垂直移动10%的高度;
  • 没有应用垂直翻转或水平翻转,因为它可能导致错误分类对称数字,如6和9。

数据增强后就可以拟合训练数据集

相关推荐
xian_wwq2 小时前
【学习笔记】攻击链贯穿端边云!边缘网络访问三大核心风险预警
笔记·学习·安全·边缘计算
老赵聊算法、大模型备案3 小时前
北京市生成式人工智能服务已备案信息公告(2025年12月11日)
人工智能·算法·安全·aigc
workflower3 小时前
时序数据获取事件
开发语言·人工智能·python·深度学习·机器学习·结对编程
CoderYanger4 小时前
C.滑动窗口-求子数组个数-越长越合法——2799. 统计完全子数组的数目
java·c语言·开发语言·数据结构·算法·leetcode·职场和发展
厕所博士4 小时前
红黑树原理前置理解—— 2-3 树
算法·2-3树·红黑树原理理解前置
是开心的栗子呀4 小时前
阿里云天池:预测二手车交易价格的机器学习项目-高效实现MAE低于500分
人工智能·机器学习·阿里云·ai·云计算
萌>__<新4 小时前
力扣打卡每日一题————除自身外所有元素的乘积
数据结构·算法
xu_yule5 小时前
算法基础—搜索(2)【记忆化搜索+BFS+01BFS+Floodfill]
数据结构·算法
深蓝海拓5 小时前
PySide6从0开始学习的笔记(一) 学前班
笔记·学习
s09071365 小时前
Xilinx FPGA使用 FIR IP 核做匹配滤波时如何减少DSP使用量
算法·fpga开发·xilinx·ip core·fir滤波