ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TensorFlow2.x —— mageDataGenerator

2020-06-27 19:01:48  阅读:223  来源: 互联网

标签:TensorFlow2 平移 plt False image mageDataGenerator range 图片


在图像深度学习任务中,对于小数据集,可以通过Image Data Augmentation图像增强技术来扩充数据。比如Keras的ImageDataGenerator。

ImageDataGenerator的使用:

tf.keras.preprocessing.image.ImageDataGenerator(
    featurewise_center=False, # 使输入数据集去中心化(均值为0), 按feature执行,数据中心化可以消除量纲对数据结构的影响。对输入的图片每个通道减去每个通道对应均值。
    samplewise_center=False, #  每张图片减去样本均值, 使得每个样本均值为0。
    featurewise_std_normalization=False,  #将输入除以数据集的本身的标准差以完成标准化, 按feature执行,标准化可以消除量纲对数据结构的影响。
    samplewise_std_normalization=False, # 每张图片除以样本的标准差
    zca_whitening=False, # 是否进行ZCA白化
    zca_epsilon=1e-06, # ZCA白化的epsilon值,默认是1e-6。ZCA白化保证数据的各维度的方差相同,目的在于去掉各维度之间的相关性
    rotation_range=0, # 指定旋转角度范围。其参数只需指定一个整数即可,但并不是固定以这个角度进行旋转,而是在 [0, 指定角度] 范围内进行随机角度旋转
    width_shift_range=0.0,# 水平位置平移。参数可以是[0, 1]的浮点数,也可以大于1,其最大平移距离为图片长的尺寸乘以参数,同样平移距离并不固定为最大平移距离,平移距离在 [0, 最大平移距离] 区间内
    height_shift_range=0.0, # 垂直位置平移。参数可以是[0, 1]的浮点数,也可以大于1,其最大平移距离为图片长的尺寸乘以参数,同样平移距离并不固定为最大平移距离,平移距离在 [0, 最大平移距离] 区间内
    brightness_range=None, # 亮度调节
    shear_range=0.0, # 错切变换。效果是让所有点的x坐标(或者y坐标)保持不变,而对应的y坐标(或者x坐标)则按比例发生平移,且平移的大小和该点到x轴(或y轴)的垂直距离成正比。
    zoom_range=0.0, # zoom_range参数可以让图片在长或宽的方向进行放大,可以理解为某方向的resize,因此这个参数可以是一个数或者是一个list。当给出一个数时,图片同时在长宽两个方向进行同等程度的放缩操作;当给出一个list时,如:[width_zoom_range, height_zoom_range],即分别对长宽进行不同程度的放缩。当参数大于0小于1时,执行的是放大操作,当参数大于1时,执行的是缩小操作。
    channel_shift_range=0.0, # channel_shift_range可以理解成改变图片的颜色,通过对颜色通道的数值偏移,改变图片的整体的颜色,这意味着是“整张图”呈现某一种颜色,像是加了一块有色玻璃在图片前面一样,因此它并不能单独改变图片某一元素的颜色,如黑色小狗不能变成白色小狗。
    fill_mode='nearest', # 填充模式。当对图片进行平移、放缩、错切等操作时,图片中会出现一些缺失的地方,那这些缺失的地方该用什么方式补全呢?就由fill_mode中的参数确定,包括:“constant”、“nearest”(默认)、“reflect”和“wrap”
    cval=0.0, # 当fill_mode设置为“constant”时,还有一个可选参数,cval,代表使用某个固定数值的颜色来进行填充。
    horizontal_flip=False, # 随机对图片执行水平翻转操作,意味着不一定对所有图片都会执行水平翻转,每次生成均是随机选取图片进行翻转
    vertical_flip=False, # 随机对图片执行垂直翻转操作,意味着不一定对所有图片都会执行垂直翻转,每次生成均是随机选取图片进行翻转
    rescale=None, # rescale的作用是对图片的每个像素值均乘上这个放缩因子,这个操作在所有其它变换操作之前执行,在一些模型当中,直接输入原图的像素值可能会落入激活函数的“死亡区”,因此设置放缩因子为1/255,把像素值放缩到0和1之间有利于模型的收敛,避免神经元“死亡”。
    preprocessing_function=None,# user提供的处理函数
    data_format=None,# channels_first或者channels_last
    validation_split=0.0, # 多少数据用于验证集
    dtype=None
)

示例代码:

image_datagen = ImageDataGenerator(rotation_range=15.,
                                       zoom_range=0.2,
                                       width_shift_range=0.1,
                                       height_shift_range=0.1)

def show_samples_from_generator(image_datagen, X_train, y_train):
    # take a random image from the training set
    img_rgb = X_train[0]

    # plot the original image
    plt.figure(figsize=(1, 1))
    plt.imshow(img_rgb)
    plt.title('Example of RGB image (class = {})'.format(y_train[0]))
    plt.show()

    # plot some randomly augmented images
    rows, cols = 4, 10
    fig, ax_array = plt.subplots(rows, cols)
    for ax in ax_array.ravel():
        augmented_img, _ = image_datagen.flow(np.expand_dims(img_rgb, 0), y_train[0:1]).next()
        ax.imshow(np.uint8(np.squeeze(augmented_img)))
    plt.setp([a.get_xticklabels() for a in ax_array.ravel()], visible=False)
    plt.setp([a.get_yticklabels() for a in ax_array.ravel()], visible=False)
    plt.suptitle('Random examples of data augmentation (starting from the previous image)')
    plt.show()

标签:TensorFlow2,平移,plt,False,image,mageDataGenerator,range,图片
来源: https://www.cnblogs.com/long5683/p/13199390.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有