常用卷積神經網絡精煉總結(複習用)

本文總結了目前依然常用常見的卷積神經網絡的特點,僅作爲複習使用,具體細節建議閱讀原論文

 

①Resnet

1. 擬合殘差,網絡退化或者消失的主要原因是多個非線性層無法構建恆等映射,解決方法之一就是引入殘差。讓模型內部至少有恆等映射的能力。
2. resent可以看作是路徑的集合,類似集成模型,從輸入到輸出存在許多不同長度的路徑。(讓模型自身結構選擇更加靈活
3. 引入有效路徑,加強前後層信息融合;且有效路徑都是短路徑,不是讓梯度流通整個網絡,而是在深層引入傳輸梯度的短路徑

②Densenet
一句話:跳躍連接的極致,將所有層的狀態全部保存到集體知識中,加強特徵的傳遞。
1. 密集連接,減輕梯度消失
2. 每層的維度減少,減少參數量,類似正則化,減少過擬合的風險
3. 加強feature map的傳遞,更高效利用feature

 

③Inception系列
一句話:密集的塊結構來近似最優的稀疏結構
V1:

1. 多個小卷積核代替大卷積核,參數少;同時獲取多種感受野

 

2. 1*1卷積降維,跨通道信息融合;避免表示瓶頸,最大池化前進行升維
3. 輔助softmax,將有用的梯度注入模型低層(對抗梯度消失)


V2:
Batch normliazation


V3:

1. 避免表示瓶頸,對應pool,特徵圖尺寸應該從輸入到輸出緩慢減小

2. 空間聚合可以在低維進行,3*3之前的降維
3. (核心)高維特徵更容易局部處理,使用稀疏表示,對應串行不對稱卷積(中高層特徵圖適用)7*7 -> 1*7,7*1,減少計算量
4. 平衡深度和寬度
tricks:
Label smoothing , 通過權重調節,改變真實標籤分佈,達到正則化效果,阻止最大的Logit過於自信,增強泛化能力。

 

④Xception

1. 基於inception的假設,特徵圖的跨通道相關性與空間相關性已充分解耦合,不需要聯合映射。
2. 極限的inception,把空間卷積與通道卷積分離,參數量和計算量大大減小
計算量:

⑤SEnet

一句話:通道注意力機制,顯示地建模特徵通道之間的相互依賴關係,選擇性的強調部分特徵,抑制其他特徵
1. Squeeze, 把每個通道信息壓縮生成通道描述符,使用gap。
2. Excitation, 對通道信息建模生成權重
3. 加權輸出新的feature
存在一個bottleneck

 

⑥cbam

同時進行通道注意力機制以及空間注意力機制,採用maxpooling與averpooling一起做gap
空間注意力機制,即在一個像素點的位置所有通道內的點進行gap。


⑦MoblieNet系列, 記好論文題目
V1: efficient cnn for moble

1. 使用深度可分離卷積,參數和計算量少
2. Relu6 (低精度下魯棒性高)
Dw -> bn -> relu6 -> 1*1 conv -> bn -> relu
引入一個減少參數量的超參數:
所有層的 通道數乘以 α 參數,模型大小近似下降到原來的 α 2 倍,計算量下降到原來的 α 2 倍


V2: inverted residuals and liner bottlenecks

1. 引入殘差連接
2. 引入倒置瓶頸結構(與resnet相反),因爲維度過低導致特徵提取不充分,故先升維後降維。
升維1*1 -> bn -> relu6 -> dw -> bn -> relu6 -> 降維 1*1
3. 替換relu6爲線性連接 (relu在低維的時候容易破壞特徵)


v3: serching for mb3
1. 使用mnasnet作爲基礎的模塊(nas搜索出來的資源受限的網絡結構)
2. 引入senet,通道注意力機制,對某些特徵重點關注
3. 使用h-swish(reLu實現),替換swish的複雜操作(適配更多硬件),使用hard形式逼近swish的函數曲線。
swish函數,nas搜索得到

只在後半網絡使用, 因網絡加深,使用非線性激活函數的計算量越小
網絡開銷主要在卷積計算上,輕量級網絡主要是1*1卷積,1*1卷積不需要Img2col,更快。


⑧shuffleNet

a. 輸入通道與輸出通道相同的時候,mac會在flops相同的情況下減少,特徵圖以及卷積核參數量是mac
(輸入特徵圖存儲hwc1,輸出特徵圖存儲hwc2,以及權重存儲1*1*c1*c2)

推導關鍵是令c2這一步,化簡之後可以根據a+b>=2*sqrt(ab)得到,c1=c2時最小
b. 過量使用組卷積會增加mac,分組數要選好
c. 碎片化網絡會降低並行度,影響速度(inception, 多路結構)
d. 注意元素級操作,add操作等

 

⑨Efficient-net

1. 優化目標,基礎結構不變例如k,s

2. 複合擴張方法, 根據算力改變縮放係數即可

3. 求解方式:

 

 

 

縮放的核心在於2的次方,次方是1的時候代表算力是B0的2倍,後續例如算力提升10倍,2的3.3次方等於10,那麼縮放係數就是3
但是缺點是推理速度不快:相同的flops,element-wise能處理更多的數據量,通過處理更多的數據量來貼合給你精度,但是大量數據讀取受限於gpu帶寬,導致推理速度慢。如果利用相同的數據量訓練,逐元素卷積在精度上比普通卷積低。


⑩Dilated conv

1. 在避免使用down sampling 時增大感受野, 實現方式是在普通卷積核中插入0,atros爲多少就插入幾個0
2. 感受野計算方式:(r*s)+ (k-s) , 帶洞卷積感受野計算就先算出模擬多大卷積核(k+d*(k+1)),然後帶入公式即可
3. 缺點,使用單一尺度的dilated conv不能同時處理不同大小物體的關係,故轉向多級的形式,如aspp
附:多尺度語義分割的形式:①image pyramid ② unet類 ③ASPP ④SPP(不同尺度池化,然後拉成一維,拼接起來,固定維度)
帶來棋盤效應,解決方法:去掉最開始的池化;漸進式的空洞卷積;去掉殘差

 

⑩①DCN

出發點:圖像中目標的尺寸形狀變化不一
一句話:使網絡在提取特徵的時候把注意力聚焦在訓練目標上,覆蓋不同形狀尺寸的目標,動態調整感受野
1. 可形變卷積
兩層結構,上層通過卷積學習到offset(卷積核個數2*k*k,對應每個位置的x,y偏置),下層根據offset先調整位置,再使用卷積提取特徵
2. 可形變ROI POOLING
兩層結構,上層提取ROI通過FC學習到offset(FC輸出節點2*bin個數), 下層根據offset先調整位置,再使用Roi pooling

 

⑩②SKNET

split -> fuse -> select
1.首先使用不同的卷積覈對原圖進行卷積
下面就是split attention的步驟:
2.逐元素相加不同特徵圖,gap->fc->softmax,學習每個通道佔的比重(與senet一樣,先gap再壓縮維度,在擴展到原維度)
3.比重乘回原通道,各個組直接相加。


⑩③ResNest

 

可以認爲是senet、sknet、resnext的集大成。
1. 先resnext類似,分成大組(減小計算量)
2. 把每個大組,借鑑sknet,分成幾個分支(可選核分支,模型靈活性,多感受野)
3. 再用sknet的合併,split attendion, 先得到每個分支的通道權重(senet),分別相乘後再相加
4. 最後 concat 每個大組
使用的Mixup數據增強方法: 把兩張圖片按權重線性相加,一張圖片中出現兩張圖片的目標

⑩④CSPnet

提出原因:發現大量重複的梯度信息被用來更新不同密集層的權重。 這將導致不同的密集層重複學習相同梯度信息
cspnet使得網絡結構能夠實現更加豐富的梯度組合信息,同時減小計算量。
通過將基礎的特徵圖劃分成兩部分,(同一個特徵圖送入兩個不同的卷積,兩個卷積輸出的通道數減半)然後通過提出的跨階段層次結果將他們融合。主要概念是截斷梯度流,截斷後加一個過渡層,使梯度流通過不同的網絡路徑傳播,防止不同的層學習重複的梯度信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章