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