1. 程式人生 > >keras之ImageDataGenerator引數詳解及用法例項-01

keras之ImageDataGenerator引數詳解及用法例項-01

keras圖片生成器ImageDataGenerator
keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,
    samplewise_center=False,
    featurewise_std_normalization=False,
    samplewise_std_normalization=False,
    zca_whitening=False,
    zca_epsilon=1e-6,
    rotation_range=0.,
    width_shift_range=0.,
    height_shift_range=0.,
    shear_range=0.,
    zoom_range=0.,
    channel_shift_range=0.,
    fill_mode='nearest',
    cval=0.,
    horizontal_flip=False,
    vertical_flip=False,
    rescale=None,
    preprocessing_function=None,
    data_format=K.image_data_format())
用以生成一個batch的影象資料,支援實時資料提升。訓練時該函式會無限生成資料,直到達到規定的epoch次數為止。

引數
featurewise_center:布林值,使輸入資料集去中心化(均值為0), 按feature執行

samplewise_center:布林值,使輸入資料的每個樣本均值為0

featurewise_std_normalization:布林值,將輸入除以資料集的標準差以完成標準化, 按feature執行

samplewise_std_normalization:布林值,將輸入的每個樣本除以其自身的標準差

zca_whitening:布林值,對輸入資料施加ZCA白化

zca_epsilon: ZCA使用的eposilon,預設1e-6

rotation_range:整數,資料提升時圖片隨機轉動的角度

width_shift_range:浮點數,圖片寬度的某個比例,資料提升時圖片水平偏移的幅度

height_shift_range:浮點數,圖片高度的某個比例,資料提升時圖片豎直偏移的幅度

shear_range:浮點數,剪下強度(逆時針方向的剪下變換角度)

zoom_range:浮點數或形如[lower,upper]的列表,隨機縮放的幅度,若為浮點數,則相當於[lower,upper] = [1 - zoom_range, 1+zoom_range]

channel_shift_range:浮點數,隨機通道偏移的幅度

fill_mode:;‘constant’,‘nearest’,‘reflect’或‘wrap’之一,當進行變換時超出邊界的點將根據本引數給定的方法進行處理

cval:浮點數或整數,當fill_mode=constant時,指定要向超出邊界的點填充的值

horizontal_flip:布林值,進行隨機水平翻轉

vertical_flip:布林值,進行隨機豎直翻轉

rescale: 重放縮因子,預設為None. 如果為None或0則不進行放縮,否則會將該數值乘到資料上(在應用其他變換之前)

preprocessing_function: 將被應用於每個輸入的函式。該函式將在圖片縮放和資料提升之後執行。該函式接受一個引數,為一張圖片(秩為3的numpy array),並且輸出一個具有相同shape的numpy array

data_format:字串,“channel_first”或“channel_last”之一,代表影象的通道維的位置。該引數是Keras 1.x中的image_dim_ordering,“channel_last”對應原本的“tf”,“channel_first”對應原本的“th”。以128x128的RGB影象為例,“channel_first”應將資料組織為(3,128,128),而“channel_last”應將資料組織為(128,128,3)。該引數的預設值是~/.keras/keras.json中設定的值,若從未設定過,則為“channel_last”

例項:
datagen = ImageDataGenerator(
        #圖片隨機翻轉的角度
        rotation_range=10,
        #圖片隨機水平偏移的幅度
        width_shift_range=0.2,
        #圖片隨機垂直偏移的幅度
        height_shift_range=0.2,
        #執行其他處理前乘到整個影象上
        rescale=1./255,
        #剪下強度
        shear_range=0.2,
        #隨機放大
        zoom_range=0.2,
        #隨機水平翻轉
        horizontal_flip=True,
        fill_mode='nearest')