卷積神經網絡的網絡結構中,卷積層后接 P o o l i n g Pooling Pooling層。輸入為 4 × 4 4×4 4×4大小的圖像矩陣,卷積層參數為 ( p a d d i n g = s a m e , k e r n e l = 2 ) (padding=same,kernel=2) (padding=same,kernel=2),卷積層后輸出特征矩陣大小為 [ 2 , 4 , 4 ] [2,4,4] [2,4,4]。(卷積層有n個卷積核對應輸出有n個特征圖)
假設卷積層輸入為一張4×4大小的圖像矩陣(對應輸入神經元有 16 (4×4)個〉,設定卷積核為2,經過卷積操作后產生2個4×4大小的特征圖(對應輸出特征神經元有32(2×4×4)個)。其中,卷積核大小為3×3(一個卷積核由9個神經元組合而成),即對應的權重參數連接線有18(2×3×3)條,輸入神經元與特征神經元連接線均帶有權值參數 w i w_i wi?和偏置 b i b_i bi?,而該權值參數則由卷積核組成。
Same Padding是根據卷積核大小,對輸入圖像矩陣進行邊界補充(一般填充零值),使得卷積后得到的特征矩陣與輸入矩陣大小一致。避免邊界信息被忽略,把邊界信息納入神經網絡的計算范圍內,否則隨著神經網絡層的深入,圖像邊緣信息的損失也會逐漸增大。
Valid Padding實際上不需要進行Padding操作
自定義Padding生成的特征圖大小根據下式計算而來。 o u t p u t h = ( i n p u t h + 2 × p a d d i n g h ? k e r n e l h ) / s t r i d e + 1 o u t p u t w = ( i n t p u t w + 2 × p a d d i n g w ? k e r n e l w ) / s t r i d e + 1 o u t p u t 為輸出矩陣, i n p u t 為輸入矩陣, p a d d i n g 為邊界填充數量 k e r n e l 為卷積核大小, s t r i d e 為步長大小, w 為操作矩陣的寬, h 為操作矩陣的長 output_h=(input_h+2\times padding_h - kernel_h)/stride+1 \\ output_w=(intput_w+2\times padding_w - kernel_w)/stride+1 \\ output為輸出矩陣,input為輸入矩陣,padding為邊界填充數量 \\ kernel為卷積核大小,stride為步長大小,w為操作矩陣的寬,h為操作矩陣的長 outputh?=(inputh?+2×paddingh??kernelh?)/stride+1outputw?=(intputw?+2×paddingw??kernelw?)/stride+1output為輸出矩陣,input為輸入矩陣,padding為邊界填充數量kernel為卷積核大小,stride為步長大小,w為操作矩陣的寬,h為操作矩陣的長
Padding操作的兩種主要方式,如圖(a)輸入 5 × 5 5\times 5 5×5的圖像矩陣。卷積核大小為 3 × 3 3\times 3 3×3。Same Padding方法設置padding參數為 1 1 1,使卷積的輸出與輸入矩陣大小一致。圖(b) V a l i d P a d d i n g Valid Padding ValidPadding方法設置 p a d d i n g padding padding參數為 0 0 0,使得輸出特征矩陣比輸入矩陣要小。
一般默認卷積操作中使用 Same Padding 方法。通過對輸入圖像矩陣的邊緣填充零像素值,使得輸入的圖像經過卷積后得到的特征矩 陣大小與輸入的原圖大小一致。
假設一個卷積核窗口在輸入圖像上滑動,滑動窗口每次移動的步長為 stride,那么每次滑動窗口后,把求得的值按照空間順序組成一個特征圖。該特征圖的邊長分別為: f e a t u r e m a p w = ( i m g w ? k e r n e l w ) / s t r i d e + 1 f e a t u r e m a p w = ( i m g w ? k e r n e l h ) / s t r i d e + 1 f e a t u r e m a p 為特征圖矩陣的大小, i m g 為輸入圖像大小 k e r n e l 為卷積核大小, s t r i d e 為步長大小, w 為矩陣的寬, h 為矩陣的長。 feature map_w = (img_w - kernel_w) / stride +1 \\ feature map_w =(img_w - kernel_h) / stride+1 \\ feature map為特征圖矩陣的大小,img為輸入圖像大小 \\ kernel為卷積核大小,stride為步長大小,w為矩陣的寬,h為矩陣的長。 featuremapw?=(imgw??kernelw?)/stride+1featuremapw?=(imgw??kernelh?)/stride+1featuremap為特征圖矩陣的大小,img為輸入圖像大小kernel為卷積核大小,stride為步長大小,w為矩陣的寬,h為矩陣的長。
網絡卷積層操作
在第 l l l層網絡有 C C C個特征圖作為輸入,該卷積層有 k k k個卷積核,如何進行卷積操作產生 k k k個輸出特征矩陣?
假設在第 l l l層卷積層輸入為C個特征圖,即該層輸入C個矩陣,C個矩陣的大小均為 W × H W \times H W×H,可以得到一個 C × ( W × H ) C \times (W \times H) C×(W×H)的特征張量, C C C又稱為輸入矩陣的深度。該層設定有 C o u t Cout Cout個 K × K K \times K K×K大小卷積核,在使用 S a m e P a d d i n g Same Padding SamePadding的情況下將會產生 C o u t Cout Cout個大小為 W × H W \times H W×H的特征圖作為輸出,即可得到 C o u t × ( W × H ) Cout \times (W \times H) Cout×(W×H)的特征張量作為輸出。
多層卷積操作類似于神經元的基本求和公式 z = ∑ w x + b z=\sum wx+b z=∑wx+b,卷積神經網絡中 w w w對應單個卷積核, x x x為對應輸入矩陣的不同數據窗口, b b b為該卷積核的偏置。這相當于卷積核與一個個數據窗口相乘求和后(矩陣內積計算),加上偏置b得到輸出結果。 z = x 11 ⊙ w 1 + w 21 ⊙ w 1 + b = ( x 11 + x 21 ) ⊙ w 1 + b \begin{align*} z &=x_{11} \odot w_1+w_{21} \odot w_1+b \\ &=(x_{11}+x_{21}) \odot w_1+b \end{align*} z?=x11?⊙w1?+w21?⊙w1?+b=(x11?+x21?)⊙w1?+b?
使用Image to column ( Im2col)算法把輸入圖像和卷積核轉換成為規定的矩陣排列方式。
使用GEMM算法對轉換后的兩個矩陣進行相乘,得到卷積結果。
Im2col算法
圖像的Im2col操作:假設輸入的圖像大小為 C × H × W C \times H \times W C×H×W(其中H為圖像的長, W W W為圖像的寬, C C C為圖像的深度)。卷積核的大小為 K × K K \times K K×K,那么對應輸入圖像中一個卷積窗口可以表示為 C × ( K × K ) C \times (K \times K) C×(K×K)的向量,即對輸入圖像中的某位置的數據按照卷積窗口進行從新排列,得到 C × ( K × K ) C\times (K \times K) C×(K×K)的特征向量。以步長為 1 ( s t r i d e = 1 ) 1 (stride=1) 1(stride=1) 從輸入圖像的左上角開始對原圖進行特征轉換,最終得到特征圖大小為 ( H × W ) × ( C × K × K ) (H \times W)\times (C \times K \times K) (H×W)×(C×K×K)。
卷積核的Im2col操作:假設有 C o u t Cout Cout個卷積核,每個卷積核大小為 C × ( K × K ) C\times (K \times K) C×(K×K) ,把卷積核進行矩陣變換,得到單個卷積核的尺寸為 C × ( K × K ) C \times (K\times K) C×(K×K)。依此類推,最終得到 C o u t × ( C × K × K ) Cout \times (C \times K \times K) Cout×(C×K×K) 大小的過濾矩陣(Filter Matrix)。
一般矩陣乘法(General Matrix Matrix Multiply, GEMM)將由卷積核產生的過濾矩陣乘以原圖產生的特征圖矩陣(Feature Matrix)的轉置,得到大小為 C o u t × ( H × W ) Cout \times (H \times W) Cout×(H×W)的輸出特征圖矩陣。 f e a t u r e m a p = F i l t e r M a t r i x ? F e a t u r e M a t r i x T = [ ( C o u t × ( C × H × W ) ) ] ? [ ( ( C × H × W ) × ( H × W ) ) ] = C o u t × H × W \begin{align*} feature map &=Filter Matrix \cdot Feature Matrix^T \\ &=[(Cout\times (C \times H \times W))]^\ast [((C \times H \times W)\times(H \times W))] \\ &=Cout\times H \times W \end{align*} featuremap?=FilterMatrix?FeatureMatrixT=[(Cout×(C×H×W))]?[((C×H×W)×(H×W))]=Cout×H×W?
假設卷積核為 2 × 2 2×2 2×2的矩陣,輸入原圖像Image為 3 × 3 3×3 3×3的單通道矩陣。邊界擴展為0,滑動步長為1( p a d d i n g = 0 , s t i d e = 1 , c = 1 , w = 3 , h = 3 , k = 2 padding=0,stide=1,c=1,w=3,h=3,k=2 padding=0,stide=1,c=1,w=3,h=3,k=2)。因此過濾矩陣的長寬w、 h均減少了1,經過Im2col變換后特征圖矩陣的大小為 ( 2 × 2 ) × ( 1 × 2 × 2 ) (2 \times 2) \times (1 \times 2 \times 2) (2×2)×(1×2×2) Image = [ 3 2 1 0 1 2 3 1 1 ] ? Feature?Matrix = [ 3 2 0 1 2 1 1 2 0 1 1 3 1 2 1 1 ] \text{Image} = \begin{bmatrix}3 & 2 & 1 \\ 0 & 1 & 2 \\ 3 & 1 & 1\end{bmatrix} \Rightarrow \text{Feature Matrix} = \begin{bmatrix}3 & 2 & 0 & 1 \\ 2 & 1 & 1 & 2 \\ 0 & 1 & 1 & 3 \\ 1 & 2 & 1 & 1\end{bmatrix} Image=?303?211?121???Feature?Matrix=?3201?2112?0111?1231??
假設有2個大小均為2×2 的卷積核A、 B ( c o u t = 2 , c = 1 , k = 2 ) (cout=2, c=1, k=2) (cout=2,c=1,k=2),因此過濾矩陣大小為 2 × ( 1 × 2 × 2 ) 2 \times (1\times 2 \times 2) 2×(1×2×2) A = [ 0 1 1 2 ] , B = [ 2 1 1 3 ] ? Filter?Matrix = [ 0 1 1 2 2 1 1 3 ] A = \begin{bmatrix}0 & 1 \\ 1 & 2\end{bmatrix}, \quad B = \begin{bmatrix}2 & 1 \\ 1 & 3\end{bmatrix} \Rightarrow \text{Filter Matrix} = \begin{bmatrix}0 & 1 & 1 & 2 \\ 2 & 1 & 1 & 3\end{bmatrix} A=[01?12?],B=[21?13?]?Filter?Matrix=[02?11?11?23?]
本文提供一種解決 Buildroot SIGSTKSZ 報錯途徑
解決途徑來源參考:Buildroot error when building with Ubuntu 21.10 其出現原因在于 GNU C Library 2.34 release announcement: Add _SC_MINSIGSTKSZ and _SC_SIGSTKSZ. When _DYNAMIC_STACK_SIZE_SOU…
VS-Assistant: Versatile Surgery Assistant on the Demand of Surgeons
?? 論文標題:VS-Assistant: Versatile Surgery Assistant on the Demand of Surgeons ?? 論文作者:Zhen Chen, Xingjian Luo, Jinlin Wu, Danny T. M. Chan, Zhen Lei, Jinqi…
目錄
一、核心特點
二、原生 IP 的常見應用
三、原生 IP vs. 數據中心 IP
四、如何獲取原生 IP?
五、原生 IP 的優缺點
六、實際案例 原生 IP(Native IP) 是指由互聯網服務提供商(ISP)直接分配給用戶的 IP 地址&…
在日常辦公或學習中,我們經常需要將 Word 文檔(.docx格式)轉換為 PDF 文件。這不僅有助于保持文檔格式的一致性,還能確保接收者無需特定軟件即可查看文件內容。本文將詳細介紹幾種常見的方法來實現從 DOCX 到 PDF 的轉換ÿ…