动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升|ICLR 2021
本文首發(fā)于極市平臺公眾號,作者Happy。轉載需獲得授權并標明出處。
paper: https://arxiv.org/abs/2103.08756
code: https://github.com/liyunsheng13/dcd
本文是微軟&加大圣地亞哥分校的研究員在動態(tài)卷積方面的一次突破性的探索,針對現(xiàn)有動態(tài)卷積(如CondConv、DY-Conv)存在的參數(shù)量大、聯(lián)合優(yōu)化困難問題,提出了一種動態(tài)通道融合機制替換之前的動態(tài)注意力。相比CondConv與DY-Conv,所提DCD以更少的參數(shù)量取得了更佳的性能。以MobileNetV2為例,所提方法僅需CondConv25%的參數(shù)量,同時可取得0.6%的性能提升(75.2% vs 74.6%)。本文對動態(tài)卷積進行了更為深入的解釋,值得各位同學研讀一番。
Abstract
近期關于動態(tài)卷積的一些研究表明:源于K個靜態(tài)卷積核的自適應集成,動態(tài)卷積可以有效的提升現(xiàn)有CNN的性能。然而動態(tài)卷積同樣存在兩個局限:(1) 提升了卷積核參數(shù)量(K倍);(2)動態(tài)注意力與靜態(tài)卷積核的聯(lián)合優(yōu)化極具挑戰(zhàn)性。
我們從矩陣分解的角度對動態(tài)卷積進行了重思考并揭示了其中的關鍵問題:動態(tài)卷積是將動態(tài)注意力映射到高維隱空間后再對通道組進行動態(tài)關注。為解決該問題,我們提出采用動態(tài)融合替換作用于通道組的動態(tài)注意力。動態(tài)通道融合不僅有助于降低隱空間的維度,同時可以緩解聯(lián)合問題問題。因此,所提方法更易于訓練,僅需要更少的參數(shù)量且不會造成性能損失。
Dynamic Neural Network
動態(tài)卷積不同于常規(guī)卷積的地方在于:動態(tài)卷積的卷積核參數(shù)會隨著輸入的變換而動態(tài)的發(fā)生變化;而常規(guī)卷積則對任意輸入均采用相同的卷積核參數(shù)。
在CNN領域知名的SE注意力機制就是一種知名的動態(tài)網(wǎng)絡,它可以根據(jù)輸入自適應的調(diào)整每個通道的加權系數(shù);SKNet則是在不同尺寸的核上自適應調(diào)整注意力信息;谷歌的CondConv與微軟的DY-Conv不約而同的采用類似“三個臭皮匠賽過諸葛亮”的思想自適應集成融合多個靜態(tài)卷積核。
動態(tài)神經(jīng)網(wǎng)絡包含但不限于這里所提到的卷積核自適應調(diào)整,同時還包含自適應深度的神經(jīng)網(wǎng)絡、自適應輸入分辨率的神經(jīng)網(wǎng)絡等等(可參考上圖)。關于動態(tài)神經(jīng)網(wǎng)絡更系統(tǒng)的介紹可參考綜述:《Dynamic Neural Network A Survey》。這里提供一個比較全面的動態(tài)神經(jīng)網(wǎng)絡的類型圖,更詳細的建議查看上述綜述。
Dynamic Convolution Decomposition
動態(tài)卷積的最本質(zhì)思想是根據(jù)輸入動態(tài)的集成多個卷積核生成新的權重參數(shù):
W(x)=∑k=1Kπk(x)Wks.t.0≤πk(x)≤1,∑k=1Kπk(x)=1W(x) = \sum_{k=1}^K \pi_k(x)W_k \\ s.t. 0 \le \pi_k(x) \le 1, \sum_{k=1}^K \pi_k(x) = 1 W(x)=k=1∑K?πk?(x)Wk?s.t.0≤πk?(x)≤1,k=1∑K?πk?(x)=1
目前比較知名的動態(tài)卷積有:谷歌提出的CondConv、MSRA提出的DY-Conv、華為提出的DyNet等等。然而動態(tài)卷積有兩個主要的局限性:
- 緊致性的缺失;
- 聯(lián)合優(yōu)化問題。
針對上述兩個問題,從矩陣分解角度出發(fā),我們將動態(tài)卷積表示成如下形式:
Wk=W0+ΔWk,k∈{1,?,K}W_k = W_0 + \Delta W_k , k \in \{1,\cdots, K\} Wk?=W0?+ΔWk?,k∈{1,?,K}
其中W0=1K∑WkW_0= \frac{1}{K} \sum W_kW0?=K1?∑Wk?表示均值核,ΔWk=Wk?W0\Delta W_k = W_k -W_0ΔWk?=Wk??W0?表示殘差核矩陣。對后者采用SVD進行更進一步的分解:ΔWk=UkSkVkT\Delta W_k = U_k S_k V_k^TΔWk?=Uk?Sk?VkT?,此時有:
W(x)=∑πk(x)W0+∑πk(x)UkSkVkT=W0+UΠ(x)SVTW(x) = \sum \pi_k(x)W_0 + \sum \pi_k(x)U_kS_kV_k^T = W_0 + U\Pi(x)SV^T W(x)=∑πk?(x)W0?+∑πk?(x)Uk?Sk?VkT?=W0?+UΠ(x)SVT
下圖給出了上述矩陣分解的示意圖,也就是說:通過分解,W(x)W(x)W(x)的動態(tài)特性可以通過動態(tài)殘差UΠ(x)SVTU\Pi(x)SV^TUΠ(x)SVT實現(xiàn),而動態(tài)殘差則是將輸入x投影到了更高維空間SVTxSV^TxSVTx,然后再實施動態(tài)注意力Π(x)\Pi(x)Π(x)。這也就意味著:常規(guī)動態(tài)卷積的局限性源于通道組上的注意力,它引入了一個高維隱空間,導致較小的注意力值可能會抑制相應核的學習。
Dynamic Channel Fusion
為解決上述問題,我們提出了Dynamic Convolution Decomposition(DCD),它采用動態(tài)通道融合替換動態(tài)注意力。所提DCD基于全動態(tài)矩陣Φ(x)\Phi(x)Φ(x)進行通道融合,見上圖右,動態(tài)殘差的實現(xiàn)可以表示為PΦ(x)QTP\Phi(x)Q^TPΦ(x)QT。動態(tài)通道融合的關鍵創(chuàng)新在于:Φ(x)\Phi(x)Φ(x)可以顯著的減少隱空間的維度。基于動態(tài)通道融合的動態(tài)卷積可以表示如下:
W(x)=W0+PΦ(x)QT=W0+∑i=1L∑j=1Lpi?i,j(x)qjTW(x) = W_0 + P\Phi(x)Q^T = W_0 + \sum_{i=1}^L \sum_{j=1}^L p_i \phi_{i,j}(x) q_j^T W(x)=W0?+PΦ(x)QT=W0?+i=1∑L?j=1∑L?pi??i,j?(x)qjT?
其中Q∈RC×LQ \in R^{C\times L}Q∈RC×L用于將輸入壓縮到低維空間QTx∈RLQ^Tx \in R^LQTx∈RL,所得L個通道通過Φ(x)\Phi(x)Φ(x)進行動態(tài)融合,并通過PPP擴展到輸出通道。這個過程即為動態(tài)卷積分解。隱空間的維度L通過L2<CL^2 < CL2<C進行約束,默認設置為?C2?log2C??\lfloor \frac{C}{2^{\lfloor log_2 \sqrt{C} \rfloor}} \rfloor?2?log2?C??C??。
通過上述方式,靜態(tài)卷積參數(shù)量可以顯著減少(LCv.s.?KV2LC \text{ v.s. } KV^2LC?v.s.?KV2),進而可以得到一個更緊致模型。
與此同時,動態(tài)通道融合同時還緩解了常規(guī)動態(tài)卷積的聯(lián)合優(yōu)化問題。由于P與Q的每一列均與多個動態(tài)系數(shù)相關,因此pip_ipi?的學習幾乎不太可能被少量幾個小的動態(tài)系數(shù)抑制。
總而言之,DCD采用了與常規(guī)動態(tài)卷積不同的動態(tài)集成形式,可以描述如下:
- 常規(guī)動態(tài)卷積采用共享的注意力機制在高維隱空間集成不共享的靜態(tài)基向量;
- DCD再采用了不共享的動態(tài)通道融合機制在低維隱空間集成共享的靜態(tài)基向量。
General Formulation
前面內(nèi)容主要聚焦于動態(tài)殘差部分,并提出了動態(tài)通道融合機制實現(xiàn)動態(tài)卷積。接下來,我們將討論一下靜態(tài)核W0W_0W0?。在這里,我們對其約束∑kπx(x)=1\sum_k \pi_x(x)=1∑k?πx?(x)=1進行松弛得到了更廣義形式:
W(x)=Λ(x)W0+PΦ(x)QTW(x) = \Lambda(x) W_0 +P\Phi(x)Q^T W(x)=Λ(x)W0?+PΦ(x)QT
其中Λ(x)\Lambda(x)Λ(x)為C×CC\times CC×C對角矩陣,也就是說:Λ(x)\Lambda(x)Λ(x)在靜態(tài)核上實現(xiàn)了通道級注意力。而這種廣義形式可以進一步提升模型性能。
注意事項:這里的動態(tài)通道注意力與SE類似但不同,不同之處如下:
- Λ(x)\Lambda(x)Λ(x)并行于卷積,且與卷積共享輸入x;計算復雜為min(O(C2),O(HWC))min(O(C^2), O(HWC))min(O(C2),O(HWC));
- SE則是位于卷積之后,并以卷積的輸出作為輸入;計算復雜度為O(HWC)O(HWC)O(HWC)。
- 很明顯,當特征圖的分辨率較大時,SE需要更多的計算量。
Implementation
上圖給出了DCD的實現(xiàn)示意圖,它采用輕量的動態(tài)分支生成動態(tài)通道注意力Λ(x)\Lambda(x)Λ(x)于動態(tài)通道融合Φ(x)\Phi(x)Φ(x)。該動態(tài)分支的實現(xiàn)與SE類似:均值池化+兩個全連接層。最后基于上述公式生成最終的卷積核參數(shù)。類似于靜態(tài)卷積,DCD同樣后接BatchNorm與非線性激活層。
在計算復雜度方面,DCD具有與常規(guī)動態(tài)卷積相似的復雜度。因此,我們主要針對參數(shù)量進行簡單的分析。靜態(tài)卷積與常規(guī)動態(tài)卷積的參數(shù)量分別為C2,KC2C^2, KC^2C2,KC2;而DCD的參數(shù)量則是C2+2CL+(2C+L2)CrC^2+2CL+(2C+L^2)\frac{C}{r}C2+2CL+(2C+L2)rC?。由于L2<CL^2 < CL2<C,故參數(shù)量上限為(1+3/r)C2+2CC(1+3/r)C^2 +2C\sqrt{C}(1+3/r)C2+2CC?。當r=16r=16r=16時,其參數(shù)量則約為1116C21\frac{1}{16}C^21161?C2,這遠小于DynamicConv的4C24C^24C2與CondConv的8C28C^28C2。
Extension
前面的介紹主要是以1×11\times 11×1卷積為例進行介紹分析,接下來,我們采用三種方式對其進行擴展:(a) 稀疏動態(tài)殘差;(b) k×kk \times kk×k深度卷積;? $ k\times k$卷積。
Sparse Dynamic Residual
動態(tài)殘差PΦ(x)QTP\Phi(x)Q^TPΦ(x)QT可以進一步簡化為塊對角陣形式PbΦb(x)QbT,b∈{1,?,B}P_b\Phi_b(x)Q_b^T, b\in\{1,\cdots,B\}Pb?Φb?(x)QbT?,b∈{1,?,B},可以表示如下:
W(x)=Λ(x)W0+?b=1BPbΦb(x)QbTW(x) = \Lambda(x)W_0 + \bigoplus_{b=1}^{B} P_b \Phi_b(x) Q_b^T W(x)=Λ(x)W0?+b=1?B?Pb?Φb?(x)QbT?
其中?i=1nAi=diag(A1,?,An)\bigoplus_{i=1}^n A_i = diag(A_1,\cdots,A_n)?i=1n?Ai?=diag(A1?,?,An?)。這種形式具有一個特殊形式:B=1。即靜態(tài)核仍為全矩陣,僅僅動態(tài)殘差部分是稀疏的,下圖給出了該特殊形式的示意圖。在后續(xù)的實驗中,我們會表明:B=8時可以取得最小的性能衰減,但仍會比靜態(tài)核具有更好的性能。
k×kk \times kk×k深度卷積
k×kk \times kk×k深度卷積的權值構成了C×k2C\times k^2C×k2矩陣,DCD可以對前述公式中Q采用矩陣R 替換得到:
W(x)=Λ(x)W0+PΦ(x)QTW(x) = \Lambda(x) W_0 +P\Phi(x)Q^T W(x)=Λ(x)W0?+PΦ(x)QT
其中,W(x),W0W(x), W_0W(x),W0?均為C×k2C\times k^2C×k2矩陣,Λ(x)\Lambda(x)Λ(x)不變?nèi)詾閷蔷仃?#xff0c;Q∈Rk2×LkQ \in R^{k^2 \times L_k}Q∈Rk2×Lk?用于降低核元素數(shù)量;Φ(x)∈RLk×Lk\Phi(x) \in R^{L_k \times L_k}Φ(x)∈RLk?×Lk?用于動態(tài)融合,而P則是C×LkC\times L_kC×Lk?用于LkL_kLk?個核元素上進行深度卷積。我們默認Lk=?k2/2?L_k=\lfloor k^2/2 \rfloorLk?=?k2/2?。由于深度卷積是通道分離的,故Φ(x)\Phi(x)Φ(x)不進行通道融合,而是進行隱核元素融合。
k×kk\times kk×k卷積
由于k×kk\times kk×k卷積核形式為C×C×k2C\times C \times k^2C×C×k2,DCD可以通過如下公式進行擴展:
W(x)=W0×2Λ(x)+Φ(x)×1Q×2P×3RW(x) = W_0 \times_2 \Lambda(x) + \Phi(x) \times_1 Q \times_2 P \times_3 R W(x)=W0?×2?Λ(x)+Φ(x)×1?Q×2?P×3?R
這里的參數(shù)含義與深度卷積部分類似,默認參數(shù):Lk=?k2/2?,L=?C/Lk2?log2C/Lk??L_k =\lfloor k^2/2 \rfloor, L=\lfloor \frac{C/L_k}{2^{\lfloor log_2\sqrt{C/L_k} \rfloor}} \rfloorLk?=?k2/2?,L=?2?log2?C/Lk???C/Lk???
我們發(fā)現(xiàn):Φ(x)×1Q\Phi(x)\times_1 QΦ(x)×1?Q要比Φ(x)×3R\Phi(x)\times_3 RΦ(x)×3?R更重要。因此,我們將LkL_kLk?降低到1,并將L對應提升。此時,R簡化為one-hot向量。上圖給出了該形式下的動態(tài)卷積示意圖。從上圖b可以看到:動態(tài)殘差僅僅具有一個非零切片,這等價于1×11\times 11×1卷積。因此**k×kk\times kk×k卷積的DCD等價于在靜態(tài)核上添加了1×11\times 11×1動態(tài)殘差**。
Experiments
為驗證所提方案的有效性,我們在ImageNet數(shù)據(jù)集上的進行了一系列的對比試驗&消融實驗。基線模型包含ResNet與MobileNetV2,ResNet中的所有卷積均采用DCD實現(xiàn),而MobileNetV2則對所有1×11\times 11×1卷積采用DCD實現(xiàn)。
上圖比較了DCD不同成分的影響性分析(在兩個輕量型模型上進行了對比),從中可以看到:
- 相比靜態(tài)卷積,兩個動態(tài)成分Λ(x),Φ(x)\Lambda(x), \Phi(x)Λ(x),Φ(x)均可顯著提升模型的精度;
- 相比動態(tài)通道注意力,動態(tài)通道融合具有稍高的精度、參數(shù)量以及FLOPs;而兩者的組合則可以進一步提升模型性能。
上表給出了所提方法與其他動態(tài)卷積的性能對比,可以看到:DCD可以顯著減少模型參數(shù)量,同時提升模型的精度。比如MobileNetV2x1.0,DCD僅需更少(DynamicConv50%、CondConv25%)的參數(shù)量的參數(shù)量即可達到相當?shù)木?#xff1b;在ResNet18上,它僅需DynamicConv33%的參數(shù)量,且以0.4%指標優(yōu)于DynamicConv。
全文到此結束,更多消融實驗與分析建議各位同學查看原文。
總結
以上是生活随笔為你收集整理的动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升|ICLR 2021的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 目标检测一卷到底之后,终于又有人给它挖了
- 下一篇: 图像反光能被一键去除了?港科大开源RFC