DLA论文解读
DLA 論文解讀
簡介
沿著卷積神經網絡在計算機視覺的發展史,可以發現,豐富的表示(representations)是視覺任務最需要的。隨著網絡的深度增加,單獨一層的信息是遠遠不夠的,只有聚合各層信息才能提高網絡對 what(識別)和 where(定位)兩個問題的推斷能力?,F有的很多網絡設計工作主要致力于設計更深更寬的網絡,但是如何更好地組合不同網絡層(layer)、不同結構塊(block)其實值得更多的關注。盡管跳躍連接(skip connecions)常用來組合多層,不過這樣的連接依然是淺層的(因為其只采用了簡單的單步運算)。該論文通過更深層的聚合來增強標準網絡的能力。DLA 結構能夠迭代式層級組合多層特征以提高精度的同時減參。實驗證明,DLA 相比現有的分支和合并結構,效果更好。
-
論文標題
Deep layer aggregation
-
論文地址
https://arxiv.org/abs/1707.06484
-
論文源碼
https://github.com/ucbdrive/dla
介紹
表示學習和遷移學習的發展推動了計算機視覺的發展,可以簡單組合的特性催生了很多深度網絡。為了滿足各種不同的任務,尋找合適的網絡結構至關重要。隨著網絡尺寸的增加,模塊化的設計更為重要,所以現在的網絡越來越深的同時,更緊密的連接能否帶來提升呢?
更多的非線性、更強的表示能力、更大的感受野一般能夠提高網絡精度,但是會帶來難以優化和計算量大的問題。為了克服這些缺陷,不同的block和modul被集成到一起來平衡和優化這些特點,如使用bottlenecks進行降維、使用residual、gated和concatnative連接特征以及梯度傳播算法。這些技術使得網絡可以到達100甚至1000層。
然而,如何連接這些layer和module還需要更多的探索。簡單地通過序列化堆疊層來構造網絡,如LeNet、AlexNet以及ResNet。經過復雜的分析,更深的網絡層能提取到更多語義和全局的特征,但是這并不能表明最后一層就是任務需要的表示。實際上“跳躍連接”已經證明了對于分類、回歸以及其他結構化問題的有效性。因此,如何聚合,尤其是深度與寬度上的聚合,對于網絡結構的優化是一個非常重要的技術。
論文研究了如何聚合各層特征來融合語義和空間信息以進行識別與定位任務。通過擴展現有的“淺跳躍連接”(單層內部進行連接),論文提出的聚合結構實現了更深的信息共享。文中主要引入兩種DLA結構:iterative deep aggregation (IDA,迭代式深度聚合)和hierarchal deep aggregation (HDA,層級深度聚合)。為了更好的兼容現有以及以后的網絡結構,IDA和HDA結構通過獨立于backbone的結構化框架實現。IDA主要進行跨分辨率和尺度的融合,而HDA主要用于融合各個module和channel的特征。從上圖也可以看出來,DLA集成了密集連接和特征金字塔的優勢,IDA根據基礎網絡結構,逐級提煉分辨率和聚合尺度(語義信息的融合(發生在通道和深度上),類似殘差模塊),HDA通過自身的樹狀連接結構,將各個層級聚合為不同等級的表征(空間信息的融合(發生在分辨率和尺度上),類似于FPN)。本文的策略可以通過混合使用IDA與HDA來共同提升效果。
DLA通過實驗在現有的ResNet和ResNeXt網絡結構上采用DLA架構進行拓展,來進行圖像分類、細粒度的圖像識別、語義分割和邊界檢測任務。實驗表明,DLA的可以在現有的ResNet、ResNeXt、DenseNet等網絡結構的基礎上提升模型的性能、減少參數數量以及減少顯存消耗。DLA達到了目前分類任務中compact models的最佳精度,在分割等任務也達到超越SOTA。DLA是一種通用而有效的深度網絡拓展技術。
DLA
文中將“聚合”定義為跨越整個網絡的多層組合,文中研究的也是那些深度、分辨率、尺度上能有效聚合的一系列網絡。由于網絡可以包含許多層和連接,模塊化的設計可以通過分組和重復來克服復雜度問題。多個layer組合為一個block,多個block再根據分辨率組合為一個stage,DLA則主要探討block和stage的組合(stage間網絡保持一致分辨率,那么空間融合發生在stage間,語義融合發生在stage內)。
IDA
IDA沿著迭代堆疊的backbone進行,依據分辨率對整個網絡分stage,越深的stage含有更多的語義信息但空間信息很少?!疤S連接”由淺至深融合了不同尺度以及分辨率信息,但是這樣的“跳躍連接”都是線性且都融合了最淺層的信息,如上圖b中,每個stage都只融合上一步的信息。
因此,論文提出了IDA結構,從最淺最小的尺度開始,迭代式地融合更深更大尺度地信息,這樣可以使得淺層網絡信息在后續stage中獲得更多地處理從而得到精煉,上圖c就是IDA基本結構。
IDA對應的聚合函數III對不同層的特征,隨著加深的語義信息表示如下(N表示聚合結點,后文會提到):
I(x1,…,xn)={x1if?n=1I(N(x1,x2),…,xn)otherwise?I\left(\mathbf{x}_{1}, \ldots, \mathbf{x}_{n}\right)=\left\{\begin{array}{ll} \mathbf{x}_{1} & \text { if } n=1 \\ I\left(N\left(\mathbf{x}_{1}, \mathbf{x}_{2}\right), \ldots, \mathbf{x}_{n}\right) & \text { otherwise } \end{array}\right. I(x1?,…,xn?)={x1?I(N(x1?,x2?),…,xn?)??if?n=1?otherwise??
HDA
HDA以樹的形式合并block和stage來保持和組合特征通道,通過HDA,淺層和深層的網絡層可以組合到一起,這樣的組合信息可以跨越各個層級從而學得更加豐富。盡管IDA可以高效組合stage,但它依然是序列性的,不足以用來融合網絡各個block信息。上圖d就是HDA的深度分支結構,這是一個明顯的樹形結構。
在基礎的HDA結構上,可以改進其深度和效率,將一個聚合結點的輸出重置為主干網絡用于下一棵子樹的輸入。結構如上圖e所示,這樣,之前所有block的信息都被送入后續處理中。同時,為了效率,作者將同一深度的聚合結點(指的是父親和左孩子,也就是相同特征圖尺寸的)合并,如上圖f。
HDA的聚合函數TnT_nTn?計算如下,nnn表示深度,NNN依然是聚合結點。
Tn(x)=N(Rn?1n(x),Rn?2n(x),…,R1n(x),L1n(x),L2n(x)),\begin{array}{r} T_{n}(\mathbf{x})=N\left(R_{n-1}^{n}(\mathbf{x}), R_{n-2}^{n}(\mathbf{x}), \ldots,\right. \left.R_{1}^{n}(\mathbf{x}), L_{1}^{n}(\mathbf{x}), L_{2}^{n}(\mathbf{x})\right), \end{array} Tn?(x)=N(Rn?1n?(x),Rn?2n?(x),…,R1n?(x),L1n?(x),L2n?(x)),?
上面式子的RRR和LLL定義如下,表示左樹和右樹,下式BBB表示卷積塊。
L2n(x)=B(L1n(x)),L1n(x)=B(R1n(x))Rmn(x)={Tm(x)if?m=n?1Tm(Rm+1n(x))otherwise?\begin{aligned} L_{2}^{n}(\mathbf{x}) &=B\left(L_{1}^{n}(\mathbf{x})\right), \quad L_{1}^{n}(\mathbf{x})=B\left(R_{1}^{n}(\mathbf{x})\right) \\ R_{m}^{n}(\mathbf{x}) &=\left\{\begin{array}{ll} T_{m}(\mathbf{x}) & \text { if } m=n-1 \\ T_{m}\left(R_{m+1}^{n}(\mathbf{x})\right) & \text { otherwise } \end{array}\right. \end{aligned} L2n?(x)Rmn?(x)?=B(L1n?(x)),L1n?(x)=B(R1n?(x))={Tm?(x)Tm?(Rm+1n?(x))??if?m=n?1?otherwise???
結構元素
聚合結點(Aggregation Nodes )
其主要功能是組合壓縮輸入,它通過學習如何選擇和投射重要的信息,以在它們的輸出中保持與單個輸入相同的維度。論文中,IDA都是二分的(兩個輸入),HDA則根據樹結構深度不同有不定量的參數。
雖然聚合結點可以采用任意結構,不過為了簡單起見,文中采用了conv-BN-激活函數的組合。圖像分類中所有聚合結點采用1x1卷積,分割任務中,額外一個IDA用來特征插值,此時采用3x3卷積。
由于殘差連接的有效性,本文聚合結點也采用了殘差連接,這能保證梯度不會消失和爆炸?;A聚合函數定義如下,其中σ\sigmaσ是非線性激活函數,www和bbb是卷積核參數。
N(x1,…,xn)=σ(BatchNorm?(∑iWixi+b))N\left(\mathbf{x}_{1}, \ldots, \mathbf{x}_{n}\right)=\sigma\left(\text { BatchNorm }\left(\sum_{i} W_{i} \mathbf{x}_{i}+\mathbf\right)\right) N(x1?,…,xn?)=σ(?BatchNorm?(i∑?Wi?xi?+b))
包含殘差連接的聚合函數變為下式。
N(x1,…,xn)=σ(Batch?Norm?(∑iWixi+b)+xn)N\left(\mathbf{x}_{1}, \ldots, \mathbf{x}_{n}\right)=\sigma\left(\text { Batch } \operatorname{Norm}\left(\sum_{i} W_{i} \mathbf{x}_{i}+\mathbf\right)+\mathbf{x}_{n}\right) N(x1?,…,xn?)=σ(?Batch?Norm(i∑?Wi?xi?+b)+xn?)
塊和層(Blocks and Stages)
DLA是一系列適用于各種backbone的結構,它對block和stage內部結構沒有要求。論文主要實驗了三種殘差塊,分別如下。
- Basic blocks:將堆疊的卷積層通過一個跳躍連接連接起來;
- Bottleneck blocks:通過1x1卷積對堆疊的卷積層進行降維來進行正則化;
- Split blocks:將不同的通道分組到不同的路徑(稱為cardinality split)來對特征圖進行分散。
實驗
作者設計了分類網絡和密集預測網絡,前者基于ResNet等修改設計了如下的DLA網絡,下表是設計的一系列網絡的配置。
DLA網絡在Imagenet上對比其他的緊湊網絡,結果如下,從精度和參數量來看,性能都是卓越的。
作者還在檢測等任務上也做了實驗,這里我就不分析了,感興趣的可以去閱讀原論文。
補充說明
在很多人還在致力于研究如何設計更深更寬的網絡的時候,DLA 想到的問題是如何更好地聚合一個網絡中不同層和塊的信息,并開創性地提出了 IDA 和 HDA 兩種聚合思路。在多類任務上效果都有明顯改善,包括分類、分割、細粒度分類等。而且,相比于普通 backbone,DLA 結構的網絡參數量更少(并不意味著運算速度快,因為這種跳躍連接結構是很耗內存的),在原始網絡上進行 DLA 改進往往能獲得更為不錯的效果。
總結
- 上一篇: BorderDet论文解读
- 下一篇: FairMOT实时多目标跟踪