博客專欄

EEPW首頁 > 博客 > 一文看盡深度學習中的20種卷積(2)

一文看盡深度學習中的20種卷積(2)

發(fā)布人:計算機視覺工坊 時間:2021-06-27 來源:工程師 發(fā)布文章

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)和逐點卷積(Pointwise Convolution)兩部分組成,后也被MobileNet[13]等著名網絡大規(guī)模應用。標準的卷積過程中對應圖像區(qū)域中的所有通道均被同時考慮,而深度可分離卷積打破了這層瓶頸,將通道和空間區(qū)域分開考慮,對不同的輸入通道采取不同的卷積核進行卷積,它將普通的卷積操作分解為兩個過程,目的是希望能用較少的參數學習更豐富的特征表示。

13.png

Depthwise Separable Convolution

原理

14.png

逐深度卷積

不同于原始卷積,深度卷積是一個卷積核負責一個通道,獨立地在每個通道上進行空間卷積。因此,深度卷積的輸出特征圖數量等于輸入特征圖數量,無法進行有效的維度擴展。

逐點卷積

由于一個特征圖僅被一個濾波器卷積,無法有效的利用不同通道在相同空間位置上的特征信息,由此加入了逐點卷積。點卷積主要是要1×1卷積構成,負責將深度卷積的輸出按通道投影到一個新的特征圖上。

特性

降低參數量和計算量

深度可分離卷積將原始的卷積運算分為兩層,一層用于濾波(深度卷積),一層用于組合(逐點卷積)。這種分解過程能極大減少模型的參數量和計算量。

降低模型容量

深度可分離卷積在應用時并沒有使用激活函數。此外,雖然深度可分離卷積可以顯著的降低模型的計算量,但同時也會導致模型的容量顯著降低,從而導致模型精度的下降。

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

背景

在計算機視覺領域,同一物體在不同場景,角度中未知的幾何變換是任務的一大挑戰(zhàn),通常來說要么通過充足的數據增強,擴充足夠多的樣本去增強模型適應尺度變換的能力,要么設置一些針對幾何變換不變的特征或者算法,比如SIFT或者滑動窗口等。然而傳統(tǒng)CNNs固定的幾何結構無法對未知的物體形變進行有效建模,因此可變形卷積的提出便是用于解決此問題。

15.png

(a) 普通卷積;(b) 可變形卷積;(c)-(d) 可變形卷積的兩種特殊形式。

原理

需要注意的是,可變形卷積并不是真正意義上的學習可變形的卷積核,而是利用額外的卷積層去學習相應的偏移量,將得到的偏移量疊加到輸入特征圖中相應位置的像素點中。但由于偏移量的生成會產生浮點數類型,而偏移量又必須轉換為整形,如果直接取整的話是無法進行反向傳播的,因此原文是利用雙線性插值的方式來間接的計算對應的像素值。

特性

自適應感受野

傳統(tǒng)的卷積核由于尺寸形狀固定,其激活單元的感受野也相對固定。但實際上同一個物體由于在不同位置上可能對應著不同的尺度或者變形,因此自適應感受野是進行精確定位所需要的,特別是對于密集型預測任務來說。可變形卷積基于一個平行的網絡來學習偏移,讓卷積核在輸入特征圖能夠發(fā)散采樣,使網絡能夠聚焦目標中心,從而提高對物體形變的建模能力。

難以部署

DCN雖然可以帶來高精度,但是仍然存在一個缺陷,即當卷積核過大時,會占用非常大的內存空間,因此在落地部署方面的應用很受限制。不過對于參加競賽而言倒不失為一種提分的trick。

改進

可變形卷積可以在一定程度上提升模型特征提取的泛化能力,但同時也會引入一些不相關的背景噪聲干擾。為此,作者提出了改進的版本《Deformable ConvNets v2: More Deformable, Better Results》[15],并給出了三種相應的解決方案:使用更多數量的可變形卷積、為每個偏置都添加相應的權重、模仿R-CNN中的特征。然而,可變形卷積的計算效率也是一個值得商榷的問題。從另一個側面來看,可變形卷積可以看做是對局部區(qū)域進行自注意力操作。

SSConv

背景

與深度可分離卷積一樣,空間可分離卷積也屬于因式分離卷積的一種,其核心思想是從圖像空間維度(寬度和高度)進行卷積運算。

原理

空間可分離卷積的工作原理是將卷積核拆分為兩部分,即將一個k×k的卷積核拆成k×1和1×k兩個方向的卷積核分別對輸入特征圖進行卷積,以降低計算的復雜度。

16.pngSpatially Separable Convolution

特性

降低計算量

如上圖所示,以5×5的輸入特征圖為例,如果我們直接用一個3×3的卷積核去卷積,共需要9×9=81次乘法運算。而如果換成空間可分離卷積,那么計算量為15×3+9×3=72次乘法運算。共節(jié)省了約11%的計算量。

應用

可以在空間上分離的最著名的卷積之一是Sobel算子,用于檢測邊緣。

17.png

局限性

空間可分離卷積在實際當中很少被廣泛應用,最主要的一個原因是并不是所有的卷積核都能夠有效的拆分成小的卷積核。

GraphConv

論文:《Semi-Supervised Classification with Graph Convolutional Networks》[16] (Accepted by ICLR 2017)

講解:https://github.com/CVHuber/Convolution/blob/main/Graph%20Convolution.py

背景

圖卷積網絡又是圖網絡中最簡單的一個分支,而圖卷積的提出便是為了有效的解決傳統(tǒng)CNNs、RNNs等網絡無法處理的非歐式空間的數據問題。

18.png

Graph Convolution

原理

圖中的核心思想是利用邊的信息對節(jié)點信息進行聚合,從而生成新的節(jié)點表示。簡而言之,CNNs中的卷積運算是卷積核對應位置的加權求和,擴展到GCNs就是利用邊的信息不斷的匯聚鄰間節(jié)點的信息,以更新原節(jié)點的參數。

特性

節(jié)點特征

每個節(jié)點均可用于特征表示。

結構特征

節(jié)點與節(jié)點之間通過攜帶信息的邊進行關聯。

Inception Block

論文:Going deeper with convolutions[17] (Accepted by CVPR 2015)

背景

Inception Block最初提出的目的是希望能夠在同一層特征圖上獲得不同尺度下的特征表征,增加網絡寬度有利于獲得更豐富的特征表示。

19.png

Inception v1

特性

多尺度特征提取

由上圖可知,Inception Block主要通過多個帶有不同卷積核大小的卷積運算來捕獲多尺度的上下文信息,最后再通過拼接操作聚合輸出,以獲得多尺度特征表示。

改進

Inception v1

為了進一步地壓縮網絡的參數量和計算量,作者在原先的Inception塊中大量的引入了1×1卷積,從而減小網絡的整體規(guī)模。

Inception v2

Inception v2[18]的主要思想便是提出了Batch Normalization,通過減少內部協變量偏移有效的加速了深度網絡的訓練。此外,借鑒VGG-Net[19]的思想,v2將v1中的5×5卷積用兩個3×3卷積進行替換,在保證獲得同等感受野的情況下,進一步的降低網絡的參數量和計算量。

Inception v3

Inception v3[20]主要借鑒了空間可分離卷積的思想,將原本k×k的卷積核拆分成1×k和k×1的一維卷積,一方面可以有效的加速網絡的運算,另一方面多余的計算資源可用于增加網絡的深度,提高非線性映射的能力。

Inception v4

Inception v4[21]則借鑒了ResNet[22]的思想,引入了Skip Connection,不僅可以極大地加速網絡的訓練,同時也能夠顯著的提高網絡性能。

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

背景

為特定的應用設計合適的CNNs架構本身涉及到繁重的手動工作或者需要高昂的GPU訓練時間,工業(yè)界也正在尋求一些CNNs結構可以方便的集成到其他成熟架構中,進一步提升應用到實際任務中的性能。因此,非對稱卷積(Asymmetric Convolution)模塊提出的目的就是為了能夠充分利用已有的成熟組件來構建一個更加高效的網絡,在沒有增加任何額外的開銷的情況下20.png

Asymmetric Convolution

原理

非對稱卷積,其核心思想是通過將原始卷積分解,該算法將三個分別具有正方形,水平和垂直核的卷積分支的輸出求和。從而在保持精度相當的情況下降低參數量和計算量,形式上利用到前面提到的空間可分離卷積。

特性

無縫銜接

非對稱卷積僅引入少量超參數便可方便的與其它結構結合而無需微調,顯示增強標注卷積核的特征表達能力。

無損提精

應用非對稱卷積可以在沒有增加額外的推理時間和計算開銷的前提下,有效的提高網絡精度,同時增強模型對旋轉失真物體的魯棒性。

改進

原作者在2021年的CVPR會議上進一步提出了ACN v2[24],設計出一種稱為Diverse Branch Block的模塊,創(chuàng)造性的將Inception的多分支、多尺度思想與過參數化思想進行了一次組合,是一種可以提升CNNs性能且推理耗時無損的通用模塊組件。

OctaveConv

論文:坡國立大學以及奇虎360的研究人員聯合發(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

背景

在自然圖像中,信息以不同的頻率傳遞,其中較高的頻率通常用精細的細節(jié)編碼,較低的頻率通常用全局結構編碼。同樣,卷積層的輸出特征圖也可以看作是不同頻率下信息的混合。在這項工作中,作者提出將混合特征圖按其頻率分解,并設計一種新的八度卷積操作來存儲和處理空間分辨率較低且空間變化較慢的特征圖,從而降低了內存和計算成本。與現有的多尺度方法不同,OctConv被表示為一個單一的、通用的、即插即用的卷積單元,可以直接替換普通卷積,而無需對網絡架構進行任何調整。Octave本意指的是八音階,在音樂上代表將聲音頻率減半的意思,故起名為Octave卷積,旨在對數據中的低頻信息減半從而達到加速卷積運算的目的。

21.png

Motivation

原理

22.png

Octave Convolution

對于普通卷積,所有的輸入和輸出特征圖具有相同的空間分辨率。然而,相關研究表明自然圖像可以分解為捕捉全局布局和粗結構的低頻信號和捕捉精細細節(jié)的高頻信號。類似的,卷積輸出的特征也應該對應有一個映射子集,它捕獲空間低頻變化并包含空間冗余信息。為了減少這種空間冗余,引入了Octave特征表示,它顯式地將特征映射張量分解為對應于低頻和高頻的組。尺度空間理論[26]為我們提供了一種創(chuàng)建空間分辨率尺度空間的原則方法,用這種方式可以定義低頻和高頻空間,即將低頻特征圖的空間分辨率降低一個Octave。

特性

提高效率

由于低頻特征圖中包含著過多無率用的背景信息,因此可以將低頻特征圖的空間分辨率降低為原始的一半,減少冗余的空間信息,這也意味著網絡的計算開銷也隨之減少,從而達到加速網絡計算效率的目的。

提高精度

與普通卷積相比,壓縮低頻分辨率有效地將感受野擴大了2倍,進一步幫助每個OctConv層捕獲更多的長距離上下文信息,從而提高識別精度。此外,除了頻間信息的更新,作者還分別對高/低頻特征分別進行升/降采樣,以實現不同頻率間信息的交互,從而在一定程度上能夠提高模型的精度??偟膩碚f,OctConv使用更緊湊的特征表示來存儲和處理整個網絡中的信息,從而可以達到更好的效率和性能。

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精度最直接的做法通常是設計更寬或更深的網絡,然而這會帶來更高的計算成本。為了降低計算成本,目前已有三類濾波器被廣泛地應用,即逐深度卷積(DWC)、逐點卷積(PWC)以及組卷積(GC)。但是,設計一種新架構需要大量研究工作才能找到最優(yōu)的過濾器組合,進而使得計算成本最小。另一種提升模型效率的常用方法是壓縮模型,即通過連接剪枝、過濾器剪枝和量化技術來進一步的減少計算成本。不同于以上方法,異構卷積主要側重于通過設計新的卷積核來降低給定模型的計算成本,在保證低時延的同時做到精度無損。

23.png

Heterogeneous Convolution

原理

如上圖所示,異構卷積的結構設計很簡單,即輸入特征圖的一部分通道應用k×k的卷積核,其余的通道應用1×1的卷積核。其中,P為控制卷積核為k的比例。

特性

24.png

上圖展示了不同卷積方式的延遲對比,不難發(fā)現第一種和第二種都屬于兩段式卷積,有一個延遲單元,并且也是目前主流輕量化卷積所使用的。所提出的方法與常規(guī)卷積一樣是0延遲的。因此,從組成結構上分析可知,所提出的方法的計算成本是比目前主流的輕量化卷積更低的。

*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞: 深度學習

相關推薦

技術專區(qū)

關閉