首页 >

inceptionNet如何实现数据增强? – 网络|

怎么更新tensorflow,为什么要重视网络安全,怎么改双击打开文件inceptionNet如何实现数据增强? - 网络|inceptionNet如何实现数据增强

看到悟空问答官方给偶推荐这个问题,偶不得不说,这推荐是不是有点太精准了?偶才前几天在上发布的InceptionNet如何实现数据增强,今天就给偶推送这个问题,这一点偶不得不服。所以接下来偶就直接引用偶之前写过的文章了。

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

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

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

image=tf.image.convert_image_dtype(image,dtype=tf.float32)

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、随机水平翻转

#随机水平翻转

distorted_image=tf.image.random_flip_left_right(distorted_image)

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

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

distorted_image=tf.subtract(distorted_image,0.5)#减去0.5

distorted_image=tf.multiply(distorted_image,2.0)#乘以2

第一步将图片转换到[0,1]区间内,通过除以255,通过最后两步可以将图片转换到[-1,1]区间内。将图片转换到[0,1]区间,其实就是做了一个0(最小值)/255(最大值)的变化,将图片转换到[-1,1]区间相当于做了128(最小值)/128(最大值),实验证明[-1,1]区间比[0,1]的准确率要高一些。

注意:对图片的像素区间做了转换之后,在预测图片类标的时候,也需要对图片的像素区间进行相同的缩放。

5、测试


inceptionNet如何实现数据增强? - 网络|
  • css让文字处于底部 |css如何设置table边框
  • css让文字处于底部 |css如何设置table边框 | css让文字处于底部 |css如何设置table边框 ...

    inceptionNet如何实现数据增强? - 网络|
  • 强制控制一行css |css3.0 chm
  • 强制控制一行css |css3.0 chm | 强制控制一行css |css3.0 chm ...

    inceptionNet如何实现数据增强? - 网络|
  • css修改不显示文字大小 |css 中文乱码
  • css修改不显示文字大小 |css 中文乱码 | css修改不显示文字大小 |css 中文乱码 ...