深度学习:数据增强
最编程
2024-10-02 07:15:40
...
目录
前言
一、为什么要使用数据增强?
二、数据增强有哪些方法?
1. 几何变换
2. 颜色变换
3. 噪声添加
4. 裁剪
5. 混合技术
6. 其他方法
三、代码实现
前言
数据增强是深度学习中常用的一种技术,旨在通过对训练数据进行各种变换来增加数据集的多样性,从而提高模型的泛化能力。
一、为什么要使用数据增强?
- 数据量不足:训练样本较少时,增强可以生成更多样本。
- 数据不平衡:某些类别样本较少,需要平衡各类别。
- 过拟合风险:模型在训练集上表现很好,但在验证集上差时。
- 模拟多样性:希望模型能适应不同的实际应用场景。
二、数据增强有哪些方法?
1. 几何变换
- 旋转:随机旋转图像一定角度。
- 平移:在水平或垂直方向上随机平移图像。
- 缩放:随机缩放图像,使其大小发生变化。
- 翻转:水平或垂直翻转图像。
2. 颜色变换
- 亮度调整:随机改变图像的亮度。
- 对比度调整:调整图像的对比度,使得高光和阴影部分更加明显。
- 色相/饱和度调整:随机改变图像的色相和饱和度。
3. 噪声添加
- 高斯噪声:在图像中添加高斯噪声,增加训练数据的鲁棒性。
- 椒盐噪声:随机在图像中添加黑白噪点。
4. 裁剪
- 随机裁剪:随机裁剪图像的一部分,保留部分信息以进行训练。
5. 混合技术
- Mixup:将两张图像及其标签进行线性组合,生成新的训练样本。
- CutMix:在一张图像中裁剪出一部分并将其替换为另一张图像的部分。
6. 其他方法
- 透视变换:对图像进行透视变换,以模拟不同的视角。
- 模糊处理:对图像应用模糊效果,例如高斯模糊。
三、代码实现
from torchvision import transforms
data_transforms = {
'train':
transforms.Compose([
transforms.Resize([300, 300]),
transforms.RandomRotation(45), # 随机旋转45度
transforms.CenterCrop(256), # 从图像中心裁剪(256,256)
transforms.RandomHorizontalFlip(p=0.5), # 随机水平旋转
transforms.RandomVerticalFlip(p=0.5), # 随机垂直旋转
transforms.ColorJitter(brightness=0.2, contrast=0.1, saturation=0.1, hue=0.1), # 图像随机调整颜色
transforms.RandomGrayscale(p=0.1), # 图像随机转换成灰度图
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) # 为 ImageNet 数据集计算的标准化参数
]),
'test':
transforms.Compose([
transforms.Resize([256, 256]),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) # 为 ImageNet 数据集计算的标准化参数
])
}
上一篇: 深入探索卷积神经网络 (CNN)
推荐阅读
-
基于深度学习的不遗忘训练
-
海螺狮子壳里的 Dojo:在一台破旧机器上建立的私有数据中心--Centos 04 下的 Docker 学习(环境准备)
-
人工智能中机器学习与深度学习的区别
-
机器学习和深度学习:I. 对机器学习和深度学习的基本认识
-
上手深度学习笔记 2.2 - 神经网络从基础→高级(参数管理 - 每层的权重/偏置)
-
深度学习--神经网络中的数据扩充
-
深度学习:数据增强
-
雪球学习 MySQL [第 2.3 讲]:MySQL数据过滤和排序详解:WHERE条件、ORDER BY排序和LIMIT分页查询
-
深度学习 -------------------- 长短期记忆网络 (LSTM)--简洁实现
-
深度学习手记 2.4 - 神经网络基础 → 高级(文件读写 - 保存参数和模型)