caffe中1 1的卷積核的作用

2021-08-10 20:24:01 字數 1930 閱讀 6513

1×1的卷積大概有兩個方面的作用吧:

1. 實現跨通道的互動和資訊整合

2. 進行卷積核通道數的降維和公升維

下面詳細解釋一下:

1. 這一點孫琳鈞童鞋講的很清楚。1×1的卷積層(可能)引起人們的重視是在nin的結構中,**中林敏師兄的想法是利用mlp代替傳統的線性卷積核,從而提高網路的表達能力。文中同時利用了跨通道pooling的角度解釋,認為文中提出的mlp其實等價於在傳統卷積核後面接cccp層,從而實現多個feature map的線性組合,實現跨通道的資訊整合。而cccp層是等價於1×1卷積的,因此細看nin的caffe實現,就是在每個傳統卷積層後面接了兩個cccp層(其實就是接了兩個1×1的卷積層)。

2. 進行降維和公升維引起人們重視的(可能)是在googlenet裡。對於每乙個inception模組(如下圖),原始模組是左圖,右圖中是加入了1×1卷積進行降維的。雖然左圖的卷積核都比較小,但是當輸入和輸出的通道數很大時,乘起來也會使得卷積核引數變的很大,而右圖加入1×1卷積後可以降低輸入的通道數,卷積核引數、運算複雜度也就跟著降下來了。以googlenet的3a模組為例,輸入的feature map是28×28×192,3a模組中1×1卷積通道為64,3×3卷積通道為128,5×5卷積通道為32,如果是左圖結構,那麼卷積核引數為1×1×192×64+3×3×192×128+5×5×192×32,而右圖對3×3和5×5卷積層前分別加入了通道數為96和16的1×1卷積層,這樣卷積核引數就變成了1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32),引數大約減少到原來的三分之一。同時在並行pooling層後面加入1×1卷積層後也可以降低輸出的feature map數量,左圖pooling後feature map是不變的,再加卷積層得到的feature map,會使輸出的feature map擴大到416,如果每個模組都這樣,網路的輸出會越來越大。而右圖在pooling後面加了通道為32的1×1卷積,使得輸出的feature map數降到了256。googlenet利用1×1的卷積降維後,得到了更為緊湊的網路結構,雖然總共有22層,但是引數數量卻只是8層的alexnet的十二分之一(當然也有很大一部分原因是去掉了全連線層)。

最近大熱的msra的resnet同樣也利用了1×1卷積,並且是在3×3卷積層的前後都使用了,不僅進行了降維,還進行了公升維,使得卷積層的輸入和輸出的通道數都減小,引數數量進一步減少,如下圖的結構。(不然真不敢想象152層的網路要怎麼跑起來tat)

對於多通道和多個卷積核的理解,1×1卷積核大概有兩方面的作用:

1.實現跨通道的互動和資訊整合(具有線性修正特性,實現多個feature map的線性組合,可以實現feature map在通道個數上的變化,想象成跨通道的pooling,(輸入的多通道的feature map和一組卷積核做卷積求和得到乙個輸出的feature map)

2.進行卷積核通道數的降維和公升維(同時還具有降維或者公升維功能)

3.在pooling層後面加入的1×1的卷積也是降維,使得最終得到更為緊湊的結構,雖然有22層,但是引數數量卻只是alexnet的1/12.

4.最近大熱的msra的resnet也利用了1×1的卷積,並且是在3×3卷積層的前後都使用了,不僅進行了降維,還進行了公升維,使得卷積層的輸入和輸出的通道數都減小,數量進一步減少。如果1×1卷積核接在普通的卷積層後面,配合啟用函式,就可以實現network in network的結構了。

5.還有乙個很重要的功能,就是可以在保持feature map尺度不變的(即不損失解析度)的前提下大幅增加非線性特性(利用後接的非線性啟用函式),把網路做的很deep。(平均池化是針對每個feature map的平均操作,沒有通道間的互動,而1×1卷積是對通道的操作,在通道的維度上進行線性組合)

1 1卷積核的作用

如何理解跨通道的資訊互動和整合呢?首先還得從三維卷積的計算開始。如圖所示,藍色部分是乙個7 7 n 維數 的feature map,黃色塊為3 3 3的卷積核,將卷積核對應到藍色特徵中可以得到乙個紅色陰影區域,舉個具體的例子 假設卷積核所有的引數都為1。那麼紅色部分的數值 1 1 4 1 3 1 2...

1 1卷積核在卷積神經網路中的作用

1 1卷積過濾器和正常的過濾器一樣,唯一不同的是它的大小是1 1,沒有考慮在前一層區域性資訊之間的關係。最早出現在 network in network的 中 使用1 1卷積是想加深加寬網路結構 在inception網路 going deeper with convolutions 中用來降維,如下...

談談1 1的卷積核

最近在看yolo3,發現對於1 1的卷積核的理解有些遺忘,藉此強化一下記憶。最早我對此有些疑惑,1 1卷積核不會改變高 height 和寬 width 在stride和padding等其他引數為預設狀態時 但 通道數 channel 可以隨意變化,例如在pytorch中 nn.conv2d 256,...