iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0
AI & Data

花甲老頭學 AI系列 第 13

[鐵人12:Day 13] EfficientNet 5:驗證及測試

  • 分享至 

  • xImage
  •  

驗證複合式模型縮放

為了驗證複合式模型縮放和它的 α, β, γ 參數值是否有效,作者將 MobileNets (MobileNetV1 及 MobileNetV2)和 ResNet 分別用一維度放大及「複合式模型縮放」來放大它們,並比較放大後的模型效能,結果看起來,複合式模型縮放這個方法是有效的。
https://ithelp.ithome.com.tw/upload/images/20200926/20129616C1AATpuDK5.png

在上表中,作者並沒有標示 MobileNetV2 和 RestNet-50 兩者的複合縮放尺度 (compound scale) ,不過從 FLOPS 的增加比例上來看,它們應該是和 MobileNetV1 使用相同的參數 (d=1.4, w=1.2, r=1.3)。

ImageNet 測試結果

作者將 EfficientNet 系列模型放在 ImageNet 上,利用下列的方式訓練各模型:

  • Optimizer: RMSProp with decay 0.9 and momentum 0.9
  • Batch Norm Momentum: 0.99
  • Weight Decay: 1e-5
  • Learning Rate: Initial 0.256, decays by 0.97 every 2.4 epochs.
  • Activation: SiLU (Swish-1)
  • AutoAugment and stochastic depth with survival probability 0.8
  • Dropout (B0: 0.2, B7:0.5, linear increasement)

訓練時,作者由訓練資料集 (Training Set) 中保留了 25K images 作為 Early Stopping 的檢驗資料集 (Validation Set),並且在 Early Stop 時用 ImageNet 既有的檢驗資料集來計算檢驗精準度 (Validation Accuracy)。老頭並不了解作者為何要這樣做,需要深入的探討。

精確度測試的結果如下:
https://ithelp.ithome.com.tw/upload/images/20200926/20129616zbKb0Vj5uP.png

在上面的表格中,作者將 EfficientNet 和精確度類似的其他模型相比較,可以看出,在同一精確度水準之下,EfficientNet 有著更小的模型規模 (#Params) 也有著更少的運算需求 (#FLOPS)。

作者也做了模型推理 (Inference) 的效率分析,成果同樣令人驚豔,相較於精確度類似的模型 (ResNet-152 and GPipe),EfficientNet較之快了 5.7 和 6.1 倍!
https://ithelp.ithome.com.tw/upload/images/20200926/20129616uRMco9gpt2.png

在遷移學習上,EfficientNet 的表現也非常好,細節就請大家直接去查詢論文。

深入討論

為什麼「複合式模型縮放」的方法相較於單一維度縮放,會有更好的效能?作者利用了 Class Activation Map (CAM,註一) 來比較它們的差異:
https://ithelp.ithome.com.tw/upload/images/20200926/20129616iRdgSjcm6t.png

最右邊那一列是複合式縮放的 CAM 圖,很明顯的可以看到,複合式縮放的模型比較能將焦點集中在真正能夠判斷影像類別的區域上,並且能夠分辨出影像上各別的物體。

EfficientNet 的介紹就在此告一段落,經過幾天的介紹,希望大家對它能有更清楚的認識。

(註一:參考
Zhou, B., Khosla, A., Lapedriza, A., Oliva, A., and Torralba, A. Learning deep features for discriminative localization. CVPR, pp. 2921–2929, 2016. )


上一篇
[鐵人12:Day 12] EfficientNet 4:EfficientNet 之結構
下一篇
[鐵人12:Day 14] GPT-3 (1):AI 的大躍進!
系列文
花甲老頭學 AI30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Sleep
iT邦新手 5 級 ‧ 2021-04-12 13:28:49

不好意思,我想請問一下,EfficientNet-B0演算法是以CNN進行嗎

看更多先前的回應...收起先前的回應...
老頭 iT邦新手 4 級 ‧ 2021-04-15 19:42:28 檢舉

是的,它是屬於CNN,結構可以參考 https://ithelp.ithome.com.tw/articles/10244325

Sleep iT邦新手 5 級 ‧ 2021-04-17 13:59:50 檢舉

謝謝老頭,那我想在請問efficientnet-bO的open source code 有嗎

老頭 iT邦新手 4 級 ‧ 2021-04-19 09:41:53 檢舉

從應用的角度來看, tensorflow 和 pytorch 都已經提供 API.
1.tensorflow/keras:
https://keras.io/api/applications/efficientnet/#efficientnetb0-function

2.pytorch:
https://www.kaggle.com/ateplyuk/pytorch-efficientnet

需要實作的 sorce codes 就得自己去撈出來.

Sleep iT邦新手 5 級 ‧ 2021-04-24 17:11:06 檢舉

謝謝老頭,那請問b0他是用哪個分類演算法進行分類?

老頭 iT邦新手 4 級 ‧ 2021-05-05 09:02:26 檢舉

不太清楚你的問題,如果你是問上面提到的 B0 API 是用那一個 dataset 訓練出來的? 那麼答案是它們都是未經訓練的. 老頭用自己的 dataset 來訓練它們的.

Sleep iT邦新手 5 級 ‧ 2021-05-13 11:54:25 檢舉

謝謝老頭,我想請問老頭一下,EfficientNet-B0架構有resolution(Hi*Wi),上面Hi和Wi會有大於倒著的符號。如圖
https://ithelp.ithome.com.tw/upload/images/20210513/20126679QzbEVlMIKq.jpg

我要留言

立即登入留言