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

数据增强常见方法汇总

1.目的

提高模型泛化能力:通过增加训练数据集的多样性,使模型能够学习到更多数据特征,从而提高对未见过的数据的泛化能力。

减少过拟合:过度拟合是指模型在训练数据上表现良好,但在测试数据上表现不佳。数据增强可以减少模型对训练数据的依赖,降低过拟合风险。

降低训练成本:数据增强可以通过对现有数据进行变换,而不需要额外采集数据,从而降低训练成本。

提高模型鲁棒性:数据增强可以使模型对光照、角度、遮挡等变化更加鲁棒。

2.方法

图像数据增强技术主要通过对图像进行各种变换来增加训练数据的多样性。常见的图像数据增强技术包括:

  • 旋转、翻转、裁剪:改变图像的方向和位置。

  • 缩放、变形:改变图像的大小和形状。

  • 颜色变换:改变图像的亮度、对比度、饱和度等。

  • 添加噪声:在图像中添加随机噪声。

  • 混合图像:将两张图像混合在一起。

可以单独使用某种方法,也可以根据数据集实际情况组合使用其中某几种方法

PyTorch 提供了丰富的数据增强工具,我们可以直接使用torchvision中的transforms 模块实现。

3.代码

1.改变大小Resize/Rescale

path = 'tupian.jpeg'
transform = transforms.Resize((224, 224))
imshow(path, transform)

2.裁剪Cropping

图像的一部分应用于新图像。例如使用 CenterCrop 来返回一个中心裁剪的图像。

 transform = transforms.CenterCrop((224, 224))

3.随机裁剪/大小RandomResizedCrop 

这种方法同时结合了裁剪和调整大小。

transform = transforms.RandomResizedCrop((100, 300))

4.翻转Flipping

水平或垂直翻转图像

transform = transforms.RandomHorizontalFlip()transform = transforms..RandomVerticalFlip

 5.填充Padding

填充包括在图像的所有边缘上按指定的数量填充。下面代码将每条边填充50像素

transform = transforms.Pad((50,50,50,50))

6.旋转Rotation

对图像随机施加旋转角度。我们将这个角设为30度。

 transform = transforms.RandomRotation(30)

7.随机仿射变换Random Affine

保持中心不变的变换。

transform = transforms.RandomAffine(1, translate=(0.5, 0.5), scale=(1, 1), shear=(1,1), fillcolor=(256,256,256))#degrees:旋转角度
#translate:水平和垂直转换
#scale:缩放参数
#share:图片裁剪参数
#fillcolor:图像外部填充的颜色

8.高斯模糊Gaussian Blur

将图片模糊化

 transform = transforms.GaussianBlur(7, 3)

9.灰度化Grayscale

彩色图像转为灰色

transform = transforms.Grayscale(num_output_channels=3)

10.亮度Brightness

改变图像的亮度当与原始图像对比时,生成的图像变暗或变亮。

transform = transforms.ColorJitter(brightness=2)

11.对比度Contrast

图像最暗和最亮部分之间的区别程度被称为对比度。图像的对比度也可以作为增强进行调整。

transform = transforms.ColorJitter(contrast=2)

12.饱和度Saturation

图片中颜色的分离被定义为饱和度

transform = transforms.ColorJitter(saturation=20)

13.色调Hue

色调被定义为图片中颜色的深浅。

transform = transforms.ColorJitter(hue=2) 


http://www.mrgr.cn/news/7652.html

相关文章:

  • NoSQL之Redis配置与优化
  • pyintaller pyqt5 pytest打包后 找不到测试实例
  • 【正点原子K210连载】第三十二章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南
  • leetcode 438 找到字符串中所有字母异位词
  • 使用Python+winshell/shutil清空回收站
  • QML 界面切换的方法
  • Vue.js学习笔记(七)使用sortablejs或el-table-draggable拖拽ElementUI的el-table表格组件
  • C#高效异步文件监控与日志记录工具
  • node npm nvm 地址
  • 【Qt】输入类控件QDail
  • Python算法工程师面试整理-数据结构
  • 【数据结构】链表
  • 使用React和AntDesign构建初始前端项目及路由配置
  • vscode修改选中文字颜色及当前tab颜色
  • 红黑树
  • C++动态规划及九种背包问题
  • ESP RainMaker OTA 自动签名功能的安全启动
  • 井盖异动传感器:为城市安全加码
  • MATLAB 手动实现点云投影滤波器 (76)
  • 51单片机