面經(jīng)|計算機視覺面試復習筆記(二)卷積神經(jīng)網(wǎng)絡

極市導讀
?本文總結了一些關于卷積神經(jīng)網(wǎng)絡的面試知識點。?>>加入極市CV技術交流群,走在計算機視覺的最前沿
計算機視覺面試復習筆記:深度學習基礎-神經(jīng)網(wǎng)絡
二、卷積神經(jīng)網(wǎng)絡
在介紹卷積神經(jīng)網(wǎng)絡之前我們先了解一下為什么不使用我們上一節(jié)介紹的神經(jīng)網(wǎng)絡(全連接層結構)來處理圖像。使用全連接層結構處理圖像時會出現(xiàn)以下問題:
輸入圖像需要將圖像通過 Flatten 層拉成一維,這會導致丟失空間信息(像素位置和channel)
全連接層考慮的是全局的信息,但在分類圖像中,重要的是物體本身的局部信息
對圖像做分類時,會產(chǎn)生大量的參數(shù),導致計算量過高。例如:對1000×1000 像素的圖片,我們就需要處理3百萬個參數(shù)。
2.1 卷積神經(jīng)網(wǎng)絡的組成
卷積神經(jīng)網(wǎng)絡通過卷積層提取圖像特征,不僅大幅的減少了參數(shù)量,還保留了圖像的空間信息。

如上圖簡單的卷積神經(jīng)網(wǎng)絡所示,卷積神經(jīng)網(wǎng)絡主要架構是由卷積層、池化層、全連接層組成。
卷積層負責提取圖像中的局部特征,卷積層后面一般會加上ReLU層進行非線性激活
池化層用來大幅降低參數(shù)量級(降維)
全連接層類似傳統(tǒng)神經(jīng)網(wǎng)絡的部分,用來輸出想要的結果。
2.2 卷積層
卷積層負責提取圖像中的局部特征,其原理是通過許多的卷積核(filter, kernel) 在圖片上進行滑動提取特征。
下圖是卷積滑動的過程,左中右分別為輸入層、卷積核、輸出層

卷積核 (filter, kernel)
卷積核里面的數(shù)字就是卷積層的權重,是經(jīng)由神經(jīng)網(wǎng)絡訓練學習而來的。而卷積核的大小 (kernel size) 及數(shù)量 (輸出 channel) 是可以調(diào)整的超參數(shù),通常會設定為奇數(shù),其原因有兩個:
可以保證padding時候,圖像的兩邊依然相對稱
在做目標檢測時,能夠獲得中心點,可以更好的預測目標位置
輸出層為卷積運算后的結果,稱為特征圖 (feature map)
卷積運算
卷積運算的方式就是將滑動的窗口與卷積核進行點對點 (elementwise) 的相乘,再將乘完的值相加

卷積的參數(shù)
Kernel size: 定義卷積核的大小,影響卷積操作的感受野,一般使用3x3,5x5 等
Stride: 定義遍歷圖像時卷積核移動的步長
Channel: 定義卷積運算的輸入和輸出通道數(shù)
Padding: 定義如何處理樣本邊界的方式,分為不填充或者對邊界填充0,不填充的只對特征圖做卷積操作,會使得輸出的特征圖小于輸入的特征圖;對邊界填充0,可以使得輸入和輸出的特征圖保持一致
卷積的感受野
感受野是每一層卷積神經(jīng)網(wǎng)絡輸出的特征圖上的特征點映射到原始圖像上的區(qū)域的大小,即特征點可以“看到”的范圍。描述的原始圖像信息,能夠表達的信息越全面。
感受野的計算公式如下:
其中,L表示感受野的大小, 是第k-1層的感受野大小,而 是當前層的卷積核大小, 是第i層的步長。卷積層(F0)的感受野大小等于其內(nèi)核k的大小。

F0層:L0 = f = 3
F1層:L1=3+(3-1)*1=5;
具體來說,當前特征圖的感受野與上層空間有關,與當前層核心的大小,與填充和步幅相關。感受野的大小可以大于網(wǎng)絡輸入的大小。
卷積的類型
常見的卷積類型有很多,根據(jù)其操作的區(qū)域大致可以分為兩類:通道相關性、空間相關性。
通道相關性的卷積核改變了卷積在channel維度操作,如:Group Convolution、Depthwise Separable Convolutions;
空間相關性的卷積核是改變了卷積在w,h維度的操作。除了這兩類近年來也出現(xiàn)了一些新的改進思路:如動態(tài)卷積,空洞卷積。
Group Convolution(分組卷積)
Group Convolution(分組卷積)就是對輸入feature map在channel維度進行分組,然后每組分別卷積。設分成G組,參數(shù)量減少為原來的1/G。如下圖所示:

Depthwise Convolution
當分組卷積分組數(shù)量等于輸入map數(shù)量,輸出map數(shù)量也等于輸入map數(shù)量,即G=C=N、N個卷積核每個尺寸為1?K?K時,Group Convolution就成了Depthwise Convolution(深度卷積)。
Depthwise Separable Convolution
Depthwise Separable Convolutions(深度可分離卷積) 是由 Depthwise Separable Convolution是將一個完整的卷積運算分解為兩步進行,即Depthwise Convolution與Pointwise Convolution。

Pointwise Convolution的運算與常規(guī)卷積運算非常相似,它的卷積核的尺寸為 1×1×M,M為上一層的通道數(shù)。所以這里的卷積運算會將上一步的map在深度方向上進行加權組合,生成新的Feature map。有幾個卷積核就有幾個輸出Feature map。
2.3 池化層 &下采樣層 pooling
池化層是用來大幅降低參數(shù)量(降維)、減少過擬合問題、緩解卷積層對位置的敏感度。空間池化層也被稱為子采樣或下采樣層,它降低了每個特征圖的維度但保留了重要信息,簡單來說池化層主要用來縮小特征圖的大小減少計算量。池化層主要有以下兩種類型:
最大池化(max pooling):就是在框選的局部數(shù)值中挑出最大值
平均池化(Average pooling):就是在框選的局部數(shù)值做求和去平均

上采樣
由于輸入圖像通過卷積神經(jīng)網(wǎng)絡(CNN)提取特征后,輸出的尺寸往往會變小,而有時我們需要將圖像恢復到原來的尺寸以便進行進一步的計算(如圖像的語義分割),這個使圖像由小分辨率映射到大分辨率的操作,叫做上采樣,它的實現(xiàn)一般有三種方式:
插值,插值法不需要學習任何的參數(shù),只是根據(jù)已知的像素點對未知的點進行預測估計,一般使用的是雙線性插值,其他插值方式還有最近鄰插值、三線性插值等;
轉(zhuǎn)置卷積又或是說反卷積,通過對輸入feature map間隔填充0,再進行標準的卷積計算,可以使得輸出feature map的尺寸比輸入更大;
Max Unpooling,在對稱的max pooling位置記錄最大值的索引位置,然后在unpooling階段時將對應的值放置到原先最大值位置,其余位置補0;

2.4 展平層 Flatten Layer
Flatten層的作用就是將卷積層與池化層輸出的特征展平、做維度的轉(zhuǎn)換,如此一來才能放入全連接層做分類
2.5 全連接層
全連接層,其作用是用來進行分類。將卷積層與池化層輸出的特征輸入到全連接層,通過調(diào)整權重及偏差得到分類的結果。
如果覺得有用,就請分享到朋友圈吧!
公眾號后臺回復“CVPR21檢測”獲取CVPR2021目標檢測論文下載~

#?CV技術社群邀請函?#

備注:姓名-學校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳)
即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術交流群
每月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

