今日任務概覽:
今天主要是利用Autogluon框架完成圖像分類任務。下面主要總結其中涉及的一些要點。
一、模型介紹:
ResNet簡介:
ResNet(Residual Networks 殘差網絡),2015年何凱明團隊提出,在2015年的ILSVRC(ImageNet)的classification、detection、localization以及COCO的detection、segmentation均第一。ResNet性能好很多,檢測和分割任務的特征表達網絡結構等,一般都會用它來做改造,識別性能和訓練速度都有提升。最高152層。論文連接作者源代碼
今天主要用到 ResNet50_v1b 和 ResNet18_v1b 兩個模型,網絡層數分別為50層、18層。
圖1 ResNet_V1版本網絡結構
ResNet設計思想:
- 引入殘差網絡:差分放大器,使映射F(x)對輸出的變化更敏感
- 改善了深層網絡難訓練問題:SGD優化難(梯度消失或爆炸,梯度不敏感)而導致性能退化。
- 網絡層次可以更深,這樣網絡表達的能力更好了,另一方面訓練速度也更快了。
- 降低了數據中信息的冗余度。
- 因為它對非冗余信息采用線性激活獲得恆等映射,對冗余信息(identity之外的部分)采用非線性激活(ReLU)提取出的有用信息即是殘差。
- 由於identity之外的其余部分的信息冗余度較高,因此在對其使用ReLU進行非線性激活時,丟失的有用信息也會較少,ReLU層輸出為0的可能性也會較低。這就降低了在反向傳播時ReLU的梯度消失的概率,從而便於網絡的加深,以大大地發揮深度網絡的潛能。
- 如果一個信息可以完整地流過一個非線性激活層,則這個非線性激活層對於這個信息而言,相當於僅僅作了一個線性激活。
- 解決由非線性激活導致的反向傳播梯度消失的竅門,就是要提高進行非線性激活的信息的冗余度。
- 特征復用(直接用了上層特征)能加快模型的學習速度,因為參數的優化而收斂得快(從identity的基礎上直接學習殘差,總比從頭學習全部來得快)
- 殘差比較小,殘差學習會更容易,因為有恆等映射性能至少不會下降,梯度不會消失;殘差映射還會學習新的特征,性能更好。
ResNet網絡結構:
設計了18、34、50、101、152層,用的都是11和33的小卷積核。普通電腦跑34就可以了,Cifar 100能到75%左右。
ResNet構成快
在殘差塊中,當輸入為 x 時其原來學習到的原始學習特征是H(x)=F(x)+x,但現在我們希望其可以學習到殘差F(x)=H(x)-x,這是因為殘差學習相比原始特征的直接學習更小更容易。
殘差作用的驗證
ResNet的實驗:
Minist數據集圖像比較小,用VGG可能就跑不了,圖像經過多個卷積和pooling后可能就變成1*1了,再做pooling就會報錯。可以把原始圖像resize到更大尺寸來做。
Cifar 10數據集,10個類別的分類,要生成lmdb格式,也可以直接用ImageData數據層直接讀取圖片。普通電腦一般跑不了50 101 152。
注意訓練時一般對圖像有個減均值的操作,圖像在每個通道上的像素[0,255]范圍減去128或均值。有時還把像素值變大0~1之間。這樣收斂更快,性能提升不太大。
二、圖像分類任務:
詳細任務官方指南
Autogluon任務
三、今日總結:
配置好服務器后,運行起來流暢無比。整體說使用Autogluon完成實驗整體比較容易,但弄懂背后相關的步驟原理還是比較費勁。