Keras中 ImageDataGenerator函數(shù)的參數(shù)用法
一、Keras ImageDataGenerator參數(shù)
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:布爾值,使輸入數(shù)據(jù)集去中心化(均值為0), 按feature執(zhí)行。
samplewise_center:布爾值,使輸入數(shù)據(jù)的每個(gè)樣本均值為0。
featurewise_std_normalization:布爾值,將輸入除以數(shù)據(jù)集的標(biāo)準(zhǔn)差以完成標(biāo)準(zhǔn)化, 按feature執(zhí)行。
samplewise_std_normalization:布爾值,將輸入的每個(gè)樣本除以其自身的標(biāo)準(zhǔn)差。
zca_whitening:布爾值,對(duì)輸入數(shù)據(jù)施加ZCA白化。
rotation_range:整數(shù),數(shù)據(jù)提升時(shí)圖片隨機(jī)轉(zhuǎn)動(dòng)的角度。隨機(jī)選擇圖片的角度,是一個(gè)0~180的度數(shù),取值為0~180。 在 [0, 指定角度] 范圍內(nèi)進(jìn)行隨機(jī)角度旋轉(zhuǎn)。
width_shift_range:浮點(diǎn)數(shù),圖片寬度的某個(gè)比例,數(shù)據(jù)提升時(shí)圖片隨機(jī)水平偏移的幅度。
height_shift_range:浮點(diǎn)數(shù),圖片高度的某個(gè)比例,數(shù)據(jù)提升時(shí)圖片隨機(jī)豎直偏移的幅度。 height_shift_range和width_shift_range是用來(lái)指定水平和豎直方向隨機(jī)移動(dòng)的程度,這是兩個(gè)0~1之間的比例。
shear_range:浮點(diǎn)數(shù),剪切強(qiáng)度(逆時(shí)針方向的剪切變換角度)。是用來(lái)進(jìn)行剪切變換的程度。
zoom_range:浮點(diǎn)數(shù)或形如[lower,upper]的列表,隨機(jī)縮放的幅度,若為浮點(diǎn)數(shù),則相當(dāng)于[lower,upper] = [1 - zoom_range, 1+zoom_range]。用來(lái)進(jìn)行隨機(jī)的放大。(后面的例子與此處說(shuō)法有矛盾,感覺后邊是對(duì)的?)
channel_shift_range:浮點(diǎn)數(shù),隨機(jī)通道偏移的幅度。
fill_mode:‘constant',‘nearest',‘reflect'或‘wrap'之一,當(dāng)進(jìn)行變換時(shí)超出邊界的點(diǎn)將根據(jù)本參數(shù)給定的方法進(jìn)行處理
cval:浮點(diǎn)數(shù)或整數(shù),當(dāng)fill_mode=constant時(shí),指定要向超出邊界的點(diǎn)填充的值。
horizontal_flip:布爾值,進(jìn)行隨機(jī)水平翻轉(zhuǎn)。隨機(jī)的對(duì)圖片進(jìn)行水平翻轉(zhuǎn),這個(gè)參數(shù)適用于水平翻轉(zhuǎn)不影響圖片語(yǔ)義的時(shí)候。
vertical_flip:布爾值,進(jìn)行隨機(jī)豎直翻轉(zhuǎn)。
rescale: 值將在執(zhí)行其他處理前乘到整個(gè)圖像上,我們的圖像在RGB通道都是0~255的整數(shù),這樣的操作可能使圖像的值過(guò)高或過(guò)低,所以我們將這個(gè)值定為0~1之間的數(shù)。
preprocessing_function: 將被應(yīng)用于每個(gè)輸入的函數(shù)。該函數(shù)將在任何其他修改之前運(yùn)行。該函數(shù)接受一個(gè)參數(shù),為一張圖片(秩為3的numpy array),并且輸出一個(gè)具有相同shape的numpy array
data_format:字符串,“channel_first”或“channel_last”之一,代表圖像的通道維的位置。該參數(shù)是Keras 1.x中的image_dim_ordering,“channel_last”對(duì)應(yīng)原本的“tf”,“channel_first”對(duì)應(yīng)原本的“th”。以128x128的RGB圖像為例,“channel_first”應(yīng)將數(shù)據(jù)組織為(3,128,128),而“channel_last”應(yīng)將數(shù)據(jù)組織為(128,128,3)。該參數(shù)的默認(rèn)值是~/.keras/keras.json中設(shè)置的值,若從未設(shè)置過(guò),則為“channel_last”。
二、Data Aumentation(數(shù)據(jù)擴(kuò)充)說(shuō)明
Data Aumentation(數(shù)據(jù)擴(kuò)充)指的是在使用以下或者其他方法增加數(shù)據(jù)輸入量。這里,我們特指圖像數(shù)據(jù)。
旋轉(zhuǎn) | 反射變換(Rotation/reflection): 隨機(jī)旋轉(zhuǎn)圖像一定角度; 改變圖像內(nèi)容的朝向;
翻轉(zhuǎn)變換(flip): 沿著水平或者垂直方向翻轉(zhuǎn)圖像;
縮放變換(zoom): 按照一定的比例放大或者縮小圖像;
平移變換(shift): 在圖像平面上對(duì)圖像以一定方式進(jìn)行平移;可以采用隨機(jī)或人為定義的方式指定平移范圍和平移步長(zhǎng), 沿水平或豎直方向進(jìn)行平移. 改變圖像內(nèi)容的位置;
尺度變換(scale): 對(duì)圖像按照指定的尺度因子, 進(jìn)行放大或縮小; 或者參照SIFT特征提取思想, 利用指定的尺度因子對(duì)圖像濾波構(gòu)造尺度空間. 改變圖像內(nèi)容的大小或模糊程度;
對(duì)比度變換(contrast): 在圖像的HSV顏色空間,改變飽和度S和V亮度分量,保持色調(diào)H不變. 對(duì)每個(gè)像素的S和V分量進(jìn)行指數(shù)運(yùn)算(指數(shù)因子在0.25到4之間), 增加光照變化;
噪聲擾動(dòng)(noise): 對(duì)圖像的每個(gè)像素RGB進(jìn)行隨機(jī)擾動(dòng), 常用的噪聲模式是椒鹽噪聲和高斯噪聲;
三、某些屬性測(cè)試
3.1 shear_range
datagen = image.ImageDataGenerator(shear_range=0.5)
shear_range就是錯(cuò)切變換,效果就是讓所有點(diǎn)的x坐標(biāo)(或者y坐標(biāo))保持不變,而對(duì)應(yīng)的y坐標(biāo)(或者x坐標(biāo))則按比例發(fā)生平移,且平移的大小和該點(diǎn)到x軸(或y軸)的垂直距離成正比。
如圖8所示,一個(gè)黑色矩形圖案變換為藍(lán)色平行四邊形圖案。狗狗圖片變換效果如圖9所示。


3.2 zoom_range
datagen = image.ImageDataGenerator(zoom_range=0.5)
zoom_range參數(shù)可以讓圖片在長(zhǎng)或?qū)挼姆较蜻M(jìn)行放大,可以理解為某方向的resize,因此這個(gè)參數(shù)可以是一個(gè)數(shù)或者是一個(gè)list。當(dāng)給出一個(gè)數(shù)時(shí),圖片同時(shí)在長(zhǎng)寬兩個(gè)方向進(jìn)行同等程度的放縮操作;當(dāng)給出一個(gè)list時(shí),則代表[width_zoom_range, height_zoom_range],即分別對(duì)長(zhǎng)寬進(jìn)行不同程度的放縮。而參數(shù)大于0小于1時(shí),執(zhí)行的是放大操作,當(dāng)參數(shù)大于1時(shí),執(zhí)行的是縮小操作。
參數(shù)大于0小于1時(shí),效果如圖10:

參數(shù)等于4時(shí),效果如圖11:

3.3 . fill_mode
datagen = image.ImageDataGenerator(fill_mode='wrap', zoom_range=[4, 4])
fill_mode為填充模式,如前面提到,當(dāng)對(duì)圖片進(jìn)行平移、放縮、錯(cuò)切等操作時(shí),圖片中會(huì)出現(xiàn)一些缺失的地方,那這些缺失的地方該用什么方式補(bǔ)全呢?就由fill_mode中的參數(shù)確定,包括:“constant”、“nearest”(默認(rèn))、“reflect”和“wrap”。這四種填充方式的效果對(duì)比如圖18所示,從左到右,從上到下分別為:“reflect”、“wrap”、“nearest”、“constant”。

以上這篇Keras中 ImageDataGenerator函數(shù)的參數(shù)用法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3 中作為一等對(duì)象的函數(shù)解析
這篇文章主要介紹了Python3 中作為一等對(duì)象的函數(shù),本文通過(guò)實(shí)例代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
使用python編寫批量卸載手機(jī)中安裝的android應(yīng)用腳本
該腳本的功能是卸載android手機(jī)中安裝的所有第三方應(yīng)用,主要是使用adb shell pm、adb uninstall 命令,需要的朋友可以參考下2014-07-07
python基于Selenium的web自動(dòng)化框架
這篇文章主要介紹了python基于Selenium的web自動(dòng)化框架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python爬取拉勾網(wǎng)職位數(shù)據(jù)的方法
這篇文章主要介紹了python爬取拉勾網(wǎng)職位數(shù)據(jù)的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-01-01

