天天看點

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

卷積(Convolution)

卷積神經網絡一直都是計算機視覺任務的标配。卷積有兩個基本的性質:

  • 空間不變性(spatial-agnostic)

    空間不變性使得卷積能夠在所有位置共享參數,并充分利用視覺特征的“平移等變性”。

  • 通道特異性(channel-specific)

    通道特異性使得卷積能夠充分模組化通道之間的關系,提高模型的學習能力。

卷積過程

  • Standard Convolution
    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

    設 X ∈ R H × W × C i X \in R^{H \times W \times C_i} X∈RH×W×Ci​是輸入的特征圖像, H , W H,W H,W是特征圖的高度和寬度, C i C_i Ci​是輸入的通道數。在特征向量 X X X的立方體内部,位于圖像點陣單元中的每個特征向量 X i , j ∈ R C i X_{i,j} \in R^{C_i} Xi,j​∈RCi​認為是代表某些進階語義模式的像素。

    一組固定核大小為 K × K K \times K K×K的 C 0 C_0 C0​卷積濾波器表示為 F ∈ R C 0 × C i × K × K F \in R ^{C_0 \times C_i \times K \times K} F∈RC0​×Ci​×K×K, 其中每個濾波器 F k ∈ R C i × K × K , k = 1 , 2 , . . . , C 0 F_k \in R ^{C_i \times K \times K}, k=1,2,...,C_0 Fk​∈RCi​×K×K,k=1,2,...,C0​,包含 C i C_i Ci​卷積核 F k , c ∈ R K × K , c = 1 , 2 , . . . , C i F_{k,c} \in R ^{K \times K}, c=1, 2, ..., C_i Fk,c​∈RK×K,c=1,2,...,Ci​。并以滑動視窗的方式對輸入特征圖執行乘加運算以産生輸出特征圖 Y ∈ R H × W × C 0 Y \in R^{H \times W \times C_0} Y∈RH×W×C0​

    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
    其中, Δ K ∈ Z 2 \Delta K \in Z^2 ΔK∈Z2是指考慮在中心像素上進行卷積的鄰域中的一組偏移量, × \times ×表示笛卡爾積。
    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
  • Depthwise Convolution
    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

    不同于正常卷積操作,Depthwise Convolution的一個卷積核負責一個通道,一個通道隻被一個卷積核卷積。正常卷積每個卷積核是同時操作輸入圖檔的每個通道。Depthwise Convolution完成後的Feature map數量與輸入層的通道數相同,無法擴充Feature map。而且這種運算對輸入層的每個通道獨立進行卷積運算,沒有有效的利用不同通道在相同空間位置上的feature資訊。是以需要Pointwise Convolution來将這些Feature map進行組合生成新的Feature map。即Depthwise層,隻改變feature map的大小,不改變通道數。

    深度卷積将組卷積 的公式推到了極緻,其中每個過濾器(實際上退化為單個核心) G k ∈ R K × K , k = 1 , 2 , ⋅ ⋅ ⋅ , C o G_k \in R^{K×K}, k = 1, 2, · · · ,Co Gk​∈RK×K,k=1,2,⋅⋅⋅,Co,對由 k k k 索引的單個特征通道嚴格執行卷積,是以在假設輸出通道數等于輸入通道數的情況下,從 F k F_k Fk​ 中消除第一維以形成 G k G_k Gk​。 就目前而言,卷積運算變為

    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
    請注意,從通道的角度來看,核心 G k G_k Gk​ 特定于第 k k k 個特征切片 X ⋅ , ⋅ , k X·,·,k X⋅,⋅,k,并在該切片内的所有空間位置之間共享。
  • Pointwise Convolution
    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
    Pointwise Convolution的運算與正常卷積運算非常相似,它的卷積核的尺寸為 1×1×M,M為上一層的通道數。是以這裡的卷積運算會将上一步的map在深度方向上進行權重組合,生成新的Feature map。有幾個卷積核就有幾個輸出Feature map。即Pointwise層隻改變通道數,不改變大小。
  • Depthwise Separable Convolution

    depthwise層,隻改變feature map的大小,不改變通道數。而Pointwise 層則相反,隻改變通道數,不改變大小。這樣将正常卷積的做法(改變大小和通道數)拆分成兩步走。是将一個完整的卷積運算分解為兩步進行,即Depthwise Convolution與Pointwise Convolution。

卷積分類

二維卷積有full卷積、same卷積核valid卷積。例如:3x3的二維張量 x x x和2x2的二維張量 K K K進行卷積。

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
  • full卷積

    full卷積的計算過程是: K K K沿着 x x x從左到右,從上到下移動,每移動一個固定位置,對應位置的值相乘再求和,計算過程如下:

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
  • same卷積

    假設卷積核的長度為FL,如果FL為奇數,錨點位置在 ( F L − 1 ) / 2 (FL-1)/2 (FL−1)/2處,如果FL為偶數,錨點位置在 ( F L − 2 ) / 2 (FL-2)/2 (FL−2)/2處。

    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
    卷積核K都有一個錨點,然後将錨點從左到右,從上到下移動到張量想的每一個位置處,對應位置相乘再求和,計算過程如下:
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
  • valid卷積

    對于full卷積,如果K靠近x,就會有部分延伸到x之外,valid卷積值考慮x能完全覆寫K的情況,即K在x的内部移動的情況,計算過程如下:

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
  • 三種卷積類型的關系
    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
  • 具有深度的二維卷積

    比如x是一個長度為3、寬度為3、深度為2的張量,卷積核K是一個長度為2、寬度為2、深度為2的張量.

    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
    其valid卷積過程如下,卷積核K的錨點在張量x範圍内從左到右,從上到下移動,輸入張量的深度和卷積核的深度是相等的。
    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
  • 具備深度的張量與多個卷積核的卷積

    1個3行3列2深度的x 與 3個2行2列2深度的卷積核卷積:

    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

Involution

CVPR’21|Involution:超越Convolution和Self-Attention的神經網絡新算子是作者和SENet的作者胡傑一起完成的,分享了作者對網絡結構設計(CNN和Transformer)的了解。

主要貢獻:

  • 提出了一種新的神經網絡算子(operator或op)稱為Involution,它比Convolution更輕量更高效,形式上比Self-Attention更加簡潔,可以用在各種視覺任務的模型上取得精度和效率的雙重提升。
  • 通過Involution的結構設計,能夠以統一的視角來了解經典的卷積操作和近來流行的自注意力操作。

Motivation與Convolution的反對稱性

普通convolution的kernel享有空間不變性(spatial-agnostic)和通道特異性(channel-specific)兩大基本特性;而involution則恰恰相反,具有通道不變性(channel-agnostic)和空間特異性(spatial-specific)。

Convolution

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
  • 空間不變性
    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
  • 通道特異性
    Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

Involution

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

Discussion與Self-Attention的相關性

Self-Attention

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結
Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

Vision Transformer

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

實驗結果

總體來講:

  • 參數量、計算量降低,性能反而提升。
  • 能加在各種模型的不同位置替換Convolution,比如backbone,neck和head,一般來講替換的部分越多,模型成本效益越高。

ImageNet圖像分類

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

我們使用involution替換ResNet bottleneck block中的3x3 convolution得到了一族新的骨幹網絡RedNet,性能和效率優于ResNet和其他self-attention做op的SOTA模型。

COCO目标檢測和執行個體分割

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

其中fully involution-based detectors(involution用在backbone,neck和head)在保證性能略有提升或不變的前提下,能夠将計算複雜度減至~40%。

Cityscapes語義分割

Involution-Convolution卷積(Convolution)InvolutionConvolution和Involution總結

COCO檢測任務中針對大物體的名額 A P L AP_L APL​提升最多(3%-4%),Cityscapes分割任務中也是大物體(比如牆,卡車,公共汽車等)的單類别IoU提升最明顯(高達10%甚至20%以上),這也驗證了我們在之前分析中所提到的involution相比于convolution在空間上具有動态模組化長距離關系的顯著優勢。

Convolution和Involution總結

Convolution更加關注于通道進行的互動,是以在空間次元上進行參數共享;Involution更加關注于空間次元上的資訊模組化,是以在通道次元上進行了參數共享。但是在實際應用中很可能是通道資訊和空間資訊都是非常重要的,是以如果能夠在空間和通道次元上都基于一定的偏置進行必要的參數共享,達到更好的speed-accuracy trade off。

參考資料

Involution:Inverting the Inherence of Convoution for Visual Recognition(2021)

d-li14/involution

Involution(附對Involution的思考):港科大、位元組跳動、北大提出“内卷”神經網絡算子,在CV三大任務上提點明顯

深度學習面試題10:二維卷積(Full卷積、Same卷積、Valid卷積、帶深度的二維卷積)

Depthwise Convolution與普通卷積的差別以及其他卷積方法

CVPR’21 | involution:超越convolution和self-attention的神經網絡新算子

Involution=Inverse-Convolution,反着來的卷積?内卷?

繼續閱讀