輕量級網(wǎng)絡(luò)/檢測/分割綜述
點擊上方“AI算法與圖像處理”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
導(dǎo)讀
?由于深度學(xué)習(xí)的關(guān)系,計算機視覺領(lǐng)域發(fā)展迅速,各大榜單精度刷的很高,但是這些性能強大的模型卻沒有用武之地,在現(xiàn)實場景下,更加需要的是輕量級的模型。本文將從輕量級網(wǎng)絡(luò)(MobileNetV2、ShuffleNetV2)、輕量級檢測(Light-Head R-CNN、ThunderNet)、輕量級分割(BiSeNet、DFANet)3個方面進行介紹。
輕量級網(wǎng)絡(luò)
好的論文不僅教你為什么,而且教你怎么做,這兩篇論文堪稱典范,強烈建議多讀幾遍(就是有點難懂,流下了不學(xué)無術(shù)的淚水~~ )?。?!最近ShuffleNetV2還在VALSE上拿了最佳學(xué)生論文,膜~~
1.MobileNetV2
Motivation

對于一個feature,先通過一個給定的變換規(guī)則T,將它映射到它的embedding space中,再在該embedding space中,利用一個ReLU去處理該feature,最后再把這個feature以同樣的變換規(guī)則(逆方向)給映射回原始空間,這時我們會發(fā)現(xiàn)這個feature已經(jīng)改變了。
維度低的feature,分布到ReLU的激活帶上的概率小,因此經(jīng)過后信息丟失嚴重,甚至可能完全丟失。而維度高的feature,分布到ReLU的激活帶上的概率大,雖然可能也會有信息的部分丟失,但是無傷大雅,大部分的信息仍然得以保留。
由上述分析可以得到兩條性質(zhì):
1.如果the manifold of interest經(jīng)過ReLU之后信息保持完整,那么該操作實際上退化成了線性變換。
2.如果輸入的manifold位于輸入空間的低維子空間,那么ReLU能夠保留輸入manifold的復(fù)雜信息。
因此,the manifold of interest應(yīng)該位于高維激活空間的低維子空間中。
MobileNetV2引入了兩種結(jié)構(gòu)Linear Bottleneck和 Inverted Residual Blocks,既能夠去除高維度feature的冗余信息,又能夠去除低維度feature的信息坍塌。
Linear Bottleneck

與MoblieNetV1的相同點:
都采用了Depth-wise Convolution和Point-wise Convolution組合的方式(Depth-wise Separable Convolution)來提取特征。該操作可以成倍減少時間復(fù)雜度和空間復(fù)雜度。
與MoblieNetV1的不同點:
1.在Depth-wise Separable Convolution前面添加一個Point-wise Convolution。通過PW操作升維,在高維特征空間中提取特征。
2.去掉Depth-wise Separable Convolution后面的ReLU,等價于一個Linear Bottleneck結(jié)構(gòu)。
由于DW中的PW操作降維,得到一個低維特征空間,由上述分析可知,ReLU會導(dǎo)致低維特征空間坍塌,所以去除PW后面的ReLU可以提升性能。
Inverted Residual Block

和ResNet的相同點:
1.都采用了1x1 -> 3x3 -> 1x1的模式。
2.都使用了Shortcut操作將輸入輸出相加。
和ResNet的不同點:
1.ResNet通過標準卷積提取特征,MoblieNetV2通過DW卷積提取特征。
2.ResNet先降維,卷積,再升維,而MoblieNetV2先升維,卷積,再降維(即ResNet是沙漏形,而MobileNetV2是紡錘形)。
通過Linear Bottleneck和 Inverted Residual Blocks,MobileNetV2能夠更加充分高效的提取特征。
該部分借鑒了2位大佬的筆記,受益匪淺~~,感興趣的可以看看大佬的筆記
黃二二:對ResNet本質(zhì)的一些思考
Michael Yuan:MobileNet V2 論文初讀
2.ShuffleNetV2
Motivation
以往的工作都是用FLOPs來衡量計算復(fù)雜度的,然而FLOPs不是一個直接的指標,我們真正關(guān)心的是speed。
兩個原則
FLOPs和speed指標之間的差異主要有兩個原因:
1.FLOPs指標沒有考慮到幾個影響速度的重要因素。一個是內(nèi)存訪問成本(MAC),大部分來自于組卷積。另一個是并行度。
2.有著相同F(xiàn)LOPs的各種操作,在不同平臺下的運行時間不同。
基于這些觀察,作者提出2個原則:
1.使用直接指標speed。
2.該指標在相同平臺下評估。
四個準則
對輕量級網(wǎng)絡(luò)各種操作的運行時間進行分析,作者提出了4個準則:
G1:通道寬度均衡可以最小化MAC。
G2:增加組卷積會增加MAC。
G3:網(wǎng)絡(luò)碎片化降低了并行度。
G4:元素操作是不可忽略的。

ShuffleNetV1
ShuffleNetV1采用了pointwise組卷積和類似bottleneck的結(jié)構(gòu)。另外引入一個channel shuffle操作使得不同組的通道信息流通。
由上述4個準則可知,pointwise組卷積和bottleneck結(jié)構(gòu)增加MAC,這違反了G1和G2。使用過多的組數(shù)違反了G3。逐元素相加違反了G4。
因此,為了實現(xiàn)較高的模型容量和效率,關(guān)鍵問題是如何保持大量且同樣寬的通道,既沒有密集卷積也沒有太多的分組。
ShuffleNetV2
在每個單元的開始,輸入通道數(shù)為c的feature通過channel split分成了2個分支,按照準則G3,一個分支作為identity,另一個分支由3個輸入輸出通道數(shù)相同的卷積組成(滿足準則G1)。兩個1x1卷積不再是group-wise的了,一部分原因是準則G2,另一部分原因是channel split操作已經(jīng)分成了兩組。卷積后,兩個分支concat操作,因此輸出通道數(shù)和輸入通道數(shù)保持相同(滿足準則G1)。隨后引入channel shuffle使得兩個分支的通道信息流通。
值得注意的是,ShuffleNetV2去掉了Add操作,元素操作比如ReLU和depth-wise convolutions只在一個分支中存在。并且3個連續(xù)的操作Concat、Channel Shuffle和Channel Split被合并成一個元素操作。按照準則G4,這些改變對精度是有幫助的。
對于帶有下采樣的模塊,需要稍微修改一下模塊,移除掉channel split操作。輸出的通道數(shù)增加一倍。
官方解讀:
機器之心:曠視科技提出新型輕量架構(gòu)ShuffleNet V2
輕量級檢測
3.Light-Head R-CNN


作者在?
?層后面接一個large separable convolution,?
?設(shè)置為15,對S設(shè)置?
?,對L設(shè)置?
?。將?
?設(shè)置為10 x p x p(R-FCN中為classes x p x p)。large kernel的有效感受野更大,池化后的feature maps的特征會更強。
R-CNN subnet
采用一個2048維的全連接層,后面接2個并行的全連接層來預(yù)測分類和回歸。
4.ThunderNet
Light-Head R-CNN的做法總的來說還是比較粗糙的,而最近新出的ThunderNet對二階段檢測器進行了全面壓縮,從backbone部分到detection部分,從RPN部分到detection head部分,能壓縮的全壓縮了一遍。不得不說,曠視在輕量級模型設(shè)計這一塊太厲害了~~ (筆記提到的6篇除了MobileNetV2全是曠視的,膜 ~~ )
Motivation
與小的backbone相結(jié)合時,Light-Head R-CNN仍然花費大量的計算在detection部分,這導(dǎo)致了弱backbone和強detection部分的不匹配。這種不平衡不僅導(dǎo)致巨大的計算冗余,而且使網(wǎng)絡(luò)容易過擬合。

ThunderNet的優(yōu)化目標是二階段檢測器中計算開銷大的結(jié)構(gòu)。在backbone部分,設(shè)計了輕量級網(wǎng)絡(luò)SNet,在detection部分,借鑒Light-Head R-CNN的思路,并進一步壓縮RPN和R-CNN子網(wǎng)絡(luò)。為了避免性能的衰退,設(shè)計了2個高效的結(jié)構(gòu)CEM和SAM來改善性能。
Backbone Part
輸入分辨率設(shè)置為320x320,作者指出輸入分辨率應(yīng)該和backbone的能力相匹配。
作者提出三種SNet的backbones:SNet49推理更快,SNet535性能更好,SNet146速度和性能折中。SNet在ShuffleNetV2的基礎(chǔ)上進行了以下兩點修改:
1.將ShuffleNetV2中所有3x3 depthwise convolutions換成5x5 depthwise convolutions。
2.SNet146和SNet535中去掉Conv5并且增加前面階段的通道數(shù)。SNet49中將Conv5的通道數(shù)壓縮成512,并且增加前面階段的通道數(shù)。
Detection Part
Compressing RPN and Detection Head
壓縮RPN:用一個5x5 depthwise convolution和一個256通道的1x1卷積來替換256通道的3x3卷積。
壓縮Detection Head:Light-Head R-CNN產(chǎn)生5 x p x p的feature map,RoI warping采用PSRoI align。
R-CNN subnet:采用一個1024維的全連接層,后面接2個并行的全連接層來預(yù)測分類和回歸。
Context Enhancement Module

feature maps由三個尺度融合得到,?
?是全局平均池化得到的特征,在每個feature map上使用一個1x1卷積來壓縮通道數(shù)。?
?進行2倍上采樣,?
?進行廣播,得到三個分辨率相同的feature map,最后三個feature map進行特征融合。比起FPN結(jié)構(gòu),CEM只添加了2個卷積和一個fc層,計算開銷上更加友好。
Spatial Attention Module

SAM的輸入有兩個,一個是來自RPN的feature map,另一個是來自CEM的feature map。
輸出定義為:

?轉(zhuǎn)換通道維度,使通道數(shù)匹配。
SAM利用RPN的知識來精煉feature map的特征分布,對RoI warping之前的feature map進行權(quán)值重標定。
SAM有兩個函數(shù),第一個函數(shù),通過增強前景特征并且抑制背景特征來精煉特征分布,第二個函數(shù),來自R-CNN子網(wǎng)絡(luò)的梯度使得RPN的訓(xùn)練更加穩(wěn)定。
輕量級分割
以下兩篇論文剖析前人工作的部分,分析的非常透徹,很有啟發(fā)性。
5.BiSeNet
Motivation

實時語義分割主要有三種做法來加速模型(圖a):
1.通過crop或者resize限制輸入尺寸,減少計算復(fù)雜度。但是這種方法會導(dǎo)致空間細節(jié)的丟失。
2.剪枝網(wǎng)絡(luò)淺層的通道。但是這種方法會減少空間容量。
3.drop模型的最后階段。但是這種方法丟棄了最后階段的下采樣,導(dǎo)致感受野不足以覆蓋大的目標。
為了彌補空間細節(jié)的丟失,實時語義分割使用U-shape的結(jié)構(gòu)(圖b)。通過融合網(wǎng)絡(luò)的層級特征,U-shape逐漸增加空間分辨率并且補充了一些缺失的細節(jié)。但是,這種做法有兩個缺點:
1.因為高分辨率feature maps的額外計算,U-shape結(jié)構(gòu)降低模型的速度。
2.剪枝和裁剪造成的空間信息的丟失是難以恢復(fù)的。
Bilateral Segmentation Network
基于對過去工作的分析,作者提出了Bilateral Segmentation Network(圖c),引入了2個組件Spatial Path和Context Path,分別用來解決空間信息的丟失和感受野的不足。為了在速度不降低的情況下提升精度,作者還引入了FFM和ARM結(jié)構(gòu),分別進行兩個分支的融合和精煉預(yù)測結(jié)果。

Spatial path
Spatial path包含3層,每層包含步長為2的卷積、BN和ReLU。分辨率降為輸入的1/8。這種編碼方式可以保留豐富的空間信息。
Context path
Context path利用輕量級網(wǎng)絡(luò)和全局平均池化來提供大的感受野。輕量級網(wǎng)絡(luò)能迅速下采樣得到大的感受野,編碼高級的語義上下文信息。隨后,通過一個全局平均池化,得到最大感受野。最后,將全局池化后的feature上采樣和輕量級網(wǎng)絡(luò)的feature進行融合(最后兩個階段進行U-shape結(jié)構(gòu)融合)。
Attention refinement module
ARM利用全局平均池化來捕獲全局信息并且計算得到一個attention向量來引導(dǎo)特征學(xué)習(xí)。該設(shè)計能夠精煉Context Path每個階段的輸出特征。
Feature fusion module
因為Spatial Path的輸出特征是低級的,而Context Path的輸出特征是高級的,所以兩個分支的特征不能直接相加融合。
FFM首先將Spatial Path和Context Path分支的輸出特征concat,然后利用BN來平衡特征的尺度,最后采用類SENet模塊對特征進行權(quán)值重標定。
官方解讀:
曠視科技:曠視科技提出雙向網(wǎng)絡(luò)BiSeNet:實現(xiàn)實時語義分割
ycszen:語義分割江湖的那些事兒——從曠視說起
6.DFANet
Motivation

實時語義分割的兩種方法:
1.使用多個分支來進行多尺度的特征抽取并且保留圖像的空間細節(jié)(圖a)。但是這種方法缺乏對由并行分支結(jié)合而成的高級特征的處理,另外,并行分支的特征缺乏信息交流,還有,在高分辨率圖像上額外添加分支對速度有影響。
2.使用空間金字塔池化(SPP)模塊來處理高級特征(圖b)。但是這種方法非常耗時。
受到以上兩種方法的啟發(fā),作者提出對網(wǎng)絡(luò)輸出進行上采樣,然后用另一個子網(wǎng)絡(luò)對特征進行精煉(圖c)。這種做法不同于SPP模塊,feature maps在更大的分辨率上進行精煉同時能夠?qū)W到亞像素的細節(jié)。但是這種方法,隨著整個結(jié)構(gòu)深度的增長,高維度特征和感受野通常會出現(xiàn)精度損失。
為了進一步提升精度,作者提出stage-level的方法為語義理解提供低級特征和空間信息(圖d)。因為所有的子網(wǎng)絡(luò)有相似的結(jié)構(gòu),stage-level方法通過conat相同分辨率的層精煉產(chǎn)生多階段的上下文信息。
Deep Feature Aggregation

DFANet的特征聚合策略由子網(wǎng)絡(luò)聚合和子階段聚合組成。
Sub-network Aggregation
子網(wǎng)絡(luò)聚合在網(wǎng)絡(luò)層級進行高級特征的結(jié)合。通過將上一個bacebone的輸出上采樣4倍,然后輸入到下一個backbone中,實現(xiàn)子網(wǎng)絡(luò)聚合。子網(wǎng)絡(luò)聚合對高級特征進行處理,用以進一步評估和重新評估更高階的空間關(guān)系。
Sub-stage Aggregation
子階段聚合在階段層級進行語義合空間信息的融合。在子網(wǎng)絡(luò)相同深度下對不同階段進行特征融合。具體的,就是前一個子網(wǎng)絡(luò)的某個階段輸出是下一個子網(wǎng)絡(luò)對應(yīng)階段的輸入。
子階段聚合公式如下:

在每個階段的開始,學(xué)習(xí)一個殘差公式?
?。然后使用concat將殘差兩個分支的特征融合起來。
Network Architecture
DFANet可以看成是一個encoder-decoder的結(jié)構(gòu)。encoder是由3個Xception聚合的,包括子網(wǎng)絡(luò)聚合和子階段聚合。decoder簡單的設(shè)計為特征上采樣,然后融合低級和高級特征。所有backbone有相同的結(jié)構(gòu)和相同預(yù)訓(xùn)練權(quán)重初始值。
Backbone
輕微修改的Xception模型作為backbone。保留來自ImageNet預(yù)訓(xùn)練的全連接層來增強語義抽取。在fc層后面使用一個1x1卷積,減少通道數(shù)和feature maps匹配。得到的編碼向量對輸入特征進行權(quán)值重標定。
Decoder
首先將3個backbone的深層的高級特征上采樣后進行融合。然后將3個backbone的淺層的低級特征上采樣后進行融合。最后將融合得到的高級特征和低級特征相加再4倍上采樣得到最終的預(yù)測結(jié)果。
官方解讀:
曠視科技:曠視實時語義分割技術(shù)DFANet:高清虛化無需雙攝
Reference
1.MobileNetV2: Inverted Residuals and Linear Bottlenecks
2.ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
3.Light-Head R-CNN: In Defense of Two-Stage Object Detector
4.ThunderNet: Towards Real-time Generic Object Detection
5.BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation
6.DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation
下載1:速查表
在「AI算法與圖像處理」公眾號后臺回復(fù):速查表,即可下載21張 AI相關(guān)的查找表,包括 python基礎(chǔ),線性代數(shù),scipy科學(xué)計算,numpy,kears,tensorflow等等
下載2 CVPR2020 在「AI算法與圖像處理」公眾號后臺回復(fù):CVPR2020,即可下載1467篇CVPR?2020論文 個人微信(如果沒有備注不拉群!) 請注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱
覺得不錯就點亮在看吧


