Pytorch實作系列 — SENet and its variants (1)

mz bai
7 min readMay 6, 2024

--

Squeeze and excitation是由 Hu et al.(2017, 中國科學院)在 Squeeze-and-Excitation Networks提出,特色在於對卷積後的特徵圖做特徵篩選,且模組隨插隨拔(plug-in-and-play)的性質更可廣泛用於大量現存神經網路。

對ResNeXt不熟悉,可參考

網路概念

Hu et al.(2017) 在 Squeeze-and-Excitation Networks 提出 Squeeze and Excitation(SE)的結構,屬於spatial attention mechanism(SAM),作為一種特徵選擇的方法,調節不同通道的強度。後續該方法也受到大量現代化CNN的廣泛採用。

squeeze and excitation from paper[1709.01507]

Li et al.(2019) 在 Selective Kernel Networks 提出,認為神經科學的實證已有關於感受野的大小應會受刺激物影響而改變,而卷積神經網路(CNN)仍僅擁有固定的感受野大小,而提出SK來形塑這個想法,使用不同kernel大小的特徵圖作SE後ensemble。

selective kernel from paper[1903.06586]

Zhang et al.(2020)在 ResNeSt: Split-Attention Networks 進一步組合前提兩種結構,提出ResNeSt, 如同ResNeXt整合Inception的方法,ResNeSt也同樣以group convolution整合Selective kernl,在ResNeXt的bottleneck區塊使用SE模塊以及SK模塊。

ResNeSt block from paper[2004.08955]

網路結構

Hu et al. 在論文中提出 SE-Resnet50和SE-ResneXt50的結構,其中一個實用小技巧是將SE中間傳遞的維度降為16分之一,可用來減少計算量。

se-resnet50 & se-resnext50 from paper[1709.01507]

ResNeSt的論文內有提到比較高效率的實現,結合不同層的運算,可用較少的程式碼達到分支的效果。

ResNest block from paper[2004.08955]

資料集

ResNet的改進(SE-ResNet50)沿用Animal10來比較。

ResNext的改進(SE-ResNeXt50)沿用EuroSAT來比較,但由於該資料集較簡單,SkNet和ResNeSt改用Animal10來比較。

評估

SENet雖然增加10%參數量,但表現不錯。而SkNet在效果上有增加,只是不明顯,運算負擔也較大。

SE-ResNet50的訓練準確率是87.7%。

SE-ResNet50 confusion matrix(training)

而在SE-ResNeXt50也有少量提升,主要是因為原先的ResNeXt50已經可以處理EuroSAT的資料,所以變化不大。

SE-ResNeXt50 confusion matrix(training)

SkNet會有過擬合的現象,因為ResNext50在EuroSAT上的表現已經不能再用更多參數提高了,論文有提到如果遇到這類狀況須用較小的卷積核處理,所以我們改用Animal10評估,訓練準確率是89.5%。

SkNet50 confusion matrix(training)

ResNeSt50的訓練準確率可達83.8%。

ResNeSt50 confusion matrix(training)

筆記

雖然ResNest的概念圖有多個分支跟分組,但在官方程式碼的實現中,僅使用兩個分支且不分組。而我們的實作也少了一小部份參數。

實作

參考

--

--

mz bai
mz bai

Written by mz bai

Math is math, math is universal Code is code, code is horrifying unique.

No responses yet