2019年1月19日 星期六

深度學習 - Keras - ImageDataGenerator

深度學習 - 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')

執行訓練後,會產生數據增強後的圖片,可以去資料夾撈出來看看。(以下見部分圖片)

如果我們使用這種數據增強來訓練一個新網絡,這些輸入都來自於少量的原始圖像做數據增強的變換,所以網絡不會兩次看到同樣的輸入,但網絡看到的輸入仍然是高度相關的,因為我們只能混合現有信息,無法生成新的信息。因此,這種方法可能不足以完全消除過擬合。
但在處理圖像辨識時,不失為一個降低過擬合的好方法。


沒有留言:

張貼留言