iT邦幫忙

2021 iThome 鐵人賽

DAY 22
1
AI & Data

AI Facial Expression Recognition: Data, Model, Application系列 第 22

[Day 22] 卷積類明星模型大亂鬥 ! EFN特別版

1. 回顧

下列是過去十天我用各種技巧訓練的模型,
只要該技巧對 val acc 或 val loss 有勝過 EFN_base,
那我就會將其納入最後的模型實驗。

1.1 驗證集準確率比較

恭喜三種不同的learning rate decay和dropout入圍最終實驗!
0

1.2 驗證集損失值比較

恭喜nStepsToAll、nStepsToBlock7、class weight、image augmentation入圍最終實驗!
1


2. 燃燒吧!我的GPU!

/images/emoticon/emoticon18.gif/images/emoticon/emoticon18.gif/images/emoticon/emoticon18.gif/images/emoticon/emoticon18.gif
好了,那最後我到底做了哪些參數組合呢?

參數 參數空間 長度
LR decay step decay, poly decay ,exp decay,RLOP, None 5
Optimizer SGD, Adam 2
unfreeze last n layers 6, 19, 78, 1000(all) 4
class weights balance, origin 2
epochs 100 1
batch size 128 1

5*2*4*2*1*1 = 80
難道我真的要訓練出80個模型嗎?
其實也不用,
因為我在前幾個模型訓練出來就發現:

  1. 只有unfreeze到最後78層的訓練效果不好,我果斷地把unfreeze last n layers通通設為1000(剩下20個組合)

  2. 然後我發現SGD不管搭配哪種decay都收斂很慢,100輪內絕對贏不了Adam (剩下10個組合)
    接下來基本就是學習率衰減類別權重的比較了。

  • SGD被ADAM打敗+unfreeze 78 layers表現最好只有val acc = 0.6000,輸給EFN_base
    https://ithelp.ithome.com.tw/upload/images/20211001/20141294k8ySfokMRX.jpg
  1. 我學習率遞減的方式是前50輪每25輪循環衰減學習率,後50輪則不循環
  • 學習率遞減圖(Y軸經過對數處理)
    https://ithelp.ithome.com.tw/upload/images/20211001/201412941NaSekueqX.jpg

3. 最後的最後

最後勝出的參數組合如下:

參數 參數空間
LR decay poly decay
Optimizer Adam
unfreeze last n layers 1000(all)
class weights balance
epochs 100
batch size 128

3.1 在驗證集上的表現

https://ithelp.ithome.com.tw/upload/images/20211001/20141294ZxSXgnstBa.jpg

3.2 在8年前的FER2013比賽中我能排第幾?

我最終的準確率是0.6500,
排在第5名的位置,
剛好晉升Gold階級的最後一名 :D
https://ithelp.ithome.com.tw/upload/images/20210930/20141294dtdXxm7qPW.jpg

4. 結語

我在網路上看到有人修改VGG的架構,
搭配上cosine decay和SGD Nesterov,
用二階段訓練了300輪+50輪,
最後達到73.2%準確率。
看來我還有一段很長的路要走...

現在回想起來我還有很多地方可以修改,

  1. Adam其實不是一個擅長馬拉松的優化器,現在研究已經發現SGD雖然收斂慢,但是最後收斂效果比較好。
  2. 因為電腦的顯示卡等級太低,訓練一個模型要花3小時,導致我只能設定epochs = 100
  3. 因為時間因素,二階段式訓練也被我放棄了。
  4. Adam家族有很多變形,像是LookAhead、Ranger都是可以嘗試的。
  5. 我還想修改EFN的架構...

但是實務上根本不會有這麼多時間給你開發演算法QQ
就像這個30天的專案一樣,
到底最後不到10天能不能做出App呢?
敬請期待!


上一篇
[Day 21] 媽! Keras 和 TensorFlow 在亂存模型啦! ( TFLite 輕量模型)
下一篇
[Day 23] Android Studio 七日隕石開發:安裝與創建第一個專案 (上)
系列文
AI Facial Expression Recognition: Data, Model, Application30

尚未有邦友留言

立即登入留言