Res2Net:新的深度學習多尺度結構,提升物體檢測立竿見影

AIBigbull2050發表於2019-12-08
2019-12-04 21:12:10

作者:Less Wright

編譯:ronghuaiyang

導讀

只要把ResNet中的block塊換成Res2Net的block塊,其他什麼都不用動,物體檢測立刻提升2個點。

正如谷歌Brain的EfficientNe論文所顯示的,對於CNN架構的各個方面(寬度、深度、解析度)的擴充套件,投資的回報正在迅速減少。

有一篇新的論文,來自Gao,Cheng,Zhao等人,Res2Net: a new multi-scale backbone architecture,展示了在一個給定塊中做多尺度,而不是通常的一層一層的做多尺度,是一個未知的領域,可以對物體檢測和分割帶來額外的回報。

大多數架構都是在一層一層的基礎上使用了多尺度。他們的創新之處是在一個給定的殘差塊中使用分層的、層疊的特徵組(稱為“scale”),取代了通用的單個3x3卷積核。

Res2Net:新的深度學習多尺度結構,提升物體檢測立竿見影

ResNet50中有和沒有新的Res2Net塊的Grad-CAM啟用(或熱圖)比較。

為此,他們重建了普通的ResNet架構的bottleneck block,用“4scale-(3x3)”殘差分層架構取代了標準的1-3-1的CNN佈局。因此,這個更改構建了“Res2Net”。這樣,中間的主卷積從單分支變為多分支。

用圖來說明一下:

Res2Net:新的深度學習多尺度結構,提升物體檢測立竿見影

這裡的概念是透過增加塊內的感受野,而不是一層一層地捕獲影像中更細粒度的不同級別的尺度,從而提高CNN檢測和管理影像中物體的能力。

作者將Res2Net塊內的特徵組數量稱為“scale dimension”。因此上面的程式碼塊是scale為4的Res2Net程式碼塊。

然後,可以將這些Res2Net模組插入標準ResNet或ResNeXt模組中,從而提高它們的粒度。

Res2Net著重於分割型別的任務,其中改進的物體識別能力發揮了作用。下面是影像語義分割的比較:

Res2Net:新的深度學習多尺度結構,提升物體檢測立竿見影

Res2Net塊的粒度改進了分割

正如上面所看到的,在bottleneck中引入scale維度可以幫助CNN更好地勾勒出影像中感興趣的東西,從而提高整體的準確性。

Res2Net:新的深度學習多尺度結構,提升物體檢測立竿見影

對ImageNet的改進——唯一的改變是在特定的架構中切換到Res2Net塊

Res2Net:新的深度學習多尺度結構,提升物體檢測立竿見影

Res2Net的github在這裡:

把ResNet更新為Res2Net = Res2NetPlus

然而,我發現Res2Net的官方實現在很多方面都是在一個較老的ResNet風格中實現的。因此,我從github@frgfm(基於github @gasvn)獲取Res2Net實現,並將其修改為:

1、使用Mish而不是ReLU進行啟用。

2 、將ResNet的主幹更改為一個前沿的3@3x3堆疊的主幹(stride 2,stride 1,stride 1),而不是舊的單一的7x7核。

3 、反轉BN->啟用的順序,變成啟用->BN。這是基於我們對FastAI研究的發現,並得到了論文:Rethinking the usage of Batchnorm…的支援:

“我們不應該把Batch Normalization放在ReLU之前,因為ReLU的非負響應會使權值層更新的方式不太理想……”。

PyTorch程式碼:

用法很簡單:

Res2Net:新的深度學習多尺度結構,提升物體檢測立竿見影

在FastAI框架中使用Res2Net Plus(這裡建立了一個4尺度、26寬度的Res2Net50)

Res2NetPlus的實際應用

在諮詢工作中,我利用衛星影像構建了一個太陽能電池板探測器,我從零開始構建了一個Res2NetPlus50,然後將其與標準Imagenet預訓練的進行了遷移學習的ResNet50進行了比較。我發現Res2Net50的準確率更高(+5%),訓練也更穩定。

該模型最終於上週投入生產,驗證資料的準確率為97.8%。

初步生產結果與訓練結果一致:

Res2Net:新的深度學習多尺度結構,提升物體檢測立竿見影

缺點:

雖然Res2Net的計算複雜度與等效的ResNet相似,但它的執行速度仍然比對應的ResNet慢(20%似乎是平均水平)。

此外,對於FastAI排行榜資料集之類的分類任務,Res2Net在驗證和訓練損失上創造了記錄(即正確時更正確,錯誤時更少錯誤),但並不是最終的絕對準確性的記錄。

這是一個我還沒有弄明白如何改正的問題,只有先假設一些分類任務可能是不是非常依賴於完整的物體的區分。

因此,Res2Net的最佳用法似乎集中在物體識別和分割型別的任務上。

小技巧 - Res2Net喜歡高階資料增強,比如mix-up、CutMix等。你可以看到使用這些工具時驗證損失會急劇下降,因此強烈建議使用Res2Net進行大量的資料增強。

連結:

官方的Res2Net倉庫:

Res2NetPlus結構:

英文原文:






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2667435/,如需轉載,請註明出處,否則將追究法律責任。

相關文章