1. 程式人生 > 程式設計 >Keras中 ImageDataGenerator函式的引數用法

Keras中 ImageDataGenerator函式的引數用法

一、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,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所示。

Keras中 ImageDataGenerator函式的引數用法

Keras中 ImageDataGenerator函式的引數用法

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:

Keras中 ImageDataGenerator函式的引數用法

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

Keras中 ImageDataGenerator函式的引數用法

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函式的引數用法

以上這篇Keras中 ImageDataGenerator函式的引數用法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。