4.3 Data Augmentation
使用 Keras preprocessing layers 建立資料增強流程,讓 CNN 在圖片平移、翻轉、旋轉與縮放時更穩定。這篇接續 flower_photos 影像分類範例,示範如何把 augmentation layer 放進模型,讓訓練資料在每個 epoch 產生不同變化。
1. 學習目標
影像資料量不足時,CNN 很容易記住訓練圖片細節而過擬合。Data augmentation 會在訓練時隨機產生圖片變化,讓模型學到更穩定的特徵。
2. 常見增強方式
- RandomFlip
- RandomRotation
- RandomZoom
- RandomTranslation
- RandomContrast
資料增強只應用於訓練資料,不應該套用到驗證與測試資料。
3. Keras 寫法
data_augmentation = tf.keras.Sequential([
tf.keras.layers.RandomFlip('horizontal'),
tf.keras.layers.RandomRotation(0.1),
tf.keras.layers.RandomZoom(0.1),
])
這些 layer 可以直接放進模型,訓練時啟用,推論時自動關閉隨機行為。
4. 實作流程
Notebook 使用 flower_photos 資料集,先載入 train/validation dataset,再建立 RandomFlip、RandomRotation、RandomZoom 與 RandomContrast。接著會視覺化同一張圖片經過 augmentation 後的多種結果,最後把 augmentation 放進 CNN 模型訓練。
5. 如何套用自己的資料?
套用到自己的圖片時,augmentation 要符合影像語意。例如花朵、零件或一般物體可使用水平翻轉與小角度旋轉;但醫療影像、文字圖片或有固定方向的瑕疵照片,不一定適合任意翻轉。原則是只加入「不會改變標籤意義」的變化。
6. 小結
Data augmentation 是影像分類最常用的正則化技巧之一,特別適合小型圖片資料集。