一文看盡深度學(xué)習(xí)中的20種卷積(2)
DWConv
論文:《Xception: Deep Learning with Depthwise Separable Convolutions》[12] (Accepted by CVPR 2017)
代碼:https://github.com/CVHuber/Convolution/blob/main/Depthwise%20Separable%20Convolution.py
講解:https://mp.weixin.qq.com/s/qkldaRnuN-R0B64ssUs47w
背景
深度可分離卷積,由深度卷積(Depthwise Convolution)和逐點(diǎn)卷積(Pointwise Convolution)兩部分組成,后也被MobileNet[13]等著名網(wǎng)絡(luò)大規(guī)模應(yīng)用。標(biāo)準(zhǔn)的卷積過程中對應(yīng)圖像區(qū)域中的所有通道均被同時(shí)考慮,而深度可分離卷積打破了這層瓶頸,將通道和空間區(qū)域分開考慮,對不同的輸入通道采取不同的卷積核進(jìn)行卷積,它將普通的卷積操作分解為兩個(gè)過程,目的是希望能用較少的參數(shù)學(xué)習(xí)更豐富的特征表示。
Depthwise Separable Convolution
原理
逐深度卷積
不同于原始卷積,深度卷積是一個(gè)卷積核負(fù)責(zé)一個(gè)通道,獨(dú)立地在每個(gè)通道上進(jìn)行空間卷積。因此,深度卷積的輸出特征圖數(shù)量等于輸入特征圖數(shù)量,無法進(jìn)行有效的維度擴(kuò)展。
逐點(diǎn)卷積
由于一個(gè)特征圖僅被一個(gè)濾波器卷積,無法有效的利用不同通道在相同空間位置上的特征信息,由此加入了逐點(diǎn)卷積。點(diǎn)卷積主要是要1×1卷積構(gòu)成,負(fù)責(zé)將深度卷積的輸出按通道投影到一個(gè)新的特征圖上。
特性
降低參數(shù)量和計(jì)算量
深度可分離卷積將原始的卷積運(yùn)算分為兩層,一層用于濾波(深度卷積),一層用于組合(逐點(diǎn)卷積)。這種分解過程能極大減少模型的參數(shù)量和計(jì)算量。
降低模型容量
深度可分離卷積在應(yīng)用時(shí)并沒有使用激活函數(shù)。此外,雖然深度可分離卷積可以顯著的降低模型的計(jì)算量,但同時(shí)也會(huì)導(dǎo)致模型的容量顯著降低,從而導(dǎo)致模型精度的下降。
DeformableConv
論文:《Deformable Convolutional Networks》[14] (Accepted by ICCV 2017)
代碼:https://github.com/CVHuber/Convolution/blob/main/Deformable%20Convolution.py
講解:https://mp.weixin.qq.com/s/O9ToEnVC-H7qPwxPQN-a7A
背景
在計(jì)算機(jī)視覺領(lǐng)域,同一物體在不同場景,角度中未知的幾何變換是任務(wù)的一大挑戰(zhàn),通常來說要么通過充足的數(shù)據(jù)增強(qiáng),擴(kuò)充足夠多的樣本去增強(qiáng)模型適應(yīng)尺度變換的能力,要么設(shè)置一些針對幾何變換不變的特征或者算法,比如SIFT或者滑動(dòng)窗口等。然而傳統(tǒng)CNNs固定的幾何結(jié)構(gòu)無法對未知的物體形變進(jìn)行有效建模,因此可變形卷積的提出便是用于解決此問題。
(a) 普通卷積;(b) 可變形卷積;(c)-(d) 可變形卷積的兩種特殊形式。
原理
需要注意的是,可變形卷積并不是真正意義上的學(xué)習(xí)可變形的卷積核,而是利用額外的卷積層去學(xué)習(xí)相應(yīng)的偏移量,將得到的偏移量疊加到輸入特征圖中相應(yīng)位置的像素點(diǎn)中。但由于偏移量的生成會(huì)產(chǎn)生浮點(diǎn)數(shù)類型,而偏移量又必須轉(zhuǎn)換為整形,如果直接取整的話是無法進(jìn)行反向傳播的,因此原文是利用雙線性插值的方式來間接的計(jì)算對應(yīng)的像素值。
特性
自適應(yīng)感受野
傳統(tǒng)的卷積核由于尺寸形狀固定,其激活單元的感受野也相對固定。但實(shí)際上同一個(gè)物體由于在不同位置上可能對應(yīng)著不同的尺度或者變形,因此自適應(yīng)感受野是進(jìn)行精確定位所需要的,特別是對于密集型預(yù)測任務(wù)來說??勺冃尉矸e基于一個(gè)平行的網(wǎng)絡(luò)來學(xué)習(xí)偏移,讓卷積核在輸入特征圖能夠發(fā)散采樣,使網(wǎng)絡(luò)能夠聚焦目標(biāo)中心,從而提高對物體形變的建模能力。
難以部署
DCN雖然可以帶來高精度,但是仍然存在一個(gè)缺陷,即當(dāng)卷積核過大時(shí),會(huì)占用非常大的內(nèi)存空間,因此在落地部署方面的應(yīng)用很受限制。不過對于參加競賽而言倒不失為一種提分的trick。
改進(jìn)
可變形卷積可以在一定程度上提升模型特征提取的泛化能力,但同時(shí)也會(huì)引入一些不相關(guān)的背景噪聲干擾。為此,作者提出了改進(jìn)的版本《Deformable ConvNets v2: More Deformable, Better Results》[15],并給出了三種相應(yīng)的解決方案:使用更多數(shù)量的可變形卷積、為每個(gè)偏置都添加相應(yīng)的權(quán)重、模仿R-CNN中的特征。然而,可變形卷積的計(jì)算效率也是一個(gè)值得商榷的問題。從另一個(gè)側(cè)面來看,可變形卷積可以看做是對局部區(qū)域進(jìn)行自注意力操作。
SSConv
背景
與深度可分離卷積一樣,空間可分離卷積也屬于因式分離卷積的一種,其核心思想是從圖像空間維度(寬度和高度)進(jìn)行卷積運(yùn)算。
原理
空間可分離卷積的工作原理是將卷積核拆分為兩部分,即將一個(gè)k×k的卷積核拆成k×1和1×k兩個(gè)方向的卷積核分別對輸入特征圖進(jìn)行卷積,以降低計(jì)算的復(fù)雜度。
Spatially Separable Convolution
特性
降低計(jì)算量
如上圖所示,以5×5的輸入特征圖為例,如果我們直接用一個(gè)3×3的卷積核去卷積,共需要9×9=81次乘法運(yùn)算。而如果換成空間可分離卷積,那么計(jì)算量為15×3+9×3=72次乘法運(yùn)算。共節(jié)省了約11%的計(jì)算量。
應(yīng)用
可以在空間上分離的最著名的卷積之一是Sobel算子,用于檢測邊緣。
局限性
空間可分離卷積在實(shí)際當(dāng)中很少被廣泛應(yīng)用,最主要的一個(gè)原因是并不是所有的卷積核都能夠有效的拆分成小的卷積核。
GraphConv
論文:《Semi-Supervised Classification with Graph Convolutional Networks》[16] (Accepted by ICLR 2017)
講解:https://github.com/CVHuber/Convolution/blob/main/Graph%20Convolution.py
背景
圖卷積網(wǎng)絡(luò)又是圖網(wǎng)絡(luò)中最簡單的一個(gè)分支,而圖卷積的提出便是為了有效的解決傳統(tǒng)CNNs、RNNs等網(wǎng)絡(luò)無法處理的非歐式空間的數(shù)據(jù)問題。
Graph Convolution
原理
圖中的核心思想是利用邊的信息對節(jié)點(diǎn)信息進(jìn)行聚合,從而生成新的節(jié)點(diǎn)表示。簡而言之,CNNs中的卷積運(yùn)算是卷積核對應(yīng)位置的加權(quán)求和,擴(kuò)展到GCNs就是利用邊的信息不斷的匯聚鄰間節(jié)點(diǎn)的信息,以更新原節(jié)點(diǎn)的參數(shù)。
特性
節(jié)點(diǎn)特征
每個(gè)節(jié)點(diǎn)均可用于特征表示。
結(jié)構(gòu)特征
節(jié)點(diǎn)與節(jié)點(diǎn)之間通過攜帶信息的邊進(jìn)行關(guān)聯(lián)。
Inception Block
論文:Going deeper with convolutions[17] (Accepted by CVPR 2015)
背景
Inception Block最初提出的目的是希望能夠在同一層特征圖上獲得不同尺度下的特征表征,增加網(wǎng)絡(luò)寬度有利于獲得更豐富的特征表示。
Inception v1
特性
多尺度特征提取
由上圖可知,Inception Block主要通過多個(gè)帶有不同卷積核大小的卷積運(yùn)算來捕獲多尺度的上下文信息,最后再通過拼接操作聚合輸出,以獲得多尺度特征表示。
改進(jìn)
Inception v1
為了進(jìn)一步地壓縮網(wǎng)絡(luò)的參數(shù)量和計(jì)算量,作者在原先的Inception塊中大量的引入了1×1卷積,從而減小網(wǎng)絡(luò)的整體規(guī)模。
Inception v2
Inception v2[18]的主要思想便是提出了Batch Normalization,通過減少內(nèi)部協(xié)變量偏移有效的加速了深度網(wǎng)絡(luò)的訓(xùn)練。此外,借鑒VGG-Net[19]的思想,v2將v1中的5×5卷積用兩個(gè)3×3卷積進(jìn)行替換,在保證獲得同等感受野的情況下,進(jìn)一步的降低網(wǎng)絡(luò)的參數(shù)量和計(jì)算量。
Inception v3
Inception v3[20]主要借鑒了空間可分離卷積的思想,將原本k×k的卷積核拆分成1×k和k×1的一維卷積,一方面可以有效的加速網(wǎng)絡(luò)的運(yùn)算,另一方面多余的計(jì)算資源可用于增加網(wǎng)絡(luò)的深度,提高非線性映射的能力。
Inception v4
Inception v4[21]則借鑒了ResNet[22]的思想,引入了Skip Connection,不僅可以極大地加速網(wǎng)絡(luò)的訓(xùn)練,同時(shí)也能夠顯著的提高網(wǎng)絡(luò)性能。
AsymmetricConv
論文:《ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks》[23] (Accepted by ICCV 2019)
代碼:https://github.com/CVHuber/Convolution/blob/main/Asymmetric%20Convolution.py
背景
為特定的應(yīng)用設(shè)計(jì)合適的CNNs架構(gòu)本身涉及到繁重的手動(dòng)工作或者需要高昂的GPU訓(xùn)練時(shí)間,工業(yè)界也正在尋求一些CNNs結(jié)構(gòu)可以方便的集成到其他成熟架構(gòu)中,進(jìn)一步提升應(yīng)用到實(shí)際任務(wù)中的性能。因此,非對稱卷積(Asymmetric Convolution)模塊提出的目的就是為了能夠充分利用已有的成熟組件來構(gòu)建一個(gè)更加高效的網(wǎng)絡(luò),在沒有增加任何額外的開銷的情況下
Asymmetric Convolution
原理
非對稱卷積,其核心思想是通過將原始卷積分解,該算法將三個(gè)分別具有正方形,水平和垂直核的卷積分支的輸出求和。從而在保持精度相當(dāng)?shù)那闆r下降低參數(shù)量和計(jì)算量,形式上利用到前面提到的空間可分離卷積。
特性
無縫銜接
非對稱卷積僅引入少量超參數(shù)便可方便的與其它結(jié)構(gòu)結(jié)合而無需微調(diào),顯示增強(qiáng)標(biāo)注卷積核的特征表達(dá)能力。
無損提精
應(yīng)用非對稱卷積可以在沒有增加額外的推理時(shí)間和計(jì)算開銷的前提下,有效的提高網(wǎng)絡(luò)精度,同時(shí)增強(qiáng)模型對旋轉(zhuǎn)失真物體的魯棒性。
改進(jìn)
原作者在2021年的CVPR會(huì)議上進(jìn)一步提出了ACN v2[24],設(shè)計(jì)出一種稱為Diverse Branch Block的模塊,創(chuàng)造性的將Inception的多分支、多尺度思想與過參數(shù)化思想進(jìn)行了一次組合,是一種可以提升CNNs性能且推理耗時(shí)無損的通用模塊組件。
OctaveConv
論文:坡國立大學(xué)以及奇虎360的研究人員聯(lián)合發(fā)表在ICCV 2019的一篇文章《Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave Convolution》[25] (Accepted ICCV 2019)
代碼:https://github.com/CVHuber/Convolution/blob/main/Octave%20Convolution.py
講解:https://mp.weixin.qq.com/s/HiHQQaJcrfi5vk_ixPwbIw
背景
在自然圖像中,信息以不同的頻率傳遞,其中較高的頻率通常用精細(xì)的細(xì)節(jié)編碼,較低的頻率通常用全局結(jié)構(gòu)編碼。同樣,卷積層的輸出特征圖也可以看作是不同頻率下信息的混合。在這項(xiàng)工作中,作者提出將混合特征圖按其頻率分解,并設(shè)計(jì)一種新的八度卷積操作來存儲(chǔ)和處理空間分辨率較低且空間變化較慢的特征圖,從而降低了內(nèi)存和計(jì)算成本。與現(xiàn)有的多尺度方法不同,OctConv被表示為一個(gè)單一的、通用的、即插即用的卷積單元,可以直接替換普通卷積,而無需對網(wǎng)絡(luò)架構(gòu)進(jìn)行任何調(diào)整。Octave本意指的是八音階,在音樂上代表將聲音頻率減半的意思,故起名為Octave卷積,旨在對數(shù)據(jù)中的低頻信息減半從而達(dá)到加速卷積運(yùn)算的目的。
Motivation
原理
Octave Convolution
對于普通卷積,所有的輸入和輸出特征圖具有相同的空間分辨率。然而,相關(guān)研究表明自然圖像可以分解為捕捉全局布局和粗結(jié)構(gòu)的低頻信號(hào)和捕捉精細(xì)細(xì)節(jié)的高頻信號(hào)。類似的,卷積輸出的特征也應(yīng)該對應(yīng)有一個(gè)映射子集,它捕獲空間低頻變化并包含空間冗余信息。為了減少這種空間冗余,引入了Octave特征表示,它顯式地將特征映射張量分解為對應(yīng)于低頻和高頻的組。尺度空間理論[26]為我們提供了一種創(chuàng)建空間分辨率尺度空間的原則方法,用這種方式可以定義低頻和高頻空間,即將低頻特征圖的空間分辨率降低一個(gè)Octave。
特性
提高效率
由于低頻特征圖中包含著過多無率用的背景信息,因此可以將低頻特征圖的空間分辨率降低為原始的一半,減少冗余的空間信息,這也意味著網(wǎng)絡(luò)的計(jì)算開銷也隨之減少,從而達(dá)到加速網(wǎng)絡(luò)計(jì)算效率的目的。
提高精度
與普通卷積相比,壓縮低頻分辨率有效地將感受野擴(kuò)大了2倍,進(jìn)一步幫助每個(gè)OctConv層捕獲更多的長距離上下文信息,從而提高識(shí)別精度。此外,除了頻間信息的更新,作者還分別對高/低頻特征分別進(jìn)行升/降采樣,以實(shí)現(xiàn)不同頻率間信息的交互,從而在一定程度上能夠提高模型的精度??偟膩碚f,OctConv使用更緊湊的特征表示來存儲(chǔ)和處理整個(gè)網(wǎng)絡(luò)中的信息,從而可以達(dá)到更好的效率和性能。
HetConv
論文:《HetConv: Heterogeneous Kernel-Based Convolutions for Deep CNNs》[27] (Accepted by CVPR 2019)
代碼:https://github.com/CVHuber/Convolution/blob/main/Heterogeneous%20Convolution.py
講解:https://mp.weixin.qq.com/s/SLN0XmSqtGKmIXVKUUy9rg
背景
提高CNNs精度最直接的做法通常是設(shè)計(jì)更寬或更深的網(wǎng)絡(luò),然而這會(huì)帶來更高的計(jì)算成本。為了降低計(jì)算成本,目前已有三類濾波器被廣泛地應(yīng)用,即逐深度卷積(DWC)、逐點(diǎn)卷積(PWC)以及組卷積(GC)。但是,設(shè)計(jì)一種新架構(gòu)需要大量研究工作才能找到最優(yōu)的過濾器組合,進(jìn)而使得計(jì)算成本最小。另一種提升模型效率的常用方法是壓縮模型,即通過連接剪枝、過濾器剪枝和量化技術(shù)來進(jìn)一步的減少計(jì)算成本。不同于以上方法,異構(gòu)卷積主要側(cè)重于通過設(shè)計(jì)新的卷積核來降低給定模型的計(jì)算成本,在保證低時(shí)延的同時(shí)做到精度無損。
Heterogeneous Convolution
原理
如上圖所示,異構(gòu)卷積的結(jié)構(gòu)設(shè)計(jì)很簡單,即輸入特征圖的一部分通道應(yīng)用k×k的卷積核,其余的通道應(yīng)用1×1的卷積核。其中,P為控制卷積核為k的比例。
特性
上圖展示了不同卷積方式的延遲對比,不難發(fā)現(xiàn)第一種和第二種都屬于兩段式卷積,有一個(gè)延遲單元,并且也是目前主流輕量化卷積所使用的。所提出的方法與常規(guī)卷積一樣是0延遲的。因此,從組成結(jié)構(gòu)上分析可知,所提出的方法的計(jì)算成本是比目前主流的輕量化卷積更低的。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。