Keras之数据增广

2018-03-11  本文已影响0人  AI未央

在实际的数据集制作中,由于采集数据难度的问题,可获取的数据量有限,同时训练神经网络需要大量的数据,这时候就可以采用keras内的数据增广模块。

import matplotlib.pyplotas plt

from PILimport Image

from keras.preprocessingimport image

from  kerasimport backendas K

import glob

import keras

import cv2

import numpyas np

import os

def image_create():

    datagen=image.ImageDataGenerator(featurewise_center=True,

        samplewise_center=True,

        featurewise_std_normalization=False,

        samplewise_std_normalization=False,

        zca_whitening=False,

        zca_epsilon=1e-6,

        rotation_range=15.0,

        width_shift_range=0.05,

        height_shift_range=0.05,

        shear_range=0.3,

        zoom_range=0.,

        channel_shift_range=10.,

        fill_mode='nearest',

        cval=0.,

        horizontal_flip=False,

        vertical_flip=False,

        rescale=None,

        preprocessing_function=None,

        data_format=K.image_data_format()

)

gen_data= datagen.flow_from_directory('C:/Users/AI/Desktop/data/',

                                          batch_size=1,

                                          shuffle=False,

                                          save_to_dir='C:/Users/AI/Desktop/ data_augmentation',

                                          save_prefix='',

                                          target_size=(48,48))

for i in range(45000)://你想要增广的数据数量

        # gen_data.next()

        gen_data.next()

name_list = glob.glob('C:/Users/AI/Desktop/num3')

比如我的数据一共有9类,类别编号1-9,第一类的图片存放在C:/Users/AI/Desktop/data/1,第二类的图片放在C:/Users/AI/Desktop/data/2中.....然后运行上述程序,可以得到一共45000张图片。

下面说一下数据增广的一些参数问题:

主要函数:ImageDataGenerator:

rotation_range: 旋转范围, 随机旋转(0-180)度;

width_shift and height_shift: 随机沿着水平或者垂直方向,以图像的长宽小部分百分比为变化范围进行平移;

rescale: 对图像按照指定的尺度因子, 进行放大或缩小, 设置值在0 - 1之间,通常为1 / 255;

shear_range: 水平或垂直投影变换,可以参考https://keras.io/preprocessing/image/

zoom_range: 按比例随机缩放图像尺寸;

horizontal_flip: 水平翻转图像;

fill_mode: 填充像素, 出现在旋转或平移之后.

上一篇 下一篇

猜你喜欢

热点阅读