『壹』 卷積層在神經網路中如何運算
卷積神經網路(Convolutional Neural Networks, CNN)的核心是進行卷積運算操作。在實際應用中往往採用多層網路結構,因此又被稱為深度卷積神經網路。本文將從單個卷積的計算出發,帶大家掌握卷積層在神經網路中的運算方法。
2.1 單個卷積的計算
要想了解卷積層在神經網路中的計算過程,我們首先需要了解單個「卷積」是如何運作的。
想必大家在學習CNN的過程中都見過下圖( 出處在此 ,這上面有各種各樣的卷積gif圖):
input_shape=(5,5),kernelsize=(3,3),padding=『same』,stride=1,output_shape=(5,5)
在此圖中:
在此次計算中:
Ps: 在實際應用中,每一個輸出的特徵圖還會配備一個偏置s,在上圖中無表示。
2.2 卷積層在神經網路中的運算
了解完單個卷積是如何計算的之後,我們就可以從神經網路的角度來看『卷積層』的運算過程了。下圖展示的是輸入三通圖像(8*8*3)經一層卷積結構,輸出兩通特徵圖(8*8*2)的計算過程:
卷積參數:input_shape=(8,8,3),kernelsize=(3,3),padding=『same』,stride=1,output_shape=(8,8,2)
在此圖中:
在此次卷積層的運算中:
首先我們來關注一下輸入和輸出,他倆的尺度都是(8*8),而輸入是3通道,輸出是2通道(深度學習中不管幹啥一定要先看輸入輸出,對一層是這樣,對整個模型也是這樣)。
其次就准備進入我們最熟悉的卷積核計算了,可是在此之前我們得知道,這個運算過程中到底發生了幾次卷積核計算呢?有的朋友可能要說,卷積的一大特性就是『權值共享』,有幾通輸出就有幾個卷積核,每個卷積核把輸入特徵圖從頭掃到尾。然而這個其實是不對的!
實際上,在卷積核計算數量問題上,應該是「 有幾通道的輸出就有幾套卷積核,每套內的卷積核數量與輸入通道數相等 」,就像我在上圖中所畫的:
至此,這一個卷積層的運算就全部完成了。
2.3 「可訓練參數」驗證
畢竟空口無憑,下面我來通過「 可訓練參數 」的數量,來為大家驗證一下卷積層是不是按我說的這么運算的。大家應該知道,一個卷積層內的「可訓練參數」,其實就是指的卷積核里的那些值,以及要加的偏置量,那麼如果按照前面描述的計算方法來看,一個卷積層內的「可訓練參數有多少呢」?我們可知:
由此可得到:
那麼按理說可訓練參數量應為:
讓我們用keras的summary()來驗證一下:
很棒!
記住,普通卷積層的可訓練參數量為:
Ps: 還有一個衡量模型大小、復雜度的量叫做「理論計算量FLOPs」(floating point operations)。它通常只考慮Conv、FC等參數層的乘、加操作的數量,並且「純加」操作也會被忽略(例如bias)。卷積層運算中的FLOPs計算公式為:
Ps: 這里還要為大家明確一個「感受野」的概念,簡單來講就是卷積神經網路中的某一層特徵圖上的一個點,對應到原圖上可以關聯到多少個點,我們用一張圖來解釋一下:
上圖展示的是一個3層一維卷積,kernel_size=3,我們可以看到:頂層左一的像素與底層左起7個像素值有關,這時候就代表它的感受野有7。我們可以顯而易見的得出以下兩個結論:
這個感受野在後續的卷積的拆分講解中還要用到。
『貳』 【神經網路-卷積】常規卷積、空洞卷積、多尺度卷積、分組卷積、可分離卷積、DCN形變卷積
卷積是神經網路中提取特徵的主要手段。其基本目的是從輸入圖像中提取不同特徵,進而構建抽象的高層語義特徵或全局特徵,以提升模型的精度或推理速度。卷積的實現方式包括常規卷積、空洞卷積、多尺度卷積、分組卷積、可分離卷積以及形變卷積(DCN)。
常規卷積是基礎形式,通過卷積核在圖像上滑動並計算對應元素的乘積和,實現特徵提取。它的關鍵參數包括卷積核尺寸、填充和步長。計算公式依據這些參數進行輸出尺寸的計算。
空洞卷積,也稱為膨脹卷積,通過在卷積核中插入空洞來擴大感受野,增強模型在不同尺度特徵上的捕捉能力。空洞率決定了空洞的數量,進而影響感受野的大小。在語義分割任務中,如Deeplab系列,空洞卷積效果顯著。
多尺度卷積針對輸入圖像中目標尺寸的變化,通過多個分支卷積提取不同感受野的特徵。減少計算量的優化方法是引入1×1卷積,但手工設計痕跡明顯。Inception系列即是多尺度卷積的應用。
分組卷積旨在減少參數量和計算量。它將輸入特徵圖的channel分組,進行局部卷積後拼接,但存在信息流通不暢的問題。為解決這一問題,可採用通道混洗技術,如ShuffleNet網路結構。
可分離卷積通過將原始卷積拆解為1×n和n×1兩個步驟,分別進行逐層卷積和逐點卷積,從而顯著降低計算量。Depthwise Convolution聚焦於通道內信息處理,Pointwise Convolution負責跨通道融合。移動設備上的網路,如MobileNet,廣泛採用此技術。
形變卷積(DCN)針對目標檢測場景,通過學習采樣點的偏移,以適應不同形狀的目標。DCN在目標檢測應用中,如DCN v1和DCN v2模塊,展現了優越性能,但計算成本較高,且難以實現tensorRT加速。
綜上所述,卷積及其變體在神經網路中扮演著核心角色,通過不同方法優化參數量、計算效率以及特徵提取能力,以適應不同的應用場景和需求。