CVPR2021 | 重新思考BiSeNet讓語(yǔ)義分割模型速度起飛(文末獲取論文)

超強(qiáng)的實(shí)時(shí)語(yǔ)義分割新網(wǎng)絡(luò):STDC,表現(xiàn)SOTA!性能優(yōu)于BiSeNetV2、SFNet等網(wǎng)絡(luò),其中一版本性能高達(dá)97.0FPS/76.8%mIoU,代碼即將開(kāi)源!作者單位:美團(tuán)
1 簡(jiǎn)介
BiSeNet已被證明在實(shí)時(shí)分割two-stream網(wǎng)絡(luò)中是有效的。但是,其添加額外path以對(duì)空間信息進(jìn)行編碼的原理很耗時(shí),并且由于缺少任務(wù)專用設(shè)計(jì),因此從預(yù)訓(xùn)練任務(wù)(例如圖像分類)中借用的主干可能無(wú)法有效地進(jìn)行圖像分割。
為了解決這些問(wèn)題,作者提出了一種新穎且有效的結(jié)構(gòu),即通過(guò)消除結(jié)構(gòu)冗余來(lái)緩解以上的耗時(shí)問(wèn)題(Short-Term Dense Concatenate network)。具體來(lái)說(shuō),本文將特征圖的維數(shù)逐漸降低,并將特征圖聚合起來(lái)進(jìn)行圖像表征,形成了STDC網(wǎng)絡(luò)的基本模塊。在decoder中,提出了一個(gè)Detail Aggregation module將空間信息的學(xué)習(xí)以single-stream方式集成到low-level layers中。最后,將low-level features和deep features融合以預(yù)測(cè)最終的分割結(jié)果。

在Cityscapes上,在1080Ti上以250.4FPS的速度在測(cè)試集上實(shí)現(xiàn)了71.9%的mIoU,比最新方法快45.2%,在97.0FPS的情況下達(dá)到76.8%的mIoU,同時(shí)可以推斷出更高分辨率的圖像。
2 問(wèn)題動(dòng)機(jī)
為了更快的推理以達(dá)到實(shí)時(shí)的推理,很多的Researcher提出了很多的方法,也使用了很多輕量化的backbone,諸如DFANet、BiSeNetV1等模型;但是這些輕量化的Backbone主要是針對(duì)圖像分類的設(shè)計(jì),可能針對(duì)特定的語(yǔ)義分割任務(wù)性能并不是那么的好;
除此之外輸入圖像的分辨率似乎對(duì)于推理速度也有比較大的影響,但這樣也很容易導(dǎo)致模型忽略目標(biāo)邊界和小物體的細(xì)節(jié)。

如圖2(a)所示,為了解決以上問(wèn)題,BiSeNet采用multi-path框架將low-level details和high-level semantics結(jié)合起來(lái)。然而,添加一條額外的path來(lái)獲取low-level特征是很費(fèi)時(shí)的,同時(shí)Auxiliary path也往往缺乏low-level信息的引導(dǎo)。
2.1 編碼階段
針對(duì)上訴問(wèn)題作者設(shè)計(jì)了一種新的網(wǎng)絡(luò),目的是更快的推理速度、更具有可解釋的結(jié)構(gòu)和的現(xiàn)有方法對(duì)比更具競(jìng)爭(zhēng)的性能。
首先,設(shè)計(jì)了一個(gè)新的結(jié)構(gòu)Short-Term Dense Concatenate module模塊(STDC模塊),以通過(guò)少量的參數(shù)來(lái)獲得Variant Scalable Receptive Fields。
其次,將STDC模塊集成到U-net體系結(jié)構(gòu)中,形成STDC Network,這一操作極大地提高了語(yǔ)義分割任務(wù)網(wǎng)絡(luò)的性能。

如圖3所示,將多個(gè)連續(xù)層的Feature maps連接起來(lái),每個(gè)層對(duì)輸入的圖像/特征在不同的尺度和各自的域進(jìn)行編碼,從而實(shí)現(xiàn)多尺度特征表示。為了加快速度,逐步減小層的卷積核大小,同時(shí)在分割性能上的損失可以忽略不計(jì)。
2.2 解碼階段
在解碼階段,如圖2(b)所示,采用Detail Guidance來(lái)引導(dǎo)low-level layers進(jìn)行空間細(xì)節(jié)的學(xué)習(xí),而不是使用額外的Path。
首先,利用Detail Aggregation模塊生成詳細(xì)的Ground-truth。
然后,利用binary cross-entropy loss和dice loss優(yōu)化細(xì)節(jié)信息,將細(xì)節(jié)信息作為一種約束信息在推理時(shí)不需要。
最后,融合low-level layers信息和semantic信息預(yù)測(cè)語(yǔ)義分割結(jié)果。
3 Proposed Method
3.1 Design of Encoding Network
3.1.1 Short-Term Dense Concatenate Module

圖4(b)和(c)展示了STDC模塊的布局。具體來(lái)說(shuō),每個(gè)模塊被分成幾個(gè)子模塊,用表示第塊的運(yùn)算。因此,第塊的輸出如下:

其中和分別為第塊的輸入和輸出。包括卷積層、BN層和ReLU,是卷積層的內(nèi)核大小。
在STDC模塊中,第一個(gè)塊的卷積核大小為1,其余的設(shè)置為3。給定STDC模塊輸出通道數(shù)為N;除了最后一個(gè)卷積層的卷積核數(shù)與前一個(gè)卷積層的卷積核數(shù)相同,其余第塊中卷積層的卷積核數(shù)均為。
在圖像分類任務(wù)中,More Channels in Higher Layers是一種常見(jiàn)的做法。但在語(yǔ)義分割任務(wù)中側(cè)重于Scalable Receptive Field和Multi-Scale。Low-level layers需要足夠的通道來(lái)編碼Receptive Field較小的更細(xì)粒度的信息,而Receptive Field較大的high-level layers更注重high-level信息的引導(dǎo),與Low-level layers設(shè)置相同的通道可能會(huì)導(dǎo)致信息冗余。
Downsample只在Block2中使用。為了獲得更加豐富特征信息,作者選擇通過(guò)skip-path cat和作為STDC模塊的輸出。在cat之前,要先通過(guò)3×3平均池化操作,將STDC模塊中不同塊的response maps降采樣到相同的空間大小,STDC模塊的最終輸出為:

式中,為STDC模塊輸出,F(xiàn)為方法中的融合操作,是所有塊的特征映射??紤]到效率,作者采用cat作為fusion操作。在本文中作者使用4個(gè)block構(gòu)建STDC模塊。

STDC Module的優(yōu)勢(shì):
通過(guò)幾何級(jí)數(shù)的方式精心調(diào)整塊的卷積核的大小,從而顯著降低了計(jì)算復(fù)雜度。 STDC模塊的最終輸出由所有塊cat而成,保留了scalable respective fields和multi-scale information。
3.1.2 復(fù)雜度分析
給定輸入通道維度,輸出通道維度,則STDC模塊parameter number為:

如式3所示,STDC模塊的parameter number由預(yù)定義的輸入輸出通道維度決定,而block個(gè)數(shù)對(duì)parameter number的影響較小。特別是當(dāng)n達(dá)到最大值時(shí),STDC模塊的參數(shù)數(shù)幾乎保持不變,僅由M和n定義。
3.1.3 Network Architecture


除輸入層和預(yù)測(cè)層外,還包括6個(gè)階段:
通常,Stage-1~5對(duì)輸入的空間分辨率分別進(jìn)行了2個(gè)下采樣,Stage-6通過(guò)一個(gè)ConvX、一個(gè)全局平均池化層和兩個(gè)全連接層輸出預(yù)測(cè)logits。
Stage-1和Stage-2通常被是用于提取外觀特征的low-level layers。為了追求效率,在Stage-1和Stage-2中每個(gè)階段只使用一個(gè)卷積塊,根據(jù)經(jīng)驗(yàn)證明這是有效的。Stage-3、4、5中的STDC模塊的數(shù)量在網(wǎng)絡(luò)中是經(jīng)過(guò)仔細(xì)調(diào)整的。在這些Stage中,每個(gè)Stage的第1個(gè)STDC模塊使用stride=2的卷積塊進(jìn)行下采樣,緊接著Stage的保持空間分辨率不變。
3.2 Design of Decoder
3.2.1 Segmentation Architecture
首先,使用預(yù)訓(xùn)練STDC網(wǎng)絡(luò)作為編碼器的Backbone,并采用BiSeNet的context path對(duì)context information進(jìn)行編碼。
如圖3(a)所示,使用Stage-3,4,5分別生成了降樣比為1/8,1/16,1/32的feature map。然后使用全局平均池化生成具有l(wèi)arge receptive field的全局上下文信息。
采用U-shape結(jié)構(gòu)對(duì)全局特征進(jìn)行上采樣,并將其與編碼階段的后2個(gè)階段(Stage-4和Stage-5)的特征進(jìn)行組合。
在BiSeNet之后使用Attention Refine模塊來(lái)細(xì)化每2個(gè)階段的組合特性。
在最終的語(yǔ)義分割預(yù)測(cè)中采用了BiSeNet中的Feature Fusion模塊,將從Stage-3得到的1/8降采樣特征與解碼器得到的1/8降采樣特征進(jìn)行融合。作者認(rèn)為這2個(gè)Stage的特征處于不同的特征表征層次。來(lái)自編碼Stage的特征保留了豐富的細(xì)節(jié)信息,來(lái)自解碼器的特征由于全局池化層的輸入而包含了上下文信息。
具體來(lái)說(shuō),Seg Head包含一個(gè)3×3 Convon-Bn-Relu算子,然后進(jìn)行1×1卷積,得到輸出維數(shù)N(類的個(gè)數(shù))。采用Cross-Entry Loss-OHEM優(yōu)化語(yǔ)義分割學(xué)習(xí)任務(wù)。
3.2.2 Detail Guidance of Low-level Features

與相同下采樣比的backbone low-level layers(Stage-3)相比,spatial path可以編碼更多的spatial細(xì)節(jié),如邊界、角等。在此基礎(chǔ)上,本文提出了一個(gè)細(xì)節(jié)引導(dǎo)模塊來(lái)引導(dǎo)low-level layers以單流方式學(xué)習(xí)空間信息。作者將細(xì)節(jié)預(yù)測(cè)建模為二值分割任務(wù)。
首先,利用Laplacian算子對(duì)分割后的Ground-truth進(jìn)行細(xì)節(jié)映射detail map Ground-truth(如圖5(c)所示)。在Stage-3中插入detail Head生成detail feature map。
然后,使用detail ground-truth作為detail feature map的引導(dǎo)來(lái)指導(dǎo)low-level layers學(xué)習(xí)spatial detail feature。如圖6(d)所示,經(jīng)過(guò)detail引導(dǎo)的feature map比圖6(c)所示的結(jié)果可以編碼更多的空間細(xì)節(jié)。

最后,將學(xué)習(xí)到的細(xì)節(jié)特征與解碼器深度塊的上下文特征融合,進(jìn)行分割預(yù)測(cè)。
1、Detail Ground-truth Generation
通過(guò)detail Aggregation模塊從語(yǔ)義分割ground truth中生成binary detail ground-truth,如圖5(c)中虛線藍(lán)框所示。這種運(yùn)算可以通過(guò)2-D拉普拉斯核卷積和可訓(xùn)練的卷積來(lái)實(shí)現(xiàn)。
首先,使用如圖5(e)所示的Laplacian算子生成不同步幅的soft thin detail feature map以獲取多尺度細(xì)節(jié)信息。
然后,我們將細(xì)節(jié)特征映射上采樣到原始大小,并融合一個(gè)可訓(xùn)練的11 - 1卷積來(lái)進(jìn)行動(dòng)態(tài)重加權(quán)。
最后,利用邊界和角點(diǎn)信息采用閾值0.1將預(yù)測(cè)細(xì)節(jié)轉(zhuǎn)化為最終的binary detail ground-truth。
2、Detail Loss
由于detail pixels的數(shù)量遠(yuǎn)少于非detail pixels,很明顯detail預(yù)測(cè)是一個(gè)類不平衡問(wèn)題。由于加權(quán)交叉熵總是導(dǎo)致粗糙的結(jié)果,于是作者采用binary cross-entropy和dice loss聯(lián)合優(yōu)化細(xì)節(jié)學(xué)習(xí)。dice loss衡量的是預(yù)測(cè)map和ground-truth之間的重疊。此外,它對(duì)前景/背景像素的數(shù)量不敏感,這意味著它可以緩解類不平衡的問(wèn)題。因此,對(duì)于高度H、寬度W的預(yù)測(cè)detail圖,detail loss 公式如下:

其中為預(yù)測(cè)的細(xì)節(jié),為相應(yīng)的細(xì)節(jié)ground-truth。為binary cross-entropy loss,為dice loss:

如圖5(b)所示使用Detail Head生成Detail map,該map引導(dǎo)淺層對(duì)空間信息進(jìn)行編碼。Detail Head包括一個(gè)3×3 con-bn-relu算子,然后是一個(gè)1×1卷積來(lái)得到輸出的Detail map。
在實(shí)驗(yàn)中Detail Head被證明是有效的增強(qiáng)特征表示。請(qǐng)注意,此分支將在推斷階段被丟棄。因此,這種側(cè)信息可以在不耗費(fèi)任何推理代價(jià)的情況下輕松地提高分割任務(wù)的準(zhǔn)確性。
4. 實(shí)驗(yàn)
4.1 ImageNet實(shí)驗(yàn)

本文與最新的輕量級(jí)backbone進(jìn)行對(duì)比,之類與常用的ResNet50進(jìn)行一下比較可以看出來(lái)STDC2精度上比ResNet50高出1.1個(gè)百分點(diǎn),但是速度是ResNet50的2.5倍,F(xiàn)LOPs是ResNet50的約1/3.
4.2 語(yǔ)義分割實(shí)驗(yàn)

從上表可以看出來(lái),盡管mIoU在Cityscapes數(shù)據(jù)集不是最高的,甚至還不如比較火的DANet,但是速度卻是最快的,居然達(dá)到了250FPS。只能說(shuō)實(shí)在是香?。?!
4.3 可視化對(duì)比

5 參考
[1].Rethinking BiSeNet For Real-time Semantic Segmentation.
6 推薦閱讀
YOLO在升級(jí) | PP-YOLO v2開(kāi)源致敬YOLOV4攜帶Tricks又準(zhǔn)又快地歸來(lái)(附論文與源碼)
簡(jiǎn)單有效 | Transformer通過(guò)剪枝降低FLOPs以走向部署(文末獲取論文)
經(jīng)典Transformer | CoaT為T(mén)ransformer提供Light多尺度的上下文建模能力(附論文下載)
又改ResNet | 重新思考ResNet:采用高階方案的改進(jìn)堆疊策略(附論文下載)
本文論文原文獲取方式,掃描下方二維碼
回復(fù)【STDC2】即可獲取論文與源碼
長(zhǎng)按掃描下方二維碼加入交流群
長(zhǎng)按掃描下方二維碼添加小助手。
可以一起討論遇到的問(wèn)題
聲明:轉(zhuǎn)載請(qǐng)說(shuō)明出處
掃描下方二維碼關(guān)注【AI人工智能初學(xué)者】公眾號(hào),獲取更多實(shí)踐項(xiàng)目源碼和論文解讀,非常期待你我的相遇,讓我們以夢(mèng)為馬,砥礪前行!??!
點(diǎn)“在看”給我一朵小黃花唄![]()
