4.4 Transfer Learning
使用 MobileNetV2 預訓練模型建立影像分類器,示範 feature extractor、GlobalAveragePooling 與新分類頭。這篇接續 flower_photos 資料集,目標是建立一個比從零訓練 CNN 更實用的小型影像分類 baseline。
1. 學習目標
當自己的圖片資料不多時,從零訓練 CNN 通常效果有限。Transfer learning 會使用已在大型資料集上訓練過的模型當作特徵擷取器,再接上新的分類頭。
2. 核心流程
- 載入預訓練 backbone,例如 MobileNetV2。
- 凍結 backbone 權重。
- 接上 GlobalAveragePooling 與 Dense 分類頭。
- 只訓練新的分類頭。
3. 為什麼有效?
預訓練模型已經學過邊緣、紋理、形狀等通用影像特徵。即使新資料集不同,這些低階與中階特徵仍常有幫助。
4. 實作流程
Notebook 使用 flower_photos 資料集,將圖片 resize 到 MobileNetV2 需要的輸入尺寸,載入 include_top=False 的 MobileNetV2 作為 backbone,凍結 backbone 後接上 GlobalAveragePooling、Dropout 與新的 softmax 分類頭。
5. 如何套用自己的資料?
換成自己的資料時,通常只需要替換圖片資料夾、調整 img_size、確認類別數,並保留對應 backbone 的 preprocessing function。若使用 MobileNetV2,就要使用 tf.keras.applications.mobilenet_v2.preprocess_input;若換成 EfficientNet、ResNet 或其他 backbone,前處理方式也要一起替換。
6. 小結
Transfer learning 是小型影像資料集最實用的 baseline,通常比從零訓練 CNN 更穩定。