CVPR2022 | 在線Re-Param | OREPA讓AI訓練速度進一步加快,精度略勝RepVGG!
1簡介結構重參化在各種計算機視覺任務中引起了越來越多的關注。它的目的是提高深度模型的性能,而不引入任何推理時間成本。雖然這種模型在推理過程中很有效,但它嚴重依賴于復雜的training-time block來實現較高的準確性,從而導致了巨大的額外訓練成本。
在本文中提出了在線卷積重參化(OREPA),一個兩階段的pipeline,旨在通過將復雜的training-time block壓縮成單個卷積來減少巨大的訓練開銷。為了實現這一目標,本文引入了一個線性縮放層,以更好地優(yōu)化在線塊。在降低訓練成本的幫助下,作者還探索了一些更有效的重參組件。與最先進的重參模型相比,OREPA能夠節(jié)省約70%的training-time成本,并加速訓練速度約2×。同時,配備OREPA,模型在ImageNet上的方法高出+0.6%。作者還進行了目標檢測和語義分割的實驗,并顯示了對下游任務的一致改進。
卷積神經網絡(CNNs)已經在許多計算機視覺任務的應用成功,包括圖像分類、目標檢測、語義分割等。精度和模型效率之間的權衡也已被廣泛討論。
一般來說,一個精度較高的模型通常需要一個更復雜的塊,一個更寬或更深的結構。然而,這樣的模型總是太重,無法部署,特別是在硬件性能有限、需要實時推理的場景下??紤]到效率,更小、更緊湊和更快的模型自然是首選。
為了獲得一個部署友好且高精度的模型,有研究者提出了基于結構重參數化的方法來釋放性能。在這些方法中,模型在訓練階段和推理階段有不同的結構。具體來說,使用復雜的訓練階段拓撲,即重參數化的塊,來提高性能。訓練結束后,通過等效變換將一個復雜的塊重參為成一個單一的線性層。重參后的模型通常具有一個整潔架構模型,例如,通常是一個類似VGG的或一個類似ResNet的結構。從這個角度來看,重參化策略可以在不引入額外的推理時間成本的情況下提高模型的性能。
BN層是重構模型的關鍵組成部分。在一個重新解析塊(圖1(b))中,在每個卷積層之后立即添加一個BN層??梢杂^察到,去除這些BN層會導致的性能退化。然而,當考慮到效率時,這種BN層的使用出乎意料地在訓練階段帶來了巨大的計算開銷。在推理階段,復雜的塊可以被壓縮成一個卷積層。但是,在訓練過程中,BN層是非線性的,也就是說,它們將特征映射除以它的標準差,這就阻止了合并整個塊。因此,存在大量的中間計算操作(large FLOPS)和緩沖特征映射(high memory usage)。更糟糕的是,這么高的訓練預算使得很難探索更復雜和可能更強的重參塊。很自然地,下面的問題就出現了:
為什么標準化在重參中這么重要?
通過分析和實驗,作者認為BN層中的尺度因子最重要,因為它們能夠使不同分支的優(yōu)化方向多樣化。
基于觀察結果,作者提出了在線重參化(OREPA)(圖1(c)),這是一個兩階段的pipeline,使之能夠簡化復雜的training-time re-param block。
在第一階段,block linearization,去除所有的非線性BN層,并引入線性縮放層。這些層與BN層具有相似的性質,因此它們使不同分支的優(yōu)化多樣化。此外,這些層都是線性的,可以在訓練過程中合并成卷積層。
第二階段,block squeezing,將復雜的線性塊簡化為單一的卷積層。OREPA通過減少由中間計算層引起的計算和存儲開銷,顯著降低了訓練成本,對性能只有非常小的影響。
此外,高效化使得探索更復雜的重參化拓撲成為可能。為了驗證這一點,作者進一步提出了幾個重參化的組件,以獲得更好的性能。
在ImageNet分類任務上評估了所提出的OREPA。與最先進的修復模型相比,OREPA將額外的訓練時間GPU內存成本降低了65%到75%,并將訓練過程加快了1.5-2.3倍。同時,OREPA-ResNet和OREPA-VGG的性能始終優(yōu)于+0.2%~+0.6%之前的DBB和RepVGG方法。同時作者還評估了在下游任務上的OREPA,即目標檢測和語義分割。作者發(fā)現OREPA可以在這些任務上也可以帶來性能的提高。
本文主要貢獻:- 提出了在線卷積重參化(OREPA)策略,這極大地提高了重參化模型的訓練效率,并使探索更強的重參化塊成為可能;
- 通過對重參化模型工作機制的分析,用引入的線性尺度層代替BN層,這仍然提供了不同的優(yōu)化方向,并保持了表示能力;
- 在各種視覺任務上的實驗表明,OREPA在準確性和訓練效率方面都優(yōu)于以前的重參化模型(DBB/RepVGG)。
結構重參化最近被重視并應用于許多計算機視覺任務,如緊湊模型設計、架構搜索和剪枝。重參化意味著不同的架構可以通過參數的等價轉換來相互轉換。例如,1×1卷積的一個分支和3×3卷積的一個分支,可以轉移到3×3卷積的單個分支中。在訓練階段,設計了多分支和多層拓撲來取代普通的線性層(如conv或全連接層)來增強模型。Cao等討論了如何在訓練過程中合并深度可分離卷積核。然后在推理過程中,將訓練時間的復雜模型轉移到簡單模型中,以便于更快的推理。
在受益于復雜的training-time拓撲,同時,當前的重參化方法訓練使用不可忽略的額外計算成本。當塊變得更復雜以變得更強的表示時,GPU內存利用率和訓練時間將會越來越長,最終走向不可接受。與以往的重參化方法不同,本文更多地關注訓練成本。提出了一種通用的在線卷積重參化策略,使training-time的結構重參化成為可能。
2.2 NormalizationBN被提出來緩解訓練非常深度神經網絡時的梯度消失問題。人們認為BN層是非常重要的,因為它們平滑了損失。最近關于無BN神經網絡的研究聲稱,BN層并不是不可或缺的。通過良好的初始化和適當的正則化,可以優(yōu)雅地去除BN層。
對于重參化模型,作者認為重參化塊中的BN層是關鍵的。無BN的變體將會出現性能下降。然而,BN層是非線性的,也就是說,它們將特征圖除以它的標準差,這阻止了在線合并塊。為了使在線重參化可行,作者去掉了重參塊中的所有BN層,并引入了BN層的線性替代方法,即線性縮放層。
2.3 卷積分解標準卷積層計算比較密集,導致大的FLOPs和參數量。因此,卷積分解方法被提出,并廣泛應用于移動設備的輕量化模型中。重參化方法也可以看作是卷積分解的某種形式,但它更傾向于更復雜的拓撲結構。本文的方法的不同之處在于,在kernel-level上分解卷積,而不是在structure level。
3在線重參化在本節(jié)中,首先,分析了關鍵組件,即重參化模型中的BN層,在此基礎上提出了在線重參化(OREPA),旨在大大減少再參數化模型的訓練時間預算。OREPA能夠將復雜的訓練時間塊簡化為一個卷積層,并保持了較高的精度。
OREPA的整體pipeline如圖2所示,它包括一個Block Linearization階段和一個Block Squeezing階段。
圖2作者通過分析多層和多分支結構的優(yōu)化多樣性,深入研究了重參化的有效性,并證明了所提出的線性縮放層和BN層具有相似的效果。
最后,隨著訓練預算的減少,進一步探索了更多的組件,以實現更強的重參化模型,成本略有增加。
3.1 重參化中的Normalization作者認為中間BN層是重參化過程中多層和多分支結構的關鍵組成部分。以SoTA模型DBB和RepVGG為例,去除這些層會導致嚴重的性能下降,如表1所示。
這種觀察結果也得到了Ding等人的實驗支持。因此,作者認為中間的BN層對于重參化模型的性能是必不可少的。
然而,中間BN層的使用帶來了更高的訓練預算。作者注意到,在推理階段,重參化塊中的所有中間操作都是線性的,因此可以合并成一個卷積層,從而形成一個簡單的結構。
但在訓練過程中,BN層是非線性的,即它們將特征映射除以其標準差。因此,中間操作應該單獨計算,這將導致更高的計算和內存成本。更糟糕的是,如此高的成本將阻止探索更強大的訓練模塊。
3.2 Block Linearization如3.1中所述,中間的BN層阻止了在訓練過程中合并單獨的層。然而,由于性能問題,直接刪除它們并不簡單。為了解決這一困境,作者引入了channel級線性尺度操作作為BN的線性替代方法。
縮放層包含一個可學習的向量,它在通道維度中縮放特征映射。線性縮放層具有與BN層相似的效果,它們都促進多分支向不同的方向進行優(yōu)化,這是重參化時性能提高的關鍵。除了對性能的影響外,線性縮放層還可以在訓練過程中進行合并,使在線重參化成為可能。
基于線性縮放層,作者修改了重參化塊,如圖3所示。具體來說,塊的線性化階段由以下3個步驟組成:
首先,刪除了所有的非線性層,即重參化塊中的BN層
其次,為了保持優(yōu)化的多樣性,在每個分支的末尾添加了一個縮放層,這是BN的線性替代方法
最后,為了穩(wěn)定訓練過程,在所有分支的添加后添加一個BN層。
一旦完成線性化階段,在重參化塊中只存在線性層,這意味著可以在訓練階段合并塊中的所有組件。
3.3 Block SqueezingBlock Squeezing步驟將計算和內存昂貴的中間特征映射上的操作轉換為更經濟的kernel上的操作。這意味著在計算和內存方面從減少到,其中、是特征圖和卷積核的空間尺寸。
一般來說,無論線性重參化塊是多么復雜,以下2個屬性始終成立:
- Block中的所有線性層,例如深度卷積、平均池化和所提出的線性縮放,都可以用帶有相應參數的退化卷積層來表示;
- Block可以由一系列并行分支表示,每個分支由一系列卷積層組成。
有了上述兩個特性,如果可以將
- 多層(即順序結構)
- 多分支(即并行結構)
簡化為單一卷積,就可以壓縮一個塊。在下面的部分中,將展示如何簡化順序結構(圖4(a))和并行結構(圖4(b))。
首先定義卷積的符號。設表示一個大小的二維卷積核的輸入和輸出通道數。,表示輸入和輸出張量。在這里省略了偏差作為一種常見的做法,卷積過程被表示為:
1、簡化順序結構考慮一堆卷積層,其表示為:
其中滿足,。根據結合律,通過首先卷積核,可以將這些層壓縮成一個層:
其中,為第層的權重。表示端到端映射矩陣。
2、簡化并行結構并行結構根據卷積的線性性,可以根據等式將多個分支合并成一個分支:
其中,為第個分支的權重,和(為統(tǒng)一的權重。值得注意的是,當合并不同大小的kernel時,需要對齊不同kernel的空間中心,例如,1×1 kernel應該與3×3 kernel的中心對齊(如RepVGG)。
3、訓練開銷:從特征到kernels。無論這個Block有多復雜,它都必須僅僅由多分支和多層的子拓撲組成。因此,可以根據上述兩個簡化規(guī)則將其簡化為一個單一的簡化規(guī)則。最后,可以得到一體化的端到端映射權重,并且在訓練期間只卷積一次。實際上將中間特征映射上的操作(卷積,加法)轉換為卷積kernel上的操作。因此,在計算和內存方面將計算復雜度從減少到了。
3.4 多分支拓撲結構的梯度分析為了理解為什么Block Linearization步驟是可行的?,即為什么縮放層是重要的?,作者對統(tǒng)一權重重參化的優(yōu)化進行了分析。
結論是,對于去掉BN層的分支,利用縮放層可以使其優(yōu)化方向多樣化,并防止其退化為單一的優(yōu)化方向。
為了簡化表示法,只取輸出Y的單維??紤]一個縮放序列:
其中是滑動窗口內的向量化像素,,W是對應于特定輸出通道的卷積核,是比例因子。假設所有參數都通過隨機梯度下降更新,映射更新為:
其中,L為整個模型的損失函數,η為學習率。是多分支拓撲共享的,即:
端到端權重與等式(6)的權重同等優(yōu)化(順序結構可以得到):
使用相同的前傳t-moment端到端矩陣。因此,沒有引入優(yōu)化變化。這一結論也得到了實驗支持。相反,具有分支級的多分支拓撲提供了這樣的變化:
端到端權重的更新與等式(6)不同:
滿足相同的前提條件和條件1:
條件1:所有分支中至少有2個是活動的
條件2:每個活動分支的初始狀態(tài)都是不同的
同時,當滿足條件2時,多分支結構不會退化為單一結構,多個分支同時進行前向和反向傳播。這也揭示了為什么比例因子是重要的。
注意,當每個分支的權值是隨機初始化的,而縮放因子被初始化為1時,條件1和條件2都始終滿足。
命題1:一個單分支線性映射,當通過超兩層多分支拓撲重參化部分或全部時,整個端到端權重矩陣將得到不同的優(yōu)化。如果映射的一層被重參化到多達一層的多分支拓撲,則優(yōu)化將保持不變。
到目前為止,已經擴展了關于重參化如何影響優(yōu)化的討論。實際上,所有當前有效的重參化拓撲都可以通過命題1進行驗證。
詳細分析見論文附錄部分3.5 Block涉設計由于所提出的OREPA節(jié)省了很大幅度的訓練成本,它促使能夠探索更復雜的訓練塊。為此,設計了一種新的重新參數化模型,即OREPA-ResNet,通過線性化最新的模型DBB,并插入以下組件(圖5)。
1、頻率先驗濾波器在DBB中,在塊中使用了池化層。Qin等人認為,池化層是頻率濾波器的一種特殊情況。為此,作者添加了一個Conv1×1-頻率濾波器分支。
2、線性深度可分離卷積通過去除中間的非線性激活層,對深度可分離的卷積進行了輕微的修改,使其在訓練過程中可以進行合并。
3、重參化1×1卷積以往的工作主要集中在3×3卷積層的重參上,而忽略了1×1卷積層的重參。作者建議重參化1×1層,因為它們在bottleneck結構中發(fā)揮著重要作用。具體來說,在Block添加了一個額外的Conv1×1-Conv1×1分支。
4、線性Stem大的卷積核通常被放置在最開始的層,例如,7×7的Stem,目的是實現一個更大的感受野。Guo等人將堆疊的3×3卷積層替換7×7卷積,以獲得更高的精度。然而,由于高分辨率,在最初始層堆疊需要更大的計算開銷。需要注意的是,這里可以用提出的線性縮放層將stacked deep stem縮放到7×7conv層,這可以大大降低訓練成本,同時保持高精度。
對于OREPA-ResNet中的每個塊(圖6):
4實驗4.1 消融實驗1、線性縮放層和優(yōu)化多樣性圖7
- 添加了一個頻率先驗濾波器和一個線性的深度可分離卷積
- 將所有的Stem(即最初的7×7卷積)替換為所提出的線性deep stem層
- 在bottleneck中,除了1和2之外,進一步將所提出的rep 1×1塊替換原來的1×1卷積分支
首先進行實驗來驗證核心思想,即所提出的線性縮放層與BN層起著相似的作用。根據3.4中的分析。文章展示了縮放層和BN層都能夠多樣化優(yōu)化方向。為了驗證這一點,作者可視化了圖7中所有分支的分支級相似性。作者發(fā)現,縮放層的使用可以顯著增加不同分支的多樣性。
在表2中驗證了這種多樣性的有效性。以ResNet-18結構為例,這兩種層(BN和線性縮放)帶來了相似的性能增益(即0.42vs.0.40)。這有力地支持了本文的觀點,即在重參化中,最重要的是縮放部分,而不是統(tǒng)計標準化部分。
2、各種線性化策略本文作者嘗試了各種尺度層的線性化策略。具體來說4種變體:
- Vector:利用一個通道級向量,并沿著通道軸執(zhí)行縮放操作。
- Scalar:用一個標量來縮放整個特征圖。
- W/o scaling:刪除分支級縮放層。
- W/o post-addition BN:刪除后BN層。
從表3中發(fā)現,無論是部署標量縮放層還是不部署縮放層,都會導致較差的結果。因此,選擇向量縮放作為默認策略。
作者還研究了加法后BN層的有效性。如3.2中所述。添加了后BN層來穩(wěn)定訓練過程。為了證明這一點,作者刪除了這些層,如表3中的最后一行所示,梯度變成無窮大,模型無法收斂。
3、每個組件都很重要對ResNet-18和ResNet-50的結構都進行了實驗。如表2所示,每個組件都有助于提高性能。
4、Online vs. offline作者比較了OREPA-ResNet-18與DBB-18的訓練成本進行了對比。舉例說明了消耗的內存(圖8(a))和訓練時間(圖8(b))。
隨著組件數量的增加,離線重參化模型面臨著內存利用率快速增加和訓練時間長的問題。由于高內存成本,甚至不能在ResNet-18模型中引入Deep Stem。相比之下,在線重參化策略將訓練速度提高了4×,并節(jié)省了高達96+%的額外GPU內存??傮w的訓練開銷大致與基本模型(普通ResNet)的水平相同。
4.2 與其他重參化對比從表4中觀察到在ResNet系列上,OREPA可以在各種模型上的性能持續(xù)提高+0.36%。同時,它將訓練速度加速了1.5×至2.3×,并節(jié)省了約70+%的額外訓練時間內存。
作者還對VGG結構進行了實驗,比較了OREPA-VGG和RepVGG。對于OREPA-VGG模型,簡單地用在OREPA-中使用的OREPA-res-3×3分支。這種修改只引入了邊際的額外訓練成本,同時也帶來了明顯的性能增益(+0.25%~+0.6%)。
4.3 目標檢測與語義分割4.4 局限性當簡單地將所提出的OREPA從ResNet轉移到RepVGG時,作者發(fā)現基于殘差和無殘差(VGG-like)結構之間的性能不一致。因此,在RepVGG塊中保留了所有的三個分支,以保持具有競爭性的精度,這就略微增加了計算成本。這是一個有趣的現象。
5參考[1].OREPA: Online Convolutional Re-parameterization
本文僅做學術分享,如有侵權,請聯系刪文。
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。