1. 程式人生 > >影象分割任務中的尺度問題

影象分割任務中的尺度問題

在影象的目標檢測任務中,由於目標尺寸變化,需要在不同的尺寸下對目標進行檢測,從而演化出許許多多解決目標檢測任務中的尺度問題的方法,比如Fast-RCNN,及Faster-RCNN及後面的SSD,YOLO等網路。
那麼在場景解析任務中是否存在尺度問題呢?答案是肯定的。
場景解析在這裡確切地說是基於影象的畫素級別的語義分割,不同尺寸的物體需要在不同的感受野範圍內才能相對容易的將其與背景分割開來。那麼如何解決不同的場景或分割的目標需要不同尺寸感受野的問題呢?也即是如何解決分割任務中的尺度問題呢?

在影象目標檢測任務中,我們知道目前有許多深度學習網路使用基於SPPNET演化而來的多種尺寸的特徵進行融合的方式來解決尺度變化的問題。而在影象分割任務中,同樣可以採用類似的思想,例如PSPNET中的金字塔解析網路、Refine-NET中影象的多級處理等;
首先,讓我們從兩方面回顧一下,影象分割任務的發展歷程:
(1)從使用的資料集看影象分割;
早些時候的場景解析任務是對2668張圖片分出33個場景,以LMO dataset為代表;
稍微近一些的是PASCAL VOC資料集上,在相似的物體上提供了更加詳細的標籤;比如椅子和沙發,馬和牛等;
之後出現的KITTI與CityScapes上都有語義分割任務,比如道路可通行區域等。
最近的ADE20K dataset是最有挑戰性的一個數據集,提供了尺度變化更大、詞彙內容豐富且類別更多的資料。
從使用的資料集發展由易到難上能夠看出影象語義分割的逐步發展,這些進步與軟硬體裝置尤其是軟體演算法的長足進步是牢不可分的。
這裡寫圖片描述


這裡寫圖片描述
圖1 左側圖為資料集的難易程度,右側為最具挑戰性的ADE20K資料示例
(2)從演算法的發展演化看影象分割:
1) FCN.
在2015年之前,CNN能夠對圖片進行分類,但是怎樣才能識別影象中特定部分的物體還是一個世界性的難題。於是影象語義分割的一個標誌性的發展事件就是神經網路大神Jonathan Long 發表《Fully Convolutional Networks for Semantic Segmentation》,即FCN全卷積網路的誕生,它的貢獻主要有兩點:
(a)使用全卷積替換全連線。不但去除了全連線層對網路結構的限制,還大量減少引數與計算量,提高網路的效能。然後使用反捲積層來上取樣得到與原圖同樣大小的分割圖。這裡使用的全卷積的概念如下圖所示,最開始是在《OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks》文章中提出。
(b)使用跳躍結構將不同尺度與不同感受野情況下的特徵圖結合起來。因為在32倍下采樣後直接上取樣得到的效果是十分模糊的。所以使用上述方式將不同池化層的結果進行上取樣後來優化輸出。我們知道在高層特徵中保留了更多的語義資訊,但丟失了較多的空間位置資訊;而低層特徵保留了更多的細節資訊與位置資訊,但上下文資訊相對較少。此處的資訊融合起到優化結果的作用。
這裡寫圖片描述

這裡寫圖片描述
但是FCN得到的結果不夠精細,對細節不敏感,且沒有充分考慮畫素與畫素直接的關係,缺乏空間一致性。
2)SegNet.這裡寫圖片描述
圖4 SegNet的結構示意圖
2016年劍橋大學提出的SegNet,使用不到1000張圖訓練出城市道路分割網路,對很多場景都有很好的泛化性。其對稱結構有種自編碼器的感覺在裡面,先編碼再解碼,逐步的編碼解碼使得其能夠較多地保留細節資訊,得到的效果總體不錯。
3)DeepLab.
2016年在FCN的基礎上,提出優雅的池化與帶孔的卷積,其貢獻主要如下:
(a)對於repeated convolution導致解析度丟失的問題。作者採用了一個叫做atrous convolution 的卷積操作,同時添加了一個rate 來跳過若干個相鄰的卷積核,起到了maxpooling+ convolution的作用。
這裡寫圖片描述

圖5 DeepLab的帶孔卷積結構示意圖
(b)對於傳統的強行將影象轉換為相同尺寸的方法容易導致某些特徵扭曲或消失,使用了ASPP (atrous SPP)來解決這個問題。通過不同的A convolution 來對影象進行不同程度的縮放,得到不同大小的input feature map,(可以理解成SPP中使用不同大小的proposal),這樣ASPP 就保證了deeplabNet 可以處理不同尺寸的圖片。
這裡寫圖片描述
圖6 DeepLab的ASPP示意圖
這裡介紹了FCN, SegNet/DeconvNet,DeepLab,當然還有一些其他的結構方法,比如有用RNN來做的,還有更有實際意義的weakly-supervised方法等等。總體來說,目前比較通用或常用的框架如圖7所示,這裡的FCN可以替換為其他分割網路。
這裡寫圖片描述
圖7 影象分割通用框架
由於目前的分割網路存在如下三類問題:錯誤的上下文資訊(感受野不合適或不夠大)、易分錯的類別(感受野不夠大)、易忽略的物體分類(感受野不夠小或不合適);於是提出金字塔場景解析網路,如圖9所示。
這裡寫圖片描述
圖8 傳統分割網路存在問題
這裡寫圖片描述
圖9 金字塔場景解析網路示意圖
與SPPnet結構類似,這裡為了去除不同子區域之間的上下文資訊損失,採用層級的全域性先驗知識,包含不同尺度不同區域的資訊,這個結構就叫金字塔池化模組Pyramid Pooling Module。如圖9所示,從輸入影象使用基礎網路得到一定尺寸的特徵圖(這裡90*90),然後對特徵圖使用多個不同尺度的池化,得到不同級別的池化後的特徵圖,之後再將各個不同尺寸的特徵圖上取樣得到同樣尺寸的特徵圖(90*90),之後在concate起來,再使用卷積等操作。這裡最上面的池化後的特徵的感受野是整張影象,下面跟著的2*2的特徵圖其感受野是1/2張影象,再下面的特徵圖的感受野依次減小。目前的池化結構保持了一定的差距,使用concate進行融合,如圖10所示。
這裡寫圖片描述
圖10 金字塔池化網路示意圖
該結構使用金字塔池化實現不同尺度的感受野,有兩層作用:
1,將區域性區域上下文資訊與全域性上下文資訊結合;
2,將整體輪廓資訊與細節紋理結合。因此,在一定程度上解決了分割任務中的多尺度問題。
另外一方面,訓練基礎網路過程中使用了輔助loss,來將複雜的優化問題分階段解決,降低了優化與訓練的難度。