深度學習 - Keras - ImageDataGenerator
在Kaggle - cat&dog 練習中,需要使用到數據增來處理要訓練的圖片。會使用到 from keras.preprocessing.image import ImageDataGenerator。
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1./255,
rotation_range = 40, #是角度值(在0~180範圍內),表示圖像隨機旋轉的角度範圍。
width_shift_range=0.2, #是圖像在水平方向上平移的範圍(相對於總寬度或總高度的比例)
height_shift_range=0.2, #是圖像在垂直方向上平移的範圍(相對於總寬度或總高度的比例)
shear_range=0.2, #是隨機錯切變換的角度。
zoom_range=0.2, #是圖像隨機縮放的範圍。
horizontal_flip=True, #是隨機將一半圖像水平翻轉。
fill_mode='nearest') #是用於填充新創建像素的方法,這些新像素可能來自於旋轉或寬度/高度平移。
test_datagen = ImageDataGenerator(rescale=1./255)
接著,flow_from_directory 可以用save_to_dir把增強數據的訓練資料存起來。存到路徑資料夾'/Users/lido/Downloads/cats_and_dogs_small/train/train_gen'。
train_generator = train_datagen.flow_from_directory(train_dir, target_size=(150, 150), batch_size=20, save_to_dir='/Users/lido/Downloads/cats_and_dogs_small/train/train_gen', save_prefix='train_', save_format='png', class_mode='binary') validation_generator = test_datagen.flow_from_directory(validation_dir, target_size=(150, 150), batch_size=20, class_mode='binary')
執行訓練後,會產生數據增強後的圖片,可以去資料夾撈出來看看。(以下見部分圖片)
如果我們使用這種數據增強來訓練一個新網絡,這些輸入都來自於少量的原始圖像做數據增強的變換,所以網絡不會兩次看到同樣的輸入,但網絡看到的輸入仍然是高度相關的,因為我們只能混合現有信息,無法生成新的信息。因此,這種方法可能不足以完全消除過擬合。
但在處理圖像辨識時,不失為一個降低過擬合的好方法。
沒有留言:
張貼留言