人工智能|利用keras和tensorflow探索数据增强

简介: 人工智能|利用keras和tensorflow探索数据增强

问题描述

数据增强是一种通过使用裁剪、填充、翻转等技术来增加数据量的策略。数据增强使模型对微小变化更为稳健,从而防止模型过度拟合。将扩充后的数据存储在内存中既不实用也不高效,这就是keras中的imagedatagenerator类(也包括在tensorflow的高级api:tensorflow.keras中)发挥作用的地方。imagedatagenerator通过实时数据扩充生成成批张量图像数据。由生成器生成的输出图像将具有与输入图像相同的输出尺寸

解决方案

下面是一个辅助脚本,我们将使用它来直观地显示使用ImageDataGenerator类可以实现的所有内容。

from  tensorflow.keras.preprocessing.image import ImageDataGenerator

from matplotlib.pylot  import imread,imshow,subplots,show

 

def plot(data_generator):

    '''

    Plots 4 images generated by an object of  the ImageDataGenerator class

    '''

    data_generator.fit(images)

    image_iterator =  data_generator.flow(images)

 

    fig, rows = subplots(nrows=1, ncols=4 ,  figsize=(18,18))

    for row in rows:

         row.imshow(image_iterator.next()[0].astype('int'))

        row.asis('off')

    show()

 

image=imread("image.jpeg")

 

#Creating a dataset which  contains just one image

images=image.reshape((1,image.shape[0],image.shape[1],image.shape[2]))

 

imshow(image[0])

show()

1、旋转(Rotation)

通过指定rotation_range(旋转角度),生成的数据的随机旋转角度范围在+rotation range 到 -rotation_ range(以度为单位)。

data_generator =  ImageDataGenerator(rotation_range=90)

plot(data_generator)


2.宽度偏移(Width Shifting)width_ shift_ range(宽度移位)范围是一个介于0.0和1.0之间的浮点数,它指定图像将随机向左或向右移位的总宽度部分的上限。

data_generator = ImageDataGenerator(width_shift_range=0.3)

plot(data_generator)

 

3、高度偏移(Height Shifting)

与宽度移动完全相同,只是图像是垂直移动而不是水平移动。

data_generator =  ImageDataGenerator(height_shift_range=0.3)

plot(data_generator)

 

4、亮度(Brightness)

brightness_ range(亮度范围)指定从中随机选取亮度偏移值的范围。0的亮度相当于绝对没有亮度,1对应于最大亮度。

data_generator =  ImageDataGenerator(brightness_range=(0.1,0.9))

plot(data_generator)

 

5、剪切(Shear Intensity)

剪切变换使图像的形状倾斜。这与旋转中的不同,在剪切变换中,我们固定一个轴并将图像以一定的角度拉伸,称为剪切角。这会在图像中创建一种“拉伸”,这在旋转中是看不到的。shear_range以度为单位指定倾斜角度。

data_generator =  ImageDataGenerator(shear_range=45.0)

plot(data_generator)

 

6、缩放(Zoom)

通过zoom_range参数获得随机缩放。小于1.0的缩放将放大图像,大于1.0的缩放将缩小图像。

data_generator =  ImageDataGenerator(zoom_range=[0.5,1.5])

plot(data_generator)

 

7、通道位移(Channel Shift)

通道移位通过从channel _shift_range(通道移位范围)指定的范围中选择的随机值随机移位通道值。

data_generator =  ImageDataGenerator(channel_shift_range=150.0)

plot(data_generator)

 

8、水平翻转(Horizontal Flip)

生成器将生成图像,这些图像将随机水平翻转。

data_generator =  ImageDataGenerator(horizontal_flip=True)

plot(data_generator)


9、垂直翻转(Vertical Filp)

与水平翻转相反,我们也可以应用垂直翻转

data_generator  = ImageDataGenerator(vertical_flip=True)

plot(data_generator)


结语

如何填充没有的区域?

有几个选择,其中我们可以选择如何填补这些地区

1、相似填充(Nearest)

这是默认选项,其中选择最接近的像素值并对所有空值重复。(例如aaaaaa|abcd|dddddd)

data_generator = ImageDataGenerator(width_shift_range=0.3,fill_mode='nearest')

plot(data_generator)

 

2、反射填充(Reflect)

此模式创建“Reflect”并按已知值的相反顺序填充空值。(例如abcddcba|abcd|dcbaabcd)

data_generator =  ImageDataGenerator(width_shift_range=0.3,fill_mode='reflect')

plot(data_generator)

 

3、包裹填充(Wrap)

与反射效果不同,还可以通过将已知点的值复制到未知点来创建“Wrap”效果,保持顺序不变。(例如 abcdabcd|abcd|abcdabcd)

data_generator =  ImageDataGenerator(width_shift_range=0.3,fill_mode='wrap')

plot(data_generator)

 

4、常量填充(Constant)

如果想用一个常量值填充输入边界之外的所有点,这个模式可以帮助自己实现这一点。常量值由cval参数指定。

data_generator =  ImageDataGenerator(width_shift_range=0.3,fill_mode='nearest',cval=190)

plot(data_generator)


更多

你可以直接利用这个类,有一些额外的优势。

例如

1.数据归零(featurewise_center,samplewise_center)

2.规范化(featurewise_std_normalization, samplewise_std_normalization)。

可以通过将这些变量的布尔值传递给ImageDataGenerator类来设置这些变量。

还可以通过指定rescale参数来重新缩放值,该参数乘以所有值。

目录
相关文章
|
3月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
434 55
|
7天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
42 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
95 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
24天前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
|
3月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
240 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
3月前
|
存储 机器学习/深度学习 人工智能
科技云报到:人工智能时代“三大件”:生成式AI、数据、云服务
科技云报到:人工智能时代“三大件”:生成式AI、数据、云服务
|
4月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
201 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
4月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
204 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
4月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
214 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
4月前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
181 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型

热门文章

最新文章