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