tensorflow实现inception Net数据增强
在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。
了解更多干货文章,可以关注小程序八斗问答
- Tensorflow实现Google Inception Net
- Tensorflow实战9:Googel Inception net实现即时间测评
- Tensorflow 实现Google Inception Net
- Tensorflow实战学习(三十二)【实现Google Inception Net】
- TensorFlow实现经典深度学习网络(3):TensorFlow实现Google Inception Net
- 在ASP.NET页面中实现数据棒图
- 用DataList控件和ObjectDataSource在ASP.NET 2.0中实现高效能数据分页
- ASP.NET实现数据图表
- 用DataList控件和ObjectDataSource在ASP.NET 2.0中实现高效能数据分页
- 在ASP.NET页面中实现数据饼图
- [导入]asp.net 2.0-实现数据访问(1)
- ASP.NET中运用xmlhttp实现无刷新数据传递(C# and JavaScript)
- ASP和ASP.NET(DataGrid)实现数据列表之对比[源码]
- ASP.NET中如何实现同一时间只有一人能够修改系统数据
- Scott Mitchell 的ASP.NET 2.0数据教程之二十一:: 实现开放式并发
- 在ASP.NET中如何在DataGrid中实现数据嵌套显示
- ASP.NET 2.0中实现模板中的数据绑定
- [翻译] Scott Mitchell 的ASP.NET 2.0数据操作教程之十:使用 GridView 和DetailView实现的主/从报表
- Scott Mitchell 的ASP.NET 2.0数据教程之三十五:: 使用Repeater和DataList实现的主/从报表
- ASP.NET实现数据图表a