超強語義分割算法!基于語義流的快速而準確的場景解析
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達

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

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

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

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

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

網絡結構

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

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

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


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

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

