您好,登錄后才能下訂單哦!
小編給大家分享一下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,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函數的參數有什么用有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。