DO-Conv 涨点模块
文章目錄
- 0.動機
- 1.傳統的卷積和Depthwise卷積
- 2.Depthwise over-parameterized卷積(DO-Conv)
- 3.DO-DConv和DO-GConv
- 4.在視覺任務中使用Depthwise over-parameterized卷積
- 5.總結
DO-Conv無痛漲點:使用over-parameterized卷積層提高CNN性能
DO-Conv: Depthwise Over-parameterized Convolutional Layer
論文: https://arxiv.org/pdf/2006.12030.pdf
代碼: https://github.com/yangyanli/DO-Conv
0.動機
CNN應用于計算機視覺領域的很多任務中,增加CNN中線性層—非線性層的數量,能夠增加網絡的表達能力,從而提高網絡的性能。
然而,很少有人考慮只增加線性層,只增加線性層會造成過擬合現象,因為多個連續的線性層可以被一個線性層替代,而使用一個線性層參數更少。
在這篇文章中,作者通過在一個普通的卷積層中加入額外的depthwise卷積操作,構成一個over-parameterized的卷積層,并將其命名為DO-Conv,通過實驗證明,使用DO-Conv不僅能夠加速網絡的訓練過程,還能在多種計算機視覺任務中取得比使用傳統卷積層更好的結果。
在推理時,DO-Conv可以轉換為傳統的卷積操作,因此將一個網絡中的傳統卷積替換為DO-Conv并不會增加計算需求。
1.傳統的卷積和Depthwise卷積
1.1 傳統的卷積
給定輸入feature map,傳統的卷積操作使用滑動窗口的形式,將卷積核作用到feature map的窗口區域中。
假設feature map的通道數為,卷積核作用的窗口尺寸為,則卷積核作用的窗口可以表示為一個3維張量,記作,為便于后續說明,也可以將其表示為2維張量,即。
假設這個卷積層的輸出feature map通道數為,一般使用4維張量表示卷積核,但是也可以用3維張量表示卷積核,記作。使用表示卷積操作,則可以表示如下:
上式中只是表示了輸出feature map的1個通道的計算過程。上述表示以及計算過程如下圖所示:
在上圖中,,,。第一行的個元素與做點積運算,完成輸出feature map第一個通道的計算,即的第一行。
1.2 Depthwise卷積
與傳統卷積不同的是,在Depthwise卷積中,輸出特征某個通道只與輸入特征的某個通道和對應權重有關,與輸入特征的其他通道無關。
對于某個特定通道的輸入特征,個卷積核作用于窗口,輸出個特征,通常將稱作depth multiplier。若輸入特征通道為,則輸出特征通道數為。如下圖所示:
在上圖中,權重矩陣被描述成3維張量,即,令表示Depthwise卷積操作,則上圖可表示為,該式含義如下:
在上圖中,,,。
2.Depthwise over-parameterized卷積(DO-Conv)
2.1 基本原理
對于輸入特征,先使用權重進行depthwise卷積,對輸出結果進行權重為的傳統卷積,且。
使用表示DO-Conv操作,則上述運算可表示為。如下圖所示
上圖中圖(a)的計算過程可表示為,即:
- 對輸入特征進行depthwise卷積操作,即,得到中間變量;
- 對中間變量進行傳統卷積操作,即,得到最終結果。
圖(b)的計算過程可表示為,即:
- 先計算2個權重的乘積,即,得到新的權重;
- 再用權重對輸入特征做傳統的卷積操作,即,則到最終結果。
作者將圖(a)的計算方式稱作feature composition,將圖(b)的計算方式稱作kernel composition。
由于傳統的卷積和depthwise卷積都是線性操作,再根據圖(a)和圖(b)的表示,不難得出下面的公式:
需要注意的是,從圖(b)可以明顯看出,對輸入特征進行DO-Conv操作的感受野仍然為。
同樣是作用于輸入特征中的區域,使用傳統卷積,卷積核的參數量為;在DO-Conv中,由于使用了2個權重:和,且,即使令,DO-Conv中權重的參數也比傳統卷積的參數多。
因此,相比于傳統的卷積,DO-Conv是一個over-parameterized操作。
2.2 DO-Conv的訓練與推理
在訓練時,DO-Conv中的參數和可以使用訓練普通CNN的優化方法訓練,比如SGD。
在訓練包含DO-Conv的網絡時,兩種方法的前向計算的計算量如下圖所示,和分別表示feature map的高度和寬度。
在DO-Conv中,要求,且一般而言,因此在訓練時使用kernel composition方式計算DO-Conv,需要更少的操作,且存儲比存儲更節省內存資源。
在推理時,先計算并存下來,然后做權重為的傳統卷積操作,顯然,在推理階段使用DO-Conv與使用相同設置的傳統卷積有相同的計算量。
2.3 DO-Conv與深度可分離卷積的區別
使用feature composition模式計算DO-Conv,計算方式很類似于深度可分離卷積(depthwise separable):對于通道數為的輸入特征,先進行depthwise卷積運算,輸出通道數為的中間變量,然后再進行卷積核尺寸為的傳統卷積運算。
但是DO-Conv和深度可分離卷積有一些區別:
- 使用目的不同:DO-Conv的目的是用更多的參數加快訓練,同時能達到更好的性能;深度可分離卷積用于替代傳統卷積以減少計算量,便于在終端部署。
- 超參數不同:在DO-Conv中,以保證足夠的參數量;在深度可分離卷積中,以保證更快的運算速度。
- 結構不同:DO-Conv是兩個緊挨著的線性運算,在推理時2個運算可以組合成一個傳統卷積 ;深度可分離卷積的depthwise卷積和卷積之間一般有非線性激活函數。
3.DO-DConv和DO-GConv
不僅僅可以使用DO-Conv代替傳統的卷積以加快收斂速度、提高網絡性能,也可以在depthwise卷積中使用同樣的操作,構成DO-DConv,如下圖所示:
從上圖中可以看出,與DO-Conv類似,DO-DConv也可以通過兩種方式計算得到
同樣地,在訓練階段得到權重和權重;在推理階段,將和合并為1個權重。
此外,可以使用同樣的策略,將group卷積替換為DO-GConv,此處不再贅述。
4.在視覺任務中使用Depthwise over-parameterized卷積
4.1 DO-Conv的使用技巧
- 當傳統卷積的卷積核尺寸為時,不要將其替換為DO-Conv;
- 一般情況下可以令,此時DO-Conv中的權重與原來傳統卷積中的權重尺寸相同,權重是一個方陣;
- 使用恒等矩陣初始化,此時,使得包含DO-Conv的網絡也能夠使用pretrained的權重;
- 在實際使用時,通常優化,且使用0矩陣初始化,以防止正則項對中對角線元素的過度壓制。
4.2 DO-Conv對計算機視覺任務的性能提升效果
- 圖像分類
在CIFAR-10和CIFAR-100數據集上,測試ResNet-v1、ResNet-v2和Plain(將ResNet-v1中的短接去除)3個網絡以及使用DO-Conv替換其中傳統卷積的網絡,不改變其他超參數,Top1分類正確率如下圖所示:
在ImageNet數據集上,測試Plane、ResNet-v1、ResNet-v1b和ResNet-v2這4個網絡以及使用DO-Conv替換其中傳統卷積的網絡,Top1分類正確率如下圖所示:
使用DO-DConv和DO-GConv分別替換MobileNet和ResNeXt中的深度分離卷積和group卷積,在ImageNet數據集上的Top1分類正確率如下圖所示:
- 語義分割
使用ResNet-50和ResNet-100作為Deeplabv3的backbone,分別用于Cityscapes和PASCAL VOC這2個數據集,作者測試了只將Segmentation head的傳統卷積替換為DO-Conv和將整個網絡中的傳統卷積替換為DO-Conv這2種情況,測試結果如下圖所示:
- 目標檢測
在COCO數據集上使用backbone為ResNet-50的Faster R-CNN,作者測試了只將Detection head中的傳統卷積替換為DO-Conv和將整個網絡中的傳統卷積替換為DO-Conv這2種情況,測試結果如下圖所示:
從上面多個結果可看出,使用DO-Conv替代傳統卷積,能提升CNN在多種視覺任務中的性能。需要特別指出的是,上述實驗過程中并未針對DO-Conv改變超參數。
4.3 使用Depthwise over-parameterized卷積加速訓練過程
為了對比使用DO-Conv與否對訓練過程的影響,作者使用了不同深度的ResNet-v1b,在ImageNet數據集上訓練,記錄下訓練過程中網絡在訓練集和驗證集下的Top1錯誤率,如下圖所示:
從圖中可以看出,使用DO-Conv代替傳統卷積,不僅收斂更快,而且能收斂到更低的錯誤率。
5.總結
- 在傳統卷積操作中增加額外的參數形成DO-Conv,使用DO-Conv代替傳統卷積能夠加快收斂速度,在不增加網絡推理計算量的前提下提高網絡性能;
- 將DO-Conv拓展到DO-DConv和DO-GConv,拓寬其應用范圍;
- 通過實驗證明了DO-Conv在多種視覺任務中的性能提升。
總結
以上是生活随笔為你收集整理的DO-Conv 涨点模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高一计算机专业班主任工作总结,【班主任工
- 下一篇: Excel速度问题探讨.