最近接觸到這個
在2D影像分類上
很重視資料數量
所以如何增加訓練資料的種類
增強模型的強健性 Robustness
就很重要了
這邊有很棒的說明
https://zhuanlan.zhihu.com/p/30197320
以下是我註解的使用範例
# ImageDataGenerator 用來變化影像內容的類 train_datagen = ImageDataGenerator( rotation_range=0, #旋轉角度 width_shift_range=0,#水平偏移 height_shift_range=0,#上下偏移 shear_range=0.01,#斜向變形 zoom_range=0.01, #放大縮小比例 channel_shift_range=1,#色偏 horizontal_flip=True, #隨機水平翻轉 vertical_flip=True,#隨機垂直翻轉 fill_mode='reflect', #填充模式 rescale=1/255, #輸出時候的數值變化.正規化,例如訓練通常會把0~255改成0~1 ) #flow_from_dataframe 用來給訓練或驗證資料的類 #flow_from_dataframe 重點在於是批次讀取影像檔案,而非一開始都放在記憶體上 #因為很多情況下,影像可能會破萬張,無法一次性放在記憶體中 train_generator = train_datagen.flow_from_dataframe( dataframe=trainDataFrame,# 資料的DataFrame directory=cacheImgPath, # 資料中影像的資料夾 x_col="filename", # 資料中影像的欄位名稱 y_col=dataFrameKeys, #label 資料欄,可以是多個 target_size=IMAGE_SIZE, #目標的影像大小 color_mode="rgb", # 影像類型,這邊蠻重要的,如果是用CV讀取影像,記得要轉成RGB再進去預測 class_mode="raw", # label 的資料使用 raw data ,就是直接使用DataFrame的資料作label,依照y_col指定的欄位 batch_size=batch_size, # 每次多少影像 shuffle=True, # 隨機排列 )
而這個 train_generator 就是給 model 讀取訓練或驗證資料的類了
例如
model.fit_generator( generator=train_generator, steps_per_epoch=10, validation_data=valid_generator, validation_steps=10, epochs=10 )
給大家參考囉~
留言板
歡迎留下建議與分享!希望一起交流!感恩!