防止过拟合(三):数据增强(增加训练样本)

举报
AI 菌 发表于 2021/08/04 23:12:07 2021/08/04
【摘要】 深度学习笔记:欠拟合、过拟合 防止过拟合(一):正则化 防止过拟合(二):Dropout 数据增强(Date Augmentation) 增加数据集大小是解决过拟合最重要的途径。但是收集样本数据和标注往往是代价昂贵的,在有限的数据集上,通过数据增强技术可以增加训练的样本数量,获得一定程度上的性能提升。 **数据增强(Data Augmentation)**是指在维持...

深度学习笔记:欠拟合、过拟合
防止过拟合(一):正则化
防止过拟合(二):Dropout

数据增强(Date Augmentation)

增加数据集大小是解决过拟合最重要的途径。但是收集样本数据和标注往往是代价昂贵的,在有限的数据集上,通过数据增强技术可以增加训练的样本数量,获得一定程度上的性能提升。
**数据增强(Data Augmentation)**是指在维持样本标签不变的条件下,根据先验知识改变样本的特征,使得新产生的样本也符合或者近似符合数据的真实分布。
常见的数据增强方式:旋转、缩放、平移、裁剪、改变视角、遮挡某局部区域,这样都不会改变图片的类别标签。

基本数据增强方式实现

TensorFlow 中提供了常用图片的处理函数,位于 tf.image 子模块中。
1.缩放
通过tf.image.resize 函数可以实现图片的缩放功能。

# 将输入图片x缩放到224*224
x = tf.image.resize(x, [224, 224])

  
 
  • 1
  • 2

2.旋转
通过 tf.image.rot90(x, k=1)可以实现图片按逆时针方式旋转 k 个 90 度。

# 图片逆时针旋转180度
x = tf.image.rot90(x, 2)

  
 
  • 1
  • 2

3.翻转
可以通过 tf.image.random_flip_left_right 和 tf.image.random_flip_up_down 实现图片在水平方向竖直方向的随机翻转操作

# 水平方向翻转(左右颠倒,镜像图片)
x = tf.image.random_flip_left_right(x)
# 竖直方向翻转(上下颠倒)
x = tf.image.random_flip_up_down(x)

  
 
  • 1
  • 2
  • 3
  • 4

4.裁剪
通过在原图的左右或者上下方向去掉部分边缘像素,可以保持图片主体不变,同时获得新的图片样本。
在实际裁剪时,一般先将图片缩放到略大于网络输入尺寸的大小,再进行裁剪到合适大小,例如网络的输入大小为 224x224,那么我们先通过 resize 函数将图片缩放到 244x244 大小,再随机裁剪到 224x224 大小。

# 图片先缩放到稍到尺寸
x = tf.image.resize(x, [224, 224])
# 再随机裁剪到合适尺寸
x = tf.image.random_crop(x, [224,224,3])

  
 
  • 1
  • 2
  • 3
  • 4

5.其他方法,比如:添加噪声,变换视角、随机遮挡等。
下图展示了上述不同数据增强方法后的效果:
在这里插入图片描述

生成数据

除此之外,还可以通过条件生成对抗网络(Conditional GAN, CGAN)可以生成带标签的样本数据。
通过生成模型在原有数据上学习到数据的分布,从而生成新的样本,这种方式也可以在一定程度上提升网络性能。

文章来源: ai-wx.blog.csdn.net,作者:AI 菌,版权归原作者所有,如需转载,请联系作者。

原文链接:ai-wx.blog.csdn.net/article/details/104860314

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。