您的位置:首页 > 其它

tensorflow实现inception Net数据增强

2019-01-09 11:03 357 查看

在CNN中,为了增大数据量避免模型的过拟合,通常都会对训练数据做数据增强处理,这篇文章主要介绍在Inception Net中是如何做数据增强的,tensorflow官方通过slim已经实现了VGG、Inception、LeNet网络的数据增强的,官网链接如下:https://github.com/tensorflow/models/tree/master/research/slim/preprocessing,Inception Net数据增强主要包括以下几个部分:

1、将图片的像素缩放到[0,1)


2、随机裁剪图片

  • image:一个3维的图片tensor,数据的取值范围在[0,1],即表示已经做了归一化后的图片
  • bbox:box的边框,[ymin,xmin,ymax,xmax],默认是[0,0,1,1]表示使用的是整张图片
  • min_object_covered:在随机裁剪图片的时候必须要包括box边框的比例
  • aspect_ratio_range:随机裁剪的图片,宽/高的比例需要满足的范围
  • area_range:随机裁剪的图片需要占图片的比例
  • max_attempts:随机裁剪,尝试的最多次数,超过最大尝试次数返回整张图片

返回的是一张裁剪之后的图片和随机裁剪所选的区域,后面会通过tensorflow对这个区域进行标注,裁剪的图片就是从这个区域中选择的。


3、随机变化图片的参数(翻转、亮度、饱和度、色度、对比度)
在随机变化图片参数的时候,tensorflow提供了一种fast_mode模型,从名字上理解就是快速模型,在fast_mode模型中没有做比较耗时处理的色度变换和对比度变换,由于参数变换的顺序也会影响最终生成的图片,在变换参数的时候也还加入了不同变化顺序。

a、随机水平翻转

b、亮度、饱和度、色度、对比度的随机变换

4、将图片的像素转换到[-1,1]区间内

第一步将图片转换到[0,1]区间内,通过除以255,通过最后两步可以将图片转换到[-1,1]区间内。将图片转换到[0,1]区间,其实就是做了一个0(最小值)/255(最大值)的变化,将图片转换到[-1,1]区间相当于做了128(最小值)/128(最大值),实验证明[-1,1]区间比[0,1]的准确率要高一些。
注意:对图片的像素区间做了转换之后,在预测图片类标的时候,也需要对图片的像素区间进行相同的缩放。

5、测试


 

文章内的代码若想参考,可访问https://blog.csdn.net/sinat_29957455/article/details/83279741。
了解更多干货文章,可以关注小程序八斗问答
 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: