歡迎您光臨本站 註冊首頁

Keras中 ImageDataGenerator函數的參數用法

←手機掃碼閱讀     火星人 @ 2020-07-06 , reply:0

一、Keras ImageDataGenerator參數

  from keras.preprocessing.image import ImageDataGenerator  keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,    samplewise_center=False,    featurewise_std_normalization = False,    samplewise_std_normalization = False,    zca_whitening = False,    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.0,    horizontal_flip = False,    vertical_flip = False,    rescale = None,    preprocessing_function = None,    data_format = K.image_data_format(),  )

 

featurewise_center:布爾值,使輸入數據集去中心化(均值為0), 按feature執行。

samplewise_center:布爾值,使輸入數據的每個樣本均值為0。

featurewise_std_normalization:布爾值,將輸入除以數據集的標準差以完成標準化, 按feature執行。

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

zca_whitening:布爾值,對輸入數據施加ZCA白化。

rotation_range:整數,數據提升時圖片隨機轉動的角度。隨機選擇圖片的角度,是一個0~180的度數,取值為0~180。 在 [0, 指定角度] 範圍內進行隨機角度旋轉。

width_shift_range:浮點數,圖片寬度的某個比例,數據提升時圖片隨機水平偏移的幅度。

height_shift_range:浮點數,圖片高度的某個比例,數據提升時圖片隨機豎直偏移的幅度。 height_shift_range和width_shift_range是用來指定水平和豎直方向隨機移動的程度,這是兩個0~1之間的比例。

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: 值將在執行其他處理前乘到整個圖像上,我們的圖像在RGB通道都是0~255的整數,這樣的操作可能使圖像的值過高或過低,所以我們將這個值定為0~1之間的數。

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”。

二、Data Aumentation(數據擴充)說明

Data Aumentation(數據擴充)指的是在使用以下或者其他方法增加數據輸入量。這裡,我們特指圖像數據。

旋轉 | 反射變換(Rotation/reflection): 隨機旋轉圖像一定角度; 改變圖像內容的朝向;

翻轉變換(flip): 沿著水平或者垂直方向翻轉圖像;

縮放變換(zoom): 按照一定的比例放大或者縮小圖像;

平移變換(shift): 在圖像平面上對圖像以一定方式進行平移;可以採用隨機或人為定義的方式指定平移範圍和平移步長, 沿水平或豎直方向進行平移. 改變圖像內容的位置;

尺度變換(scale): 對圖像按照指定的尺度因子, 進行放大或縮小; 或者參照SIFT特徵提取思想, 利用指定的尺度因子對圖像濾波構造尺度空間. 改變圖像內容的大小或模糊程度;

對比度變換(contrast): 在圖像的HSV顏色空間,改變飽和度S和V亮度分量,保持色調H不變. 對每個像素的S和V分量進行指數運算(指數因子在0.25到4之間), 增加光照變化;

噪聲擾動(noise): 對圖像的每個像素RGB進行隨機擾動, 常用的噪聲模式是椒鹽噪聲和高斯噪聲;

三、某些屬性測試

3.1 shear_range

datagen = image.ImageDataGenerator(shear_range=0.5)

shear_range就是錯切變換,效果就是讓所有點的x座標(或者y座標)保持不變,而對應的y座標(或者x座標)則按比例發生平移,且平移的大小和該點到x軸(或y軸)的垂直距離成正比。

如圖8所示,一個黑色矩形圖案變換為藍色平行四邊形圖案。狗狗圖片變換效果如圖9所示。

3.2 zoom_range

datagen = image.ImageDataGenerator(zoom_range=0.5)

zoom_range參數可以讓圖片在長或寬的方向進行放大,可以理解為某方向的resize,因此這個參數可以是一個數或者是一個list。當給出一個數時,圖片同時在長寬兩個方向進行同等程度的放縮操作;當給出一個list時,則代表[width_zoom_range, height_zoom_range],即分別對長寬進行不同程度的放縮。而參數大於0小於1時,執行的是放大操作,當參數大於1時,執行的是縮小操作。

參數大於0小於1時,效果如圖10:

參數等於4時,效果如圖11:

3.3 . fill_mode

datagen = image.ImageDataGenerator(fill_mode='wrap', zoom_range=[4, 4])

fill_mode為填充模式,如前面提到,當對圖片進行平移、放縮、錯切等操作時,圖片中會出現一些缺失的地方,那這些缺失的地方該用什麼方式補全呢?就由fill_mode中的參數確定,包括:“constant”、“nearest”(默認)、“reflect”和“wrap”。這四種填充方式的效果對比如圖18所示,從左到右,從上到下分別為:“reflect”、“wrap”、“nearest”、“constant”。


   


[火星人 ] Keras中 ImageDataGenerator函數的參數用法已經有231次圍觀

http://coctec.com/docs/python/shhow-post-241439.html