日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bag of Tricks for Image Classification

發布時間:2025/5/22 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bag of Tricks for Image Classification 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA==&mid=2247486778&idx=2&sn=23582d015eff1d0d5ba0c6f71ca86296&chksm=ec1fe0c3db6869d588af077e6041377193cee8c8eeb069f283bdf6b9a2613bb7dc6b4c7b365a&mpshare=1&scene=1&srcid=0318W4ZKu3BiCVeuKx6lLMrc#rd

?

一、加快模型訓練的部分(采用更大的batch和采用16位浮點型數據進行訓練)

1. 增大學習率,因為更大的batch size 意味著基于每個batch數據計算得到的梯度更加接近整個數據集,因此當更新方向更加準確后,邁的步子也可以更大,一般來說,batch size為原來的多少倍,初始的學習率也是原來的多少倍。

2.用一個小的學習率先訓練幾個epoch,因為網絡的參數是隨機初始化的,加入一開始較大的學習率容易出現數值不穩定,這是使用warmup的原因。作者在實現warmup的過程中采用線性增加的策略,舉例而言,假設warmup階段的初始學習率是0,warmup階段共需要訓練m個batch的數據(實現中m個batch共5個epoch),假設訓練階段的初始學習率是L,那么在batch i的學習率就設置為i*L/m。

3. 每個殘差塊的最后一個BN層的gama參數初始化為0,我們知道BN層的γ、β參數是用來對標準化后的輸入做線性變換的,也就是γx^+β,一般γ參數都會初始化為1,作者認為初始化為0更有利于模型的訓練。

4. 不對bias參數執行weight decay操作,weight decay 主要的作用就是通過對網絡層的參數(包括weight 和bias)做約束(L2正則化會使得網絡層的參數更加平滑)達到減少模型過擬合的效果。

?

二、優化網絡結構部分

resnet50結構:

關于residual block的改進見下圖(包括3點)

1. resNet-B

?改進部分就是將stage中做downsample的residual block的downsample操作從第一個11卷積層換成第二個33卷積層,如果downsample操作放在stride為2的11卷積層,那么就會丟失較多特征信息(默認是縮減為1/4),可以理解為有3/4的特征點都沒有參與計算,而將downsample操作放在33卷積層則能夠減少這種損失,因為即便stride設置為2,但是卷積核尺寸夠大,因此可以覆蓋特征圖上幾乎所有的位置。

2.resnet-C

?改進部分就是將Figure1中input stem部分的77卷積層用3個33卷積層替換。這部分借鑒了Inception v2的思想,主要的考慮是計算量,畢竟大尺寸卷積核帶來的計算量要比小尺寸卷積核多不少,不過讀者如果仔細計算下會發現ResNet-C中3個33卷積層的計算量并不比原來的少,這也是Table5中ResNet-C的FLOPs反而增加的原因。

3. resNet-D

?改進部分是將stage部分做downsample的residual block的支路從stride為2的11卷積層換成stride為1的卷積層,并在前面添加一個池化層用來做downsample。這部分我個人理解是雖然池化層也會丟失信息,但至少是經過選擇(比如這里是均值操作)后再丟失冗余信息,相比stride設置為2的1*1卷積層要好一些。

三、模型訓練調優部分

這部分作者提到了4個調優技巧:

1、學習率衰減策略采用cosine函數,這部分的實驗結果對比可以參考Figure3,其中(a)是cosine decay和step decay的示意圖,step decay是目前比較常用的學習率衰減方式,表示訓練到指定epoch時才衰減學習率。(b)是2種學習率衰減策略在效果上的對比。

?

?

?

2、采用label smoothing,這部分是將原來常用的one-hot類型標簽做軟化,這樣在計算損失值時能夠在一定程度上減少過擬合。從交叉熵損失函數可以看出,只有真實標簽對應的類別概率才會對損失值計算有所幫助,因此label smoothing相當于減少真實標簽的類別概率在計算損失值時的權重,同時增加其他類別的預測概率在最終損失函數中的權重。這樣真實類別概率和其他類別的概率均值之間的gap(倍數)就會下降一些,如下圖所示。

?

?

?

?

3、知識蒸餾(knowledge distillation),這部分其實是模型加速壓縮領域的一個重要分支,表示用一個效果更好的teacher model訓練student model,使得student model在模型結構不改變的情況下提升效果。作者采用ResNet-152作為teacher model,用ResNet-50作為student model,代碼上通過在ResNet網絡后添加一個蒸餾損失函數實現,這個損失函數用來評價teacher model輸出和student model輸出的差異,因此整體的損失函數原損失函數和蒸餾損失函數的結合:

?

?

?

其中p表示真實標簽,z表示student model的全連接層輸出,r表示teacher model的全連接層輸出,T是超參數,用來平滑softmax函數的輸出。

?

4、引入mixup,mixup其實也是一種數據增強方式,假如采用mixup訓練方式,那么每次讀取2張輸入圖像,假設用(xi,yi)和(xj,yj)表示,那么通過下面這兩個式子就可以合成得到一張新的圖像(x,y),然后用這張新圖像進行訓練,需要注意的是采用這種方式訓練模型時要訓更多epoch。式子中的λ是一個超參數,用來調節合成的比重,取值范圍是[0,1]。

?

?

最終這4個調優技巧的實驗結果對比如Table6所示。

轉載于:https://www.cnblogs.com/ahuzcl/p/11073352.html

總結

以上是生活随笔為你收集整理的Bag of Tricks for Image Classification的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。