iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0
AI Engineering

從 Pixel 到 AI:30 天影像辨識入門之路系列 第 14 篇

Day14 Pooling 為什麼要把圖片越變越小?

  • 分享至 

  • xImage
  •  

上一篇我們認識了 CNN 最重要的核心之一:Convolution
我們知道 Kernel 會在圖片上移動,對不同的局部區域進行計算,最後產生新的 Feature Map
但這裡又出現了一個問題:如果 Feature Map 一直維持很大的尺寸,隨著 CNN 越來越深,需要處理的資料量不就也會越來越多嗎?

因此 CNN 中經常會在 Convolution 後加入另一個操作Pooling(池化)


一、Pooling 是什麼?

Pooling 最主要的作用,就是將 Feature Map 的空間尺寸縮小

例如原本有一張8 × 8的 Feature Map,經過 Pooling 之後可能變成4 × 4,但 Pooling 並不是單純把資料隨便刪掉,而是會從一小塊區域中,利用特定方式選出一個代表值

最常見的兩種方法就是 MaxPooling 和 AveragePooling


二、MaxPooling:留下最大的值

假設現在 Feature Map 中有一個 2 × 2 的區域

3   1
0   2

如果使用 MaxPooling,做法非常直接,就是找出這個區域裡最大的值
這四個數字中:3、1、0、2 最大的是 3,所以經過 MaxPooling後只留下 3,接著再移動到下一個區域,繼續做一樣的事情


三、AveragePooling:留下平均值

AveragePooling的做法是計算這個區域的平均值,同樣使用:

3   1
0   2

計算:

(3 + 1 + 0 + 2) ÷ 4 = 1.5

因此兩種方法最大的差別就是

Pooling 做法
MaxPooling 取區域中的最大值
AveragePooling 取區域中的平均值

在 CNN 中,MaxPooling 是很常見的選擇,因為它可以保留區域中較強的特徵反,AveragePooling 則會將整個區域的資訊平均化


四、為什麼要把 Feature Map 變小?

看到這裡可能會覺得好不容易透過 Convolution 得到 Feature Map,為什麼又要把它縮小?

第一個原因是減少計算量,假設原本 Feature Map 是 64 × 64,經過 2 × 2 Pooling,並且每次移動 2 格後,可能變成 32 × 32,原本有 4096 個位置,現在只剩下 1024 個位置,這就可以讓後面的 CNN Layer 需要處理的資料量也跟著下降


五、不是越小越好

不過 Pooling 也不是做得越多越好,因為尺寸縮小的同時,也代表部分細節會被捨棄,如果一直 Pooling,雖然資料量越來越少,但圖片原本的細節和位置資訊也會跟著減少,尤其我們現在處理的是皮膚病灶圖片,一些細微的邊界、紋理或局部變化,都可能是模型學習時有用的資訊

所以 Pooling 的目的並不是圖片越小越好,而是希望在保留有用特徵與降低資料量之間取得平衡


六、Pooling 和 Feature Extraction 有什麼關係?

前面我們一直提到 Feature Extraction(特徵提取),CNN 的前半段其實可以先簡單理解成不斷進行:

圖片⮕Convolution⮕Feature Map⮕Pooling⮕Convolution⮕Feature Map⮕Pooling⮕...

其中 Convolution 負責從局部區域學習不同的特徵,而 Pooling 則進一步壓縮 Feature Map 的空間尺寸

隨著 Layer 越來越深,模型所使用的資訊也會從比較局部、簡單的模式,逐漸組合成更複雜的特徵表示
這整個過程就可以視為 CNN 的 Feature Extraction


七、在 TensorFlow 中怎麼寫?

如果要使用 MaxPooling,其實程式碼非常簡單:

tf.keras.layers.MaxPooling2D(pool_size=(2, 2))
pool_size=(2, 2) 

代表每次觀察一個2 × 2的區域

AveragePooling 則可以寫成:

tf.keras.layers.AveragePooling2D(pool_size=(2, 2))

所以之後真正建立 CNN 時,就可能看到這樣的組合:

tf.keras.layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
tf.keras.layers.MaxPooling2D(pool_size=(2, 2))

上一篇
Day13 CNN 到底看到了什麼?Convolution、Kernel 與 Feature Map
下一篇
Day15 第一次完整訓練 CNN!建立我們的 Baseline Model
系列文
從 Pixel 到 AI:30 天影像辨識入門之路 共 15 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言