PeLK:101 x 101 的超大卷積網絡,同參數量下反超 ViT | CVPR 2024

最近,有一些大型內核卷積網絡的研究,但考慮到卷積的平方複雜度,擴大內核會帶來大量的參數,繼而引發嚴重的優化問題。受人類視覺的啓發,論文提出了外圍卷積,通過參數共享將卷積的複雜性從 \(O(K^{2})\) 降低到 \(O(\mathrm{log} K)\),有效減少 90% 以上的參數數量並設法將內核尺寸擴大到極限。在此基礎上,論文提出了參數高效的大型內核網絡(PeLK),將CNN的內核大小擴展到前所未有的\(101\times 101\),性能的也在持續提升。

來源:曉飛的算法工程筆記 公衆號

論文: PeLK: Parameter-efficient Large Kernel ConvNets with Peripheral Convolution

Introduction


ViT的強大性能歸因於其巨大的感受野,在自注意力機制的幫助下可以從大的空間範圍捕獲上下文信息並建模遠程依賴關係。受此啓發,CNN的最新進展表明,當配備大內核(例如 \(31\times31\) )時,純CNN架構在各種視覺任務上的表現可以與最先進的ViT相當甚至更好。

  雖然大核卷積網絡表現出強大的性能和吸引人的效率,但其相對於核大小 \(K\) 的平方複雜度 \({O}(K^{2})\) 會帶來大量的參數。例如,\(31\times31\) 內核的參數比 \(3\times3\) 內核的參數大 100 倍以上。爲了解決這一問題:

  • RepLKNet將大內核重參數化爲並行的 \(5\times 5\) 內核,從而彌補優化問題。
  • SLaK妥協地使用條帶卷積將複雜度降低爲線性,並擴展到 \(51\,\times\,51\)(即 \(51\times 5\)\(5\times 51\))。

  然而,這對於下游任務的分辨率來說仍然是有限的交互範圍(例如ADE20K上的 \(2048\times 512\))。此外,條帶卷積缺乏密集卷積的範圍感知,可能會破壞模型的空間感知能力。

  論文先在統一的現代框架(即SLaK)下對卷積形式進行了全面的剖析,驗證了密集網格卷積在不同內核大小下均優於條帶卷積的猜想。這種現象不僅適用於分類任務,而且適用於下游任務,這表明密集卷積相對於條帶形式的本質優勢。然而,大密集卷積的平方複雜度導致參數激增阻礙其進一步縮放,是個亟需解決的問題。

  與卷積或自注意力的密集計算不同,人類視覺擁有更高效的視覺處理機制,稱爲周邊視覺。具體來說,人類視覺根據到注視中心的距離將整個視野分爲中心區域和周邊區域,並且中心區域的感光細胞數量是周邊區域的100倍以上。這樣的生理結構賦予了人類視覺具有模糊感知的特點:中心區域感知力強,看得很清楚,能識別形狀和顏色;而在外圍區域,視野變得模糊,分辨率降低,只能識別抽象的視覺特徵,例如運動和高級上下文。這種機制使人類能夠僅通過一小部分視野(\(<5 \%\))即可感知重要細節,同時最大限度地減少剩餘部分(\(>95\%\))中不必要的信息,從而促進人腦的高效視覺處理。

  受人類視覺的啓發,論文提出一種新穎的外圍卷積,將卷積的參數複雜度從 \(O(K^{2})\) 降低到 \(O(\mathrm{log} K)\),同時保持密集的計算形式。外圍卷積由三種設計組成:

  • 聚焦和模糊機制。在卷積核的中心區域保留細粒度的獨立參數,在外圍區域則使用大範圍的共享參數。
  • 呈指數級增加的共享粒度。共享網格以指數級增長的方式增長,這比固定粒度更有效。
  • 內核級位置嵌入。引入內核級位置嵌入,以優雅且廉價的方式解決因大範圍的外圍共享而導致的細節模糊問題。

  基於外圍卷積,論文提出了參數高效的純CNN大型內核網絡(PeLK),其有效感受野(ERF)與參數量呈指數增長。在精心設計的參數共享機制的幫助下,PeLK以非常小的參數成本擴展了內核大小,實現了極大的密集內核(例如 \(51\times 51\)\(101\times 101\)),並具有持續的改進。PeLK在各種視覺任務中實現了最先進的性能,在配備極大的內核尺寸時展示了純CNN架構的潛力。

PeLK被證明能夠覆蓋比之前的大型內核模型更大的ERF區域,這是其強大的性能所在。更有趣的是,論文的實驗分析和消融實驗表明,外圍卷積的最佳設計原理與人類視覺具有驚人的相似性,這表明受生物學啓發的機制可以成爲設計強大的現代網絡的有希望的候選者。

Dense Outperforms Stripe Consistently


  論文通過SLaKRepLKNet研究密集網格卷積是否比條紋卷積更好,先在ImageNet訓練得到預訓練模型,然後將預訓練模型作爲UperNet的主幹網絡在ADE20K上進行訓練和對比。

SLaK通過兩個步驟將內核擴大到 \(51\times 51\):1) 將大內核分解爲兩個並行的矩形內核;2)使用動態稀疏性並擴大網絡寬度。爲了徹底分析卷積形式的效果,論文進行了帶稀疏性和不帶稀疏性的實驗。默認情況下,像SLaKRepLKNet所採取的方法,重參數化 \(5\times 5\) 卷積來緩解優化問題。表 1 的結果表明,無論動態稀疏性如何,密集網格卷積都超過了條帶卷積。

  論文進一步探索不同內核大小下的卷積形式(即 \(K \times K\)\(K\times N\)),將SLaK的條帶卷積的短邊固定爲 5 作爲默認設置(\(N=5\)),然後逐漸將 \(K\) 從 51 減少到 7。期間不使用動態稀疏性,方便對卷積形式進行純粹的對比。如圖 2 所示,密集網格卷積在多個內核尺寸下始終優於條帶卷積,並且增益隨着內核尺寸的增加而增加,這表明密集網格大內核卷積的本質優勢。

  但是,密集網格卷積的平方複雜度會導致參數量激增。如圖 2 所示,條帶卷積的內核從 7 放大到 51 只會帶來 \(7.3\times\) 參數,而密集卷積則爲 \(53.1\times\)。考慮到人類的周邊視覺中外圍區域只有少量的感光細胞,論文認爲密集參數對於外圍區域的相互作用不是必需的。受此啓發,論文尋求通過引入周邊視覺機制來降低參數複雜度,同時保留密集計算以保持密集卷積的強大性能。

Parameter-efficient Large Kernel Network


Peripheral Convolution

  標準的2D卷積核由4D向量組成:\(w \in \mathbb{R}^{c_\mathrm{in}\times c_{\mathrm{out}}\times\mathrm{k}\times\mathrm{k}}\),其中 \(c_{\mathrm{in}}\) 爲輸入通道數,\(c_{\mathrm{out}}\) 爲輸出通道數,\(\mathrm{k}\) 爲空間核維度。論文通過空間參數共享來將 \(w\) 參數化爲更小的內核 \(w_{\theta} \in \mathbb{R}^{C_\mathrm{in}\times c_{\mathrm{out}}\times\mathrm{k}^{\prime}\times\mathrm{k}^{\prime}}\),其中 \(0<\mathrm{k}^{\prime}\le\mathrm{k}\)

  首先,定義共享網格 \(S=[s_{0},s_{1},\ldots,s_{\mathbf{k^{\prime}-1}}]\),其中 \(\sum_{i=0}^{k^{\prime} -1} s_i=k\)。根據 \(S\),將 \(k\times k\) 位置劃分爲 \(k^{\prime}\times k^{\prime}\)區域:

\[\begin{array}{c} {{\mathrm{for~}a,b=0,1,\ldots,k^{\prime}-1,}} \\ {{Z_{a,b}=\{(x,y)|\sum_{i=0}^{a-1}s_{i}<\sum_{i=0}^{a}s_{i},\sum_{j=0}^{b-1}s_{j}\le y<\sum_{j=0}^{b}s_{j}\}}} \end{array} \quad\quad(1) \]

  爲了簡潔起見,規定 \(\sum_{i=0}^{-1}s_{i}=0\)。對於任意位置 \((x,y)\in Z_{a,b}\),設置 \(w(x,y)=w_\theta(a,b)\)。這樣就可以利用一個小核來參數化一個大核,實現空間上的參數共享,如圖 1a 所示。

  接下來進行下一步升級,將共享網格重新表示爲軸對稱形式:\(S = [\bar{s}_{−r}, \bar{s}_{−r+1},\cdots,\bar{s}_{-1},\bar{s}_{0},\bar{s}_{1},\cdots,\bar{s}_{r-1},\bar{s}_{r}]\),其中 \(r=\frac{{k}^{\prime}-1}{2}\),爲 \(w_{\theta}\) 的核半徑。

  類似於人類的周邊視覺,共享網格主要由兩個核心設計組成:

  • 聚焦和模糊機制。如圖 1b 所示,將細粒度參數保留在卷積核的中心區域,其對應共享網格設置爲 1 (即不共享)。對於外圍區域,利用大範圍參數共享來探索外圍視覺的空間冗餘。
  • 呈指數級增加的共享粒度。受人類視覺的啓發,論文設計了以指數級的方式增長的共享網格。這種設計可以優雅地將卷積的參數複雜度從 \(O(K^{2})\) 降低到 \(O(\log K)\),從而可以進一步擴大密集卷積的內核大小。具體來說,共享網格 \(S\) 的構造如下:

\[\bar{s}_{i} = \begin{cases}{{{1},}}&{{\mathrm{if}\ \ \vert i\vert\le\ r_{c}}}\\ {{{m}^{(\vert i\vert-r_{c})},}}&{{\mathrm{if}\ \ r_{c}\lt\vert i\vert\le\ r}}\end{cases} \quad\quad(2) \]

  其中 \(r_{c}\) 是中心細粒度區域的半徑,\(m\) 是指數增長的基數,默認設置爲 2。

Kernel-wise Positional Embedding

  儘管外圍卷積能夠有效地減少密集卷積的參數,但大範圍的參數共享可能導致外圍區域的局部細節模糊。尤其當內核大小以外圍卷積的形式放大到 50 以上甚至 100 以上時,這種現象會進一步放大,單個參數需要處理 \(8\times8\) 甚至 \(16\times16\) 外圍區域。

  爲了解決這個問題,論文提出了基於內核的位置嵌入。給定一組輸入特徵 \(X\),通過權值爲 \(w \in \mathbb{R}^{c_{in}\times c_{out}\times k\times k}\) 的卷積來處理這些特徵。使用trunc normal來初始化位置嵌入 \(h \in \mathbb{R}^{c_{in}\times k\times k}\)

  輸出位置 \((x,y)\) 處的卷積計算爲:

\[Y(x,y)=\sum_{i=-r_{\mathrm{w}}}^{r_{\mathrm{w}}}\sum_{j=-r_{\mathrm{w}}}^{r_{\mathrm{w}}}\mathrm{w}(i,j)\cdot\left(X(x+i,y+j)+\mathrm{h}(i,j)\right) \quad\quad(3) \]

  其中 \(Y\) 是輸出,\(r_{w}\) 是內核 \(w\) 的半徑,設置爲 \(r_{w}=\frac{k-1}{2}\)

  如圖 3 所示,通過引入位置嵌入,可以區分共享區域中的特定位置,從而彌補共享帶來的局部細節模糊的問題。實際上,這可以被視爲向輸入特徵添加相對位置信息的偏置。值得注意的是,同一個階段中的所有內核共享相同的位置嵌入 \(h\),因此 \(h\) 帶來的額外參數可以忽略不計。這種設計以一種廉價而優雅的方式解決了由於共享權重而導致的位置不敏感問題,特別是對於非常大的內核。

Partial Peripheral Convolution

  大型內核卷積網絡已被證明具有高度通道冗餘性,非常適合進行稀疏化。外圍卷積使得論文能夠設計具有更強空間感知能力的大型密集卷積,因此可以進一步優化大卷積的通道冗餘。

  論文引入了一種Inception風格的設計,其中只有特徵圖的部分通道將通過卷積進行處理。整體設計遵循一個簡單的理念:更多的恆等映射來優化通道冗餘。具體來說,對於輸入 \(X\),沿着通道維度將其分爲兩組,

\[\begin{align} X_{\mathrm{conv}},X_{\mathrm{id}} &= \mathrm{Split}(X) \notag \\ &= X_{:,:,:g},X_{:,:,g:} \notag \end{align} \quad\quad(4) \]

  其中 \(g\) 是卷積分支的通道數,默認設置爲 \(\frac{3}{8}C_{in}\)。然後將分割後的輸入分別輸入外圍卷積和恆等映射:

\[\begin{align} X^{\prime}_{\mathrm{conv}} &= \mathrm{Periphera\ Conv}(X_{\mathrm{conv}}) \notag \\ X^{\prime}_{\mathrm{id}} &= X_{\mathrm{id}} \notag \end{align} \quad\quad(5) \]

  最後,將兩個分支的輸出連接起來以恢復原始形狀:

\[X^{\prime}=\mathrm{Concat}(X^{\prime}_{\mathrm{conv}},X^{\prime}_{\mathrm{id}}). \quad\quad(6) \]

  這種設計可以看作是Inception類型結構的特例,如InceptionShufflenetInceptionNeXt。他們在並行分支中使用不同的運算符,而論文采用更簡單的設計:僅外圍卷積和恆等映射。這種設計非常適合具有極大內核的外圍卷積,可顯著減少FLOP而不會產生降低性能。

Architecture Specification

  基於上述設計和觀察,論文設計了參數高效的大型內核網絡(PeLK)的架構,按照ConvNeXtSLaK來構建多種尺寸的模型:

  • 採用了 4 階段的框架。
  • stem 包含一個 \(4\times 4\) 內核和 4 步幅的卷積層。
  • 對於tinysmall/base大小的模型,各階段的塊數量是分別爲 \([3,3,9,3]\)\([3,3,27,3]\)
  • 不同階段的內核大小默認爲 \([51,49,47,13]\)。對於PeLK-101,內核大小放大至 \([101,69,67,13]\)
  • 默認情況下,保持中心 \(5\times 5\) 區域作爲細粒度。對於PeLK-101,中心區域則放大到 \(7\times 7\)
  • 遵循SLaK的設計,使用動態稀疏性來增強模型容量,所有超參數設置相同(\(1.3\times\) 網絡寬度,40% 稀疏度)。

Experiments


  對於語義分割,在ADE20K上評估PeLK作爲主幹網絡的效果。

  對於目標檢測/分割,在MS-COCO上使用Cascade Mask R-CNN進行實驗。

  對於圖像分類,在ImageNet-1K上進行對比。

  表 5 展示不同共享粒度的性能對比。由於網格是軸對稱的,表格中僅表示半個網格。

  表 6 展示了不同中心細粒度內核大小的性能對比。

  表 7 展示了不同內核大小配置的性能對比。

  圖 4 展示不同模型最後一層對輸入圖片的感受野對比。

  圖 5 中對語義分割中使用的PeLK-T架構的FLOP進行詳細的分類。

  表 8 中比較了推理吞吐量。

  圖 6 展示了內核縮放對模型參數量的影響。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公衆號【曉飛的算法工程筆記】

work-life balance.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章