跳轉到

4.1 CNN Image Classification

範例程式:Open In Colab

使用 TensorFlow/Keras 從零建立 CNN 影像分類模型,示範 Conv2D、MaxPooling、Dropout 與 softmax 分類流程。這篇的重點是先看懂 CNN 如何接收圖片資料、抽取局部特徵並輸出多類別分類結果。

1. 學習目標

CNN image classification 用來判斷圖片屬於哪一個類別,例如服飾分類、瑕疵分類、零件分類或醫療影像輔助分類。這篇先使用 Fashion-MNIST,讓讀者不需要準備圖片資料即可完整跑完流程。

2. 資料格式長什麼樣子?

Fashion-MNIST 每張圖片是 28x28 灰階影像,共 10 個類別。CNN 的輸入 shape 需要保留高度、寬度與 channel,因此資料會整理成 (28, 28, 1)

3. 模型架構

CNN 常見基本結構是:

Conv2D -> MaxPooling2D -> Conv2D -> MaxPooling2D -> Flatten -> Dense -> Softmax

卷積層負責擷取局部特徵,pooling 層降低空間尺寸,最後 Dense layer 根據抽出的特徵做分類。

4. 評估模型

影像分類除了 accuracy,也建議觀察 confusion matrix 與錯誤案例。錯誤案例通常能幫助我們理解哪些類別外觀相似,或資料本身是否標註不清。

5. 如何套用自己的資料?

若要改成自己的圖片資料,通常會改用 image_dataset_from_directory 載入資料夾。圖片大小會影響輸入 shape,灰階或彩色圖片會影響 channel 數,類別數則會影響最後一層神經元數量。多類別分類通常使用 softmax 搭配 sparse_categorical_crossentropycategorical_crossentropy

6. 小結

CNN 是影像分類的基本架構。理解 Conv2D 與 pooling 後,就能延伸到資料增強、遷移學習與 fine-tuning。