# Deep Layer Aggregation ###### tags: `paper` `已公開` [toc] ## 引言 Architectural efforts是探索網絡backbone 的多個維度,設計更深或更廣的架構,但如何最好地**聚合網絡中的層和塊值得進一步關注**。雖然skip connections可以合併組合一些層,但這些連接本身是"shallow",並且只能通過簡單的一步操作來融合。 ## 介紹 表示學習及遷移學習是當今電腦視覺的熱門主題。組合性和可微性的簡單基礎產生了令人驚訝的各種深層架構。 **隨著網絡的規模和範圍不斷擴大,現在正致力於設計可以系統地組裝的連接module和module的設計模式。 這產生了更深更廣的網絡,但連接更緊密呢?** ![](https://i.imgur.com/yS0dzPJ.png) 更多的非線性、更大的capacity和更大的receptive fields通常會提高準確性,但可能會導致優化和計算問題。為了解決different blocks or modules have been incorporated to balance and temper these quantities, such as bottlenecks for dimensionality reduction or residual, gated,and concatenative connections for feature and gradient propagation.網路根據各自的scheme都有了100或1000以上的層數。 然而,如何連接這些層和模塊還需要進一步探索。 從 LeNet 到 AlexNet 到 ResNet 的分層網絡按順序堆疊層和模塊。**逐層精度比較、可轉移性分析和表示可視化表明,更深層提取更多語義和更多全局特徵,但這些跡象並不能證明最後一層是任何任務的最終表示**。事實上,skip connections已被證明對於分類和回歸以及更多結構化任務是有效的。 聚合(Aggregation),就像深度和寬度一樣,是架構的一個關鍵維度。 在這項工作中,我們研究瞭如何聚合層以更好地融合語義和空間信息以進行識別和定位。擴展當前方法的"shallow" skip connections,我們的聚合架構包含更多深度和共享。我們對於Deel Layer Aggregation(DLA)介紹兩種結構:iterative deep aggegataion(IDA) 和Hierarchical deep aggregation (HDA)。這些結構通過架構框架表示,獨立於骨幹的選擇,以兼容當前和未來的網絡。**IDA 專注於融合resolutions 和 scales,而 HDA 專注於merge 來自所有模塊和通道的特徵**。IDA 遵循基本層次結構來逐步改進resolution和aggregate scale。 HDA 組裝了它自己tree-structured connections的hierarchy ,這些層次結構交叉和合併階段 以聚合不同級別的表示。我們的方案可以結合起來進行複合改進 ## 相關工作 我們回顧了用於視覺識別的架構,突出顯示用於聚合分層特徵和金字塔尺度的關鍵架構,並將這些與我們對跨深度、尺度和分辨率的深度聚合的關注聯繫起來。 Our aggregation architectures are most closely related toleading approaches for fusing feature hierarchies.融合的關鍵軸是**語義和空間**。 **語義融合(HDA),或跨通道和深度的聚合,提高了對什麼的推斷。空間融合(IDA),或跨分辨率和尺度聚合,提高了對位置的推斷**。 深層聚合可以看作是兩種融合形式的結合。 DenseNets 是語義融合的主要架構家族,旨在通過連接階段中的所有層的跳過連接更好地傳播特徵和損失。DLA對短路徑和重用的重要性具有相同的見解,並擴展了與跨階段和比concatenation更深層次融合的樹的skip connections。 Densely connected and deeply aggregated networks 實現更高的準確性以及更好的參數和記憶體效率。 ![](https://i.imgur.com/q8liBy6.png) Feature pyramid networks (FPNs)是空間融合的主要架構家族,旨在通過自上而下和橫向連接在金字塔特徵層次結構的各個級別上均衡分辨率和標準化語義。 我們的IDA 同樣提高了分辨率,但通過非線性和漸進融合進一步加深了表示。FPN 連接是線性的,並且較早的級別不會更多地聚合以對抗它們的相對語義弱點。 金字塔和深度聚合網絡能夠更好地解決結構化輸出任務的內容和位置。 ![](https://i.imgur.com/iMWYBm2.png) ## Deep Layer Aggregation 我們將Aggregation定義為整個網絡中不同層的組合。在這項工作中,我們專注於一系列用於有效aggregation of depths,resolutions, and scales的架構。 我們將一組聚合稱為深度,如果它是組合的、非線性的,並且最早的聚合層經過多個聚合。 隨著網絡可以包含許多層和連接,模塊化設計有助於通過grouping and repetition來對抗複雜性。層被分組為塊,然後按其特徵分辨率分組為階段。 我們關心的是aggregating the block和stages。 :::info :bulb:聚合 融合? 融合分為語義融合及空間融合。 語義融合能夠推論"是什麼"。空間融合可以推論"在哪裡"。 聚合則是不同融合的組合。 :bulb: block vs. stage block是由很多網路層組成,stage由多個block組成。同一stage輸入輸出分辨率一致。不同stage分辨率不同 ::: ### Iterative Deep Aggregation IDA 遵循backbone 的迭代堆疊。我們根據特徵分辨率將網絡的堆疊塊劃分為階段。更深的階段有更多的語義但空間更粗糙。從較淺到較深階段的skip connections 合併了尺度和分辨率。然而,現有工作中的skip,例如FCN、U-Net和FPN,是線性的,對最淺層的聚合最少,如圖2所示。 ![](https://i.imgur.com/MtkSZYj.png) 我們提出逐步聚合和深層的表示。聚合從最淺、最小的尺度開始,然後迭代地合併更深、更大的尺度。通過這種方式,淺層特徵在通過聚合的不同階段傳播時被細化。圖 2c 顯示了 IDA 的結構。 對於一系列層$x_{1},...,x_{n}$ 的迭代深度聚合函數$I$ 越來越深,語義信息被公式化為 $$ I(x_{1}, ..., x_{n}) =\left\{ \begin{aligned} x_{1} & &if n=1 \\ I(N(x_{1},x_{2}),...,x_{n}) & & otherwise,\\ \end{aligned} \right. \tag1 $$ 否則, 其中$N$ 是聚合節點。 ### Hierarchical Deep Aggregation 分層深度聚合合併樹中的塊和階段以保留和組合特徵通道。使用 HDA 將較淺和較深的層結合起來,學習更豐富的組合,跨越更多的特徵層次。雖然 IDA 有效地結合了階段,但它不足以融合網絡的許多塊,因為它仍然只是順序的。層次聚合的深層、分支結構如圖2d所示 :::success 有點像WaveNet: A Generative Model for Raw Audio,沒有時序性 ::: 建立了 HDA 的總體結構後,我們可以提高其深度和效率。我們不僅將路由中間聚合路由到樹上,而是將聚合節點的輸出反饋回主幹作為下一個子樹的輸入,如圖 2e所示。 這會傳播所有先前塊的聚合,而不是單獨地傳播先前的塊以更好地保留特徵。為了效率,我們合併相同深度的聚合節點,如圖2f所示。 具有深度$n$ 的分層深度聚合函數$T_{n}$被公式化為 $$ T_{n}(x) = N(R^n_{n-1}(x), R^n_{n-2}(x), ..., ..R^n_{1},L^n_{1}(x),L^n_{2}(x)) \tag2 $$ $N$是聚合節點。$R$和$L$定義為 $$ L^n_{2}(x) = B(L^n_{1}(x)) , L^n_{1}(x)= B(R^n_{1}(x)) $$ $$ R^n_{m}(x) =\left\{ \begin{aligned} T_{m}(x) & &if m=n-1, \\ T_{m}(R^n_{m+1}(x))& & otherwise, \end{aligned} \right. $$ $B$ 代表conv block :::info $$ T_{1}(x) = N(L^1_{1}(x), L^n_{2}(x)) $$ ![](https://i.imgur.com/dQ1gbAO.png) $$ T_{2}(x) = N(R^2_1(x), L^2_1(x), L^2_{2}(x) ) \\ = N(T_1(x) , L^2_1(x), L^2_{2}(x)) \\ = N(T_1(x) , B(R^2_{1}(x)), B( L^2_1(x)) ) \\ = N(T_1(x) , B(T_1(x), B( B(T_1(x) ) ) \\ $$ ![](https://i.imgur.com/muyTrFZ.png) $$ T_{3} = N(R^3_{2}(x) , R^3_{1}(x), L^3_1(x), L^3_2(x)) \\ = N( T_2(x), T_{1}(R^3_{2}(x)), B(R^3_1(x)), B(B(R^3_1(x)) ) \\ = N( T_2(x), R^3_1(x) , B(T_{1}(R^3_{2}(x))), B(B(T_{1}(R^3_{2}(x))))) \\ = N( T_2(x), R^3_1(x) , B(R^3_1(x), B(B(R^3_1(x))) \\ $$ ![](https://i.imgur.com/rwzcQqb.png) $$ T_{1}(x) = N(L^1_{1}(x), L^n_{2}(x)) \\ 這邊的 x= R^3_{2}(x) \\ $$ ![](https://i.imgur.com/tS0ZzWB.png) ::: ### Architectural Elements ##### Aggregation Nodes 聚合節點的主要功能是組合和壓縮它們的輸入。節點學會選擇和投射重要信息,以在其輸出處保持與單個輸入相同的維度。在我們的架構中,IDA 節點總是二進制的,而 HDA 節點根據樹的深度具有可變數量的參數。 ![](https://i.imgur.com/27o4sQ4.png) 雖然聚合節點可以基於任何block or layer,但為了簡單和效率,我們選擇單個卷積,然後是批量歸一化和非線性。這避免了聚合結構的開銷。 在圖像分類網絡中,所有節點都使用 1×1 卷積。在語義分割中,我們添加了更深層次的迭代深度聚合來插值特徵,在這種情況下使用 3×3 卷積。 由於殘差連接對於組裝非常深的網絡很重要,我們可以還包括在我們的聚合節點中的殘差連接。 然而,目前尚不清楚它們是聚合所必需的。使用 HDA,從任何塊到根的最短路徑最多是層次結構的深度,因此沿著聚合路徑可能不會出現遞減或爆炸梯度。 在我們的實驗中,我們發現當最深層次有 4 個或更多層次時,節點中的殘差連接可以幫助 HDA,而對於層次較小的網絡可能會有害。 我們的基礎聚合,即方程 1 和 2,定義為, $$ N(x_{1}, ..., x_{n}) = \sigma(BatchNorm(\sum_{i}(W_{i}x_{i} + b))) \tag3 $$ $\sigma $ 是non-linear activation, $w_{i}$,$b$是conv weight.如果加入residual connections 等式會變成 $$ N(x1, ..., x_{n}) = \sigma(BatchNorm(\sum_{i}(W_{i}x_{i}+b) + x_{n})) \tag4 $$ Note that the order of arguments for $N$ does matter and should follow Equ 2. ##### Blocks and Stages 深層聚合是一個通用架構家族,因為它兼容不同的主幹。我們的架構對塊和階段的內部結構沒有要求。 我們在實驗中實例化的網絡使用了三種類型的殘差塊。 基本塊將堆疊卷積與identity skip connextion相結合。 bottleneck block 通過 1×1 卷積降低維度來規範卷積堆疊。Split block通過將grouping channel 為多個單獨的路徑來(called the cardinality of the split) 使特徵多樣化。 在這項工作中,我們將bottleneck 和split block 的輸出和中間通道數量之比減半,分割塊的基數為32. 有關這些塊的確切詳細信息,請參閱引用的論文。 ## Applications 用於分類和密集預測的語義和空間信息的聚合 ### Classification Networks 我們的分類網絡使用 IDA 和 HDA 增強了 ResNet 和 ResNeXT。這些是分階段網絡,按空間分辨率對塊進行分組,每個塊內都有殘差連接。每個階段的結尾將分辨率減半,總共給出六個階段,第一階段保持輸入分辨率,而最後階段進行 32 倍下採樣。 最終的特徵圖被全局平均池化,然後 linearly scored。 分類被預測為分數上的 softmax。 我們使用 IDA 連接跨階段,通過 HDA 連接跨階段。這些類型的聚合很容易通過共享聚合節點來組合。在這種情況下,我們只需要通過結合等式1和2. 我們的階段通過max pooling size=2 , strides= 2進行下採樣。 ### Dense Prediction Networks 語義分割、輪廓檢測和其他圖像到圖像任務可以利用聚合來融合局部和全局信息。從分類 DLA 到完全卷積 DLA 的轉換很簡單,與其他架構沒有區別。我們利用插值和 IDA 的進一步增強來達到任務所需的輸出分辨率。 ![](https://i.imgur.com/s8FKtGc.png) IDA 用於插值通過投影和上採樣增加深度和分辨率,如圖4.所有的投影和上採樣參數都是在網絡優化過程中聯合學習的。上採樣步驟被初始化為雙線性插值。我們首先預測第 3-6 階段的輸出到 32 個通道,然後將階段插入到與階段2相同的分辨率。最後,我們迭代地聚合這些階段以學習低層和高層特徵的深度融合。 雖然與 FCN 跳過連接和 FPN 自頂向下連接具有相同的目的,但我們的聚合在方法上有所不同,從淺到深進一步細化特徵。 請注意,在這種情況下我們使用 IDA 兩次:一次連接主幹網絡中的階段,再次恢復分辨率 ## 參考資料 [Deep Layer Aggregation](https://openaccess.thecvf.com/content_cvpr_2018/papers/Yu_Deep_Layer_Aggregation_CVPR_2018_paper.pdf)