超強(qiáng)語(yǔ)義分割算法!基于語(yǔ)義流的快速而準(zhǔn)確的場(chǎng)景解析
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)

論文地址:https://arxiv.org/abs/2002.10120
代碼地址:https://github.com/donnyyou/torchcv
該論文提出了一種有效且快速的場(chǎng)景解析方法。通常,提高場(chǎng)景解析或語(yǔ)義分割性能的常用方法是獲得具有強(qiáng)大語(yǔ)義表示的高分辨率特征圖。廣泛使用的有兩種策略:使用帶孔(空洞)卷積或特征金字塔進(jìn)行多尺度特征的融合,但會(huì)有計(jì)算量大、穩(wěn)定性的考驗(yàn)。
受光流技術(shù)啟發(fā),通常需要在相鄰視頻幀之間進(jìn)行運(yùn)動(dòng)對(duì)齊,文章中提出了一種流對(duì)齊模塊(FAM),以學(xué)習(xí)相鄰層級(jí)特征圖之間的語(yǔ)義流,并有效地將高層特征傳播到高分辨率特征當(dāng)中并進(jìn)行對(duì)齊。此外,將FAM模塊集成到一個(gè)通用的金字塔結(jié)構(gòu)中,使得即使在非常輕量的骨干網(wǎng)絡(luò)(如ResNet-18)上,也比其他實(shí)時(shí)方法具有更高的性能。
實(shí)驗(yàn)方面,在幾個(gè)具有挑戰(zhàn)性的數(shù)據(jù)集上進(jìn)行了廣泛的實(shí)驗(yàn),包括Cityscapes,PASCALContext,ADE20K和CamVid。特別是,網(wǎng)絡(luò)在Cityscapes上達(dá)到80.4%mIoU,幀速率為26 FPS。

場(chǎng)景解析或語(yǔ)義分割是一項(xiàng)基本的視覺任務(wù),旨在對(duì)圖像中的每個(gè)像素進(jìn)行正確分類。語(yǔ)義分割具有兩大需求,即高分辨率和高層語(yǔ)義,而這兩個(gè)需求和卷積網(wǎng)絡(luò)設(shè)計(jì)是矛盾的。
卷積網(wǎng)絡(luò)從輸入到輸出,會(huì)經(jīng)過多個(gè)下采樣層(一般為5個(gè),輸出原圖1/32的特征圖),從而逐步擴(kuò)大視野獲取高層語(yǔ)義特征,高層語(yǔ)義特征靠近輸出端但分辨率低,高分率特征靠近輸入端但語(yǔ)義層次低。高層特征和底層特征都有各自的弱點(diǎn),各自的分割問題如圖1所示,第二行高層特征的分割結(jié)果保持了大的語(yǔ)義結(jié)構(gòu),但小結(jié)構(gòu)丟失嚴(yán)重;第三行低層特征的分割結(jié)果保留了豐富的細(xì)節(jié),但語(yǔ)義類別預(yù)測(cè)的很差。

FCN(全卷積網(wǎng)絡(luò))由于使用了下采樣池和卷積層的堆疊,因此缺少對(duì)性能至關(guān)重要的邊界細(xì)節(jié)信息。為了緩解這個(gè)問題,其他方法在其網(wǎng)絡(luò)的最后幾個(gè)階段應(yīng)用空洞卷積來生成具有強(qiáng)語(yǔ)義表示的特征圖,同時(shí)保持高分辨率。但是,這樣做不可避免地需要進(jìn)行大量的額外計(jì)算。
為了不僅維護(hù)詳細(xì)的分辨率信息,而且獲得表現(xiàn)出強(qiáng)大語(yǔ)義表示的特征,另一個(gè)方向是建立類似于FPN的模型,該模型利用橫向路徑以自上而下的方式融合特征圖。這樣,最后幾層的深層特征以高分辨率增強(qiáng)了淺層特征,因此,經(jīng)過細(xì)化的特征有可能滿足上述兩個(gè)因素,并有利于精度的提高。然而,與那些在最后幾個(gè)階段持有粗大特征圖的網(wǎng)絡(luò)相比,此類方法仍會(huì)遇到精度問題。
FPN(Feature Pyramid Network)
將深層信息上采樣,與淺層信息逐元素地相加,從而構(gòu)建了尺寸不同的特征金字塔結(jié)構(gòu),性能優(yōu)越,現(xiàn)已成為目標(biāo)檢測(cè)算法的一個(gè)標(biāo)準(zhǔn)組件。FPN的結(jié)構(gòu)如下所示。

自下而上:最左側(cè)為普通的卷積網(wǎng)絡(luò),默認(rèn)使用ResNet結(jié)構(gòu),用作提取語(yǔ)義信息。C1代表了ResNet的前幾個(gè)卷積與池化層,而C2至C5分別為不同的ResNet卷積組,這些卷積組包含了多個(gè)Bottleneck結(jié)構(gòu),組內(nèi)的特征圖大小相同,組間大小遞減。
自上而下:首先對(duì)C5進(jìn)行1×1卷積降低通道數(shù)得到P5,然后依次進(jìn)行上采樣得到P4、P3和P2,目的是得到與C4、C3與C2長(zhǎng)寬相同的特征,以方便下一步進(jìn)行逐元素相加。這里采用2倍最鄰近上采樣,即直接對(duì)臨近元素進(jìn)行復(fù)制,而非線性插值。
橫向連接(Lateral Connection):目的是為了將上采樣后的高語(yǔ)義特征與淺層的定位細(xì)節(jié)特征進(jìn)行融合。高語(yǔ)義特征經(jīng)過上采樣后,其長(zhǎng)寬與對(duì)應(yīng)的淺層特征相同,而通道數(shù)固定為256,因此需要對(duì)底層特征C2至C4進(jìn)行11卷積使得其通道數(shù)變?yōu)?56,然后兩者進(jìn)行逐元素相加得到P4、P3與P2。由于C1的特征圖尺寸較大且語(yǔ)義信息不足,因此沒有把C1放到橫向連接中。
卷積融合:在得到相加后的特征后,利用3×3卷積對(duì)生成的P2至P4再進(jìn)行融合,目的是消除上采樣過程帶來的重疊效應(yīng),以生成最終的特征圖。
FPN對(duì)于不同大小的RoI,使用不同的特征圖,大尺度的RoI在深層的特征圖上進(jìn)行提取,如P5,小尺度的RoI在淺層的特征圖上進(jìn)行提取,如P2。
文中認(rèn)為,精度較差的主要原因在于這些方法從較深層到較淺層的無效語(yǔ)義傳遞。為了緩解這個(gè)問題,文中建議學(xué)習(xí)具有不同分辨率的層之間的語(yǔ)義流。語(yǔ)義流的靈感來自光流方法,該方法用于在視頻處理任務(wù)中對(duì)齊相鄰幀之間的像素。
在語(yǔ)義流的基礎(chǔ)上,針對(duì)場(chǎng)景解析領(lǐng)域,構(gòu)造了一種新穎的網(wǎng)絡(luò)模塊,稱為流對(duì)齊模塊(FAM)。它以相鄰級(jí)別的要素為輸入,生成偏移場(chǎng),然后根據(jù)偏移場(chǎng)將粗略特征矯正為具有更高分辨率的精細(xì)特征。由于FAM通過非常簡(jiǎn)單的操作將語(yǔ)義信息從深層有效地傳輸?shù)綔\層,因此在提高準(zhǔn)確性和保持超高效率方面都顯示出了卓越的功效。而且,所提議的模塊是端到端可訓(xùn)練的,并且可以插入任何骨干網(wǎng)絡(luò)以形成稱為SFNet的新網(wǎng)絡(luò)。
論文主要貢獻(xiàn):
提出了一種新穎的基于流的對(duì)齊模塊(FAM),以學(xué)習(xí)相鄰級(jí)別的特征圖之間的語(yǔ)義流,并有效地將高級(jí)特征傳播到高分辨率的特征。
將FAM模塊插入特征金字塔網(wǎng)絡(luò)(FPN)框架,并構(gòu)建名為SFNet的特征金字塔對(duì)齊網(wǎng)絡(luò),以快速準(zhǔn)確地進(jìn)行場(chǎng)景解析。
詳細(xì)的實(shí)驗(yàn)和分析表明,提出的模塊在提高精度和保持輕量化方面均有效。在Cityscapes,Pascal Context,ADE20K和Camvid數(shù)據(jù)集上取得了最先進(jìn)的結(jié)果。具體來說,網(wǎng)絡(luò)在Cityscapes數(shù)據(jù)集上實(shí)現(xiàn)了80.4%的mIoU,同時(shí)在單個(gè)GTX 1080Ti GPU上實(shí)現(xiàn)了26 FPS的實(shí)時(shí)速度。
2. 背景
對(duì)于場(chǎng)景解析,主要有兩種用于高分辨率語(yǔ)義圖預(yù)測(cè)的方法。一種方法是將空間和語(yǔ)義信息都保留在主要路徑上,而另一個(gè)方法將空間和語(yǔ)義信息分布到網(wǎng)絡(luò)中的不同部分,然后通過不同的策略將它們?nèi)诤虾喜ⅰ?/strong>
第一個(gè)方法主要基于空洞卷積,它在網(wǎng)絡(luò)中保留了高分辨率的特征圖。
第二個(gè)方法都將特征圖縮小到相當(dāng)?shù)偷姆直媛剩⒁院艽蟮谋壤龑?duì)它們進(jìn)行升采樣,這會(huì)導(dǎo)致結(jié)果變差,尤其是對(duì)于小物體和物體邊界。
之前的方法中主流的做法是,通過雙線性插值方法來進(jìn)行上采樣,并且以自上而下的方式將高級(jí)特征圖逐漸融合為低級(jí)特征圖,該方法最初是為對(duì)象檢測(cè)提出的,最近用于場(chǎng)景解析或語(yǔ)義分割鄰域中。

雖然整個(gè)設(shè)計(jì)看起來像具有下采樣編碼器和上采樣解碼器的對(duì)稱性,但是一個(gè)重要的問題在于通用和簡(jiǎn)單的雙線性插值上采樣算法會(huì)破壞對(duì)稱性。雙線性插值上采樣通過對(duì)一組統(tǒng)一采樣的位置進(jìn)行插值來恢復(fù)下采樣特征圖的分辨率(即,它只能處理一種固定的和預(yù)定義的未對(duì)準(zhǔn)),而由殘差連接導(dǎo)致的特征圖之間的未對(duì)準(zhǔn)要復(fù)雜得多。因此,需要明確建立特征圖之間的對(duì)應(yīng)關(guān)系以解決其真正的未對(duì)準(zhǔn)問題。
光流對(duì)準(zhǔn)模塊(FAM)

網(wǎng)絡(luò)結(jié)構(gòu)

整個(gè)網(wǎng)絡(luò)架構(gòu)包含自下而上的路徑作為編碼器和自上而下的路徑作為解碼器,通過使用上下文建模模塊替換完全連接的層,編碼器具有與圖像分類相同的主干,并且解碼器配有FPN(特征金字塔) FAM(光流對(duì)齊模塊)PPM(金字塔池化模塊)。
backbone
通過刪除最后一個(gè)完全連接的層,選擇從ImageNet 預(yù)訓(xùn)練的用于圖像分類的標(biāo)準(zhǔn)網(wǎng)絡(luò)作為我們的骨干網(wǎng)絡(luò)。具體而言,在實(shí)驗(yàn)中使用了ResNet系列,ShuffleNet v2 等。所有主干網(wǎng)絡(luò)具有四個(gè)帶有殘差塊的階段,并且每個(gè)階段在第一卷積層中都有stride=2以對(duì)特征圖進(jìn)行下采樣,以實(shí)現(xiàn)計(jì)算效率和更大的感受野。
上下文模塊
上下文模塊 在場(chǎng)景解析中捕獲遠(yuǎn)程上下文信息起著重要的作用,在本文中采用了金字塔池模塊(PPM)(源自PSPNet經(jīng)典工作)。由于PPM輸出的分辨率特征圖與最后一個(gè)殘差模塊相同,因此將PPM和最后一個(gè)殘差模塊一起視為FPN的最后一個(gè)階段。其他模塊,例如ASPP 也可以很容易地以類似的方式插入整個(gè)網(wǎng)絡(luò)的體系結(jié)構(gòu)當(dāng)中,“實(shí)驗(yàn)”部分進(jìn)行了驗(yàn)證。
具有對(duì)齊模塊的FPN(特征金字塔)
編碼器得到特征圖后送入解碼器階段,并將對(duì)齊的特征金字塔用于最終場(chǎng)景解析語(yǔ)義分割任務(wù)。在FPN的自上而下的路徑中用FAM替換正常的雙線性插值實(shí)現(xiàn)上采樣。
Cityscapes數(shù)據(jù)集上的實(shí)驗(yàn)
實(shí)現(xiàn)細(xì)節(jié):使用PyTorch 框架進(jìn)行以下實(shí)驗(yàn)。所有網(wǎng)絡(luò)都在相同的設(shè)置下訓(xùn)練,其中批量大小為16的隨機(jī)梯度下降(SGD)被用作優(yōu)化器,動(dòng)量為0.9,重量衰減為5e-4。所有模型都經(jīng)過50K迭代訓(xùn)練,初始學(xué)習(xí)率為0.01。數(shù)據(jù)擴(kuò)充包含隨機(jī)水平翻轉(zhuǎn),縮放范圍為[0.75,2.0]的隨機(jī)大小調(diào)整以及裁剪大小為1024×1024的隨機(jī)裁剪。

表1.以ResNet-18為骨干的基線方法的消融研究

幾乎可以改善所有類別,特別是對(duì)于卡車而言,mIoU改善了19%以上。下圖可視化了這兩種方法的預(yù)測(cè)誤差,其中FAM極大地解決了大型物體(例如卡車)內(nèi)部的歧義,并為較小和較薄的物體(例如桿,墻的邊緣)產(chǎn)生了更精確的邊界。


表. Cityscapes測(cè)試集測(cè)試效果與最新實(shí)時(shí)模型的比較。為了公平比較,還考慮了輸入大小,并且所有模型都使用單比例推斷。

表7. Cityscapes測(cè)試集測(cè)試效果與最新模型的比較。為了獲得更高的準(zhǔn)確性,所有模型都使用多尺度推斷。
更多實(shí)驗(yàn)細(xì)節(jié),可關(guān)注原文。
在本文中使用所提出的流對(duì)齊模塊,高級(jí)特征可以很好地流向具有高分辨率的低級(jí)特征圖。通過丟棄無用的卷積以減少計(jì)算開銷,并使用流對(duì)齊模塊來豐富低級(jí)特征的語(yǔ)義表示,我們的網(wǎng)絡(luò)在語(yǔ)義分割精度和運(yùn)行時(shí)間效率之間實(shí)現(xiàn)了最佳折衷。在多個(gè)具有挑戰(zhàn)性的數(shù)據(jù)集上進(jìn)行的實(shí)驗(yàn)說明了我們方法的有效性。由于我們的網(wǎng)絡(luò)非常高效,并且具有與光流方法相同的思路來對(duì)齊不同的地圖(即不同視頻幀的特征圖),因此它可以自然地?cái)U(kuò)展到視頻語(yǔ)義分割中,從而在層次上和時(shí)間上對(duì)齊特征圖。此外,也可以將語(yǔ)義流的概念擴(kuò)展到其他相關(guān)領(lǐng)域,例如全景分割等。
當(dāng)然,這里面還要很多問題待探究,比如:
1、用于特征對(duì)齊的最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)應(yīng)該怎么設(shè)計(jì)?目前是采用了類似FlowNet-S的結(jié)構(gòu),F(xiàn)lowNet-C結(jié)構(gòu)不適合于該任務(wù),原因是高低層特征之間不能像前后幀圖像對(duì)應(yīng)層特征之間算相似性。
2、高低層特征對(duì)不齊的原因是什么?
3、能否在對(duì)不齊發(fā)生時(shí)就記錄下來,而不是事后補(bǔ)救(類似SegNet那種記錄Pooling Indices的方式)?
參考
1、目標(biāo)檢測(cè)系列秘籍三:多尺度檢測(cè)
2、知乎文章:https://zhuanlan.zhihu.com/p/110667995
好消息!
小白學(xué)視覺知識(shí)星球
開始面向外開放啦??????
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程 在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。 下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講 在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。 下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講 在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。 交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

