SpringBoot中数据增强的示例分析
这篇文章将为大家详细讲解有关SpringBoot中数据增强的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
数据增强(Date Augmentation)
增加数据集大小是解决过拟合最重要的途径。但是收集样本数据和标注往往是代价昂贵的,在有限的数据集上,通过数据增强技术可以增加训练的样本数量,获得一定程度上的性能提升。
**数据增强(Data Augmentation)**是指在维持样本标签不变的条件下,根据先验知识改变样本的特征,使得新产生的样本也符合或者近似符合数据的真实分布。
常见的数据增强方式:旋转、缩放、平移、裁剪、改变视角、遮挡某局部区域,这样都不会改变图片的类别标签。
基本数据增强方式实现
TensorFlow 中提供了常用图片的处理函数,位于 tf.image 子模块中。
1.缩放
通过tf.image.resize 函数可以实现图片的缩放功能。
# 将输入图片x缩放到224*224x = tf.image.resize(x, [224, 224])
2.旋转
通过 tf.image.rot90(x, k=1)可以实现图片按逆时针方式旋转 k 个 90 度。
# 图片逆时针旋转180度x = tf.image.rot90(x, 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)
4.裁剪
通过在原图的左右或者上下方向去掉部分边缘像素,可以保持图片主体不变,同时获得新的图片样本。
在实际裁剪时,一般先将图片缩放到略大于网络输入尺寸的大小,再进行裁剪到合适大小,例如网络的输入大小为 224x224,那么我们先通过 resize 函数将图片缩放到 244x244 大小,再随机裁剪到 224x224 大小。
# 图片先缩放到稍到尺寸x = tf.image.resize(x, [224, 224])# 再随机裁剪到合适尺寸x = tf.image.random_crop(x, [224,224,3])
5.其他方法,比如:添加噪声,变换视角、随机遮挡等。
下图展示了上述不同数据增强方法后的效果:
生成数据
除此之外,还可以通过条件生成对抗网络(Conditional GAN, CGAN)可以生成带标签的样本数据。
通过生成模型在原有数据上学习到数据的分布,从而生成新的样本,这种方式也可以在一定程度上提升网络性能。
关于"SpringBoot中数据增强的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。