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')