語義分割 | context relation

2021-03-01 機器學習研究組訂閱
問題背景

近年來,語義分割的模型幾乎都是基於FCN框架,利用Dilated Conv、Up sample、skip connection等各種組件來變化。 但是這種模型有很大的問題:無法對不同的像素之間的關係進行顯式的建模,像素之間的唯一聯繫就是「感受野」的重疊。所以從本質上來說,這種語義分割框架是一種Dense prediction, 是分立的對每個像素進行預測。

這顯然不符合人類對事物的認知方式,人腦中的分割類似於:把一個場景中相似的像素聚成一團,然後宏觀的判斷這一團像素是什麼,在判斷類別時,還會利用類別之間的依賴關係聯合推理。肯定不會一個點一個點的看這是什麼。

由此,對語義分割中的不同像素/上下文之間的關係建模就非常重要,近期的研究中,很多論文著眼於「context」和「relation」,於是結合之前的方法,對於這些建模idea做一個總結。每篇文章只說核心思想,不詳細介紹。

1. 近期比較火的利用self-attention建立spatial-wise關係

2. 利用self-attention或者context encoding建立channel之間的關係

3. 利用圖卷積建模不同區域/類別之間的依賴關係

4. 利用Metric learning, 建立像素之間的關係

5. 基於CRF思想的各種變種

1.利用self-attention建立spatial-wise關係《OCNet: Object Context Network for Scene Parsing》
《CCNet: Criss-Cross Attention for Semantic Segmentation》
《Dual Attention Network for Scene Segmentation》
《Non-local Neural Networks》

這幾篇的本質思想是一樣的,前三篇很像是對最後一篇的發展和應用。以第一篇為例。

之前對神經網絡的研究表明,大的感受野對於各種視覺問題都是很重要的,但是後來研究發現,由於感受野會有退化的問題,即使使用Global pooling也不能帶來全圖的感受野。於是建立長距離的context關係成為了一個要點。

1.1 《OCNet: Object Context Network for Scene Parsing》

OCNet依據像素間的特徵相似性,為每一個像素建立了一個Object context map,即把 「 對一個像素點決策」 變成 「所有相似的像素點放在一起決策」,利用像素之間依賴關係不僅僅是像ensemble一樣使得結果更加魯棒, 並且可以再訓練中利用各個像素的特徵相互提升。

如圖第一行第一列,判斷十字位置的像素時,不僅僅看單個位置的特徵,而是把所有車子的特徵放在一起來判斷。

實現上採用non-local方法,記輸入OC模塊之前的特徵為 H*W*C,為例避免計算量過大,可以先對C進行降維。

1)把H*W*C展平為 N*C
2)計算像素之間的Affinity: ( N*C) x (N*C)T = (N,N)代表像素間的吸引力
3)用softmax或者其他方式歸一化,使得像素間的依賴成為概率分布
4)(N*N)x (N*C) = (N*C)之後再展為H*W*C。

由此每一個position都是一個C維的向量,該向量融合了圖中相似的所有像素的特徵。細節看代碼:https://github.com/PkuRainBow/OCNet.pytorch  利用該模塊得到一個新特徵可以直接和原特徵concat,也可以用來改進Pyramid Pooling和ASPP模塊。

作者在很多數據集包括LIP上都做了實驗,都達到SOTA效果。和下面幾篇文章相比,這篇不一樣的地方就是利用OC機制改進了Pyramid Pooling和ASPP模塊了。

1.2《CCNet: Criss-Cross Attention for Semantic Segmentation》

這些論文都是同期出來的,這篇的思想可以說本質上和OCNet是一樣的,OCNet的亮點是把non-local融入了SPP, ASPP module, CCNet是利用一個Criss-Cross機制,大大化簡了Non-local中求解Affinity的計算量,速度和計算量小了很多,但是release的結果比OCNet差不了多少。

Non-local在做Affinity Matrix的時候,是在整張圖所有的Pixel之間求similarity, 這樣就要求W*H*W*H個pairwise similarity,這是很大的計算量。CCNet提出只需要在十字路徑上做no-local操作,通過循環兩次,就基本可以把信息傳播到全圖,如下圖( 具體推導看原文)

從Pipeline上看,CCNet和OCNet的本質是一樣的

1.3《Dual Attention Network for Scene Segmentation》

在spatial維度是完全一樣的思路,利用Non-local結構建立long range relation。不僅如此,這篇文章還把self-attention的思想拓展到了channel維度,由於不同的channel代表不同的濾波器響應,在高層特徵中可以代表不同的語義概念,作者希望利用channel-wise attention建立不同語義類別之間的依賴關係。

2.利用self-attention或者context encoding建立channel之間的關係

Attention機制就如同剛剛介紹的DANet, 和spatial wise attention都是一樣的。另外還有一篇早一點的《Context Encoding for Semantic Segmentation》

這篇算很有代表性的文章,文章的主旨是建立一個Context Encoding Module用於對場景進行編碼,由於不同的場景中不同的物件出現的可能性不一樣。比如在天空的場景中,就要強化飛機的概率,不能強化船的概率。本文用Global Pooling得到場景特徵,利用類似於senet的思想建立channel之間的關係。

3.利用圖卷積建模不同區域/類別之間的依賴關係

3.1《Graph-Based Global Reasoning Networks》
我覺得這是最好的一篇文章,利用GCN建立不同region之間的relation。本文的核心思想如下圖,在圖像幾何空間(coordinate space),由於每一個像素都有特徵表示,所以特徵維度非常高,這麼多的特徵之間,不容易進行信息流動。如下圖:最好的情況就是把a圖投影到一個Interaction space, 把每個像素投影到不同的節點,比如:人,牆壁,電視機。。。然後再利用這些節點之間的依賴關係進行信息流動,之後再把這些信息交互過的節點,投影回到之前的坐標空間。

作者找到了一種簡介的表示方法來實現上述目的,使用簡單的1x1卷積做空間投影,使用圖卷積做information diffusion。圖卷積中不同節點的依賴關係也是依靠1x1的卷積學習得到。

其實這篇文章的出發點和上述的文章有相似之處: 在宏觀上把每個像素的決策問題轉變成一團像素的決策問題,spatial-wise self-attention的方法只能讓信息在同一個類別的像素之間流動,這裡作者利用圖卷積使得信息在不同的類別之間流動,建立了不同類別/區域間的依賴關係。

感覺這篇文章,作者的設計只是在空間「維度」上滿足了自己的設想,在具體如何對不同的region或者semantic class建模上其實還有很多內容可以繼續探究。

4.利用Metric learning, 建立像素之間的關係

《Adaptive Affinity Fields for Semantic Segmentation》

上述的文章都是全圖之間,比較宏觀的語義依賴於關連,這篇文章講的是利用局部像素之間的關係使得網絡學習到更好的表徵能力。

這篇文章的思路很簡潔:屬於同一個類別的兩個像素之間的語義表示要儘可能相似,屬於不同類別的語義表示需要距離更遠,於是作者引入度量學習的思想,在一定的區域內利用Affinity Fields, 使得每個小區域內屬於同一個類別的像素特徵儘可能相似,不同類別像素儘可能有區別。這個思想其實也是「把逐像素預測問題變成一個更加宏觀的預測」

5.CRF的變種

CRF在語義分割中早已經得到了廣泛的應用,CRF能work那就說明了基於底層特徵和位置特徵簡歷像素之間的依賴關係是可行的,這樣其實也可以為no-local類似的方法提供思路。

其餘變種的還有把CRF套到卷積中以提高計算效率,把類似CRF的東西寫到Loss中

《Convolutional CRFs for Semantic Segmentation》:https://arxiv.org/abs/1805.04777《On Regularized Losses for Weakly-supervised CNN Segmentation》

想要了解更多資訊,請掃描下方二維碼,關注機器學習研究會

                                          

轉自:極市平臺

相關焦點

  • 語義分割入門的總結
    不同於分類算法,CRFs 在進行預測前,會考慮像素的鄰近信息(neighboring context),如像素間的關係. 這使得 CRFs 成為語義分割的理想候選者. 這裡介紹下 CRFs 在語義分割中的應用.圖像中的每個像素都是與有限的可能狀態集相關. 在語義分割中,target 類別標籤就是可能狀態集.
  • 語義分割入門的一點總結
    不同於分類算法,CRFs 在進行預測前,會考慮像素的鄰近信息(neighboring context),如像素間的關係. 這使得 CRFs 成為語義分割的理想候選者. 這裡介紹下 CRFs 在語義分割中的應用.圖像中的每個像素都是與有限的可能狀態集相關. 在語義分割中,target 類別標籤就是可能狀態集.
  • 實時語義分割算法大盤點
    在許多領域,如機器人和自動駕駛汽車,語義圖像分割是至關重要的,因為它提供了必要的上下文,以採取行動,基於對場景的理解在像素級。帶有定位的分類,對分類任務的一個擴展,使用邊界框將對象框起來在分類;實例分割,是語義分割的擴展,在實例分割中,相同類型的不同對象被視為不同的對象;全景分割,結合語義分割和實例分割,所有像素被分配一個類標籤,所有對象實例都被獨立分割《A Comparative Study of Real-time Semantic Segmentation for Autonomous Driving》https:/
  • 基於深度學習的語義分割綜述
    圖像分割可以表述為帶有語義標籤的像素分類問題(語義分割)或單個對象分割問題(實例分割)。語義分割對所有圖像像素使用一組對象類別(如人、車、樹、天空)進行像素級標記,因此通常比預測整個圖像的單個標籤的圖像分類困難。實例分割通過檢測和描繪圖像中的每個感興趣對象(例如,個體的分割),進一步擴展了語義分割的範圍。
  • 語義分割雙料冠軍!微軟 OCRNet化解語義分割上下文信息缺失難題|ECCV 2020
    針對語義分割中如何構建上下文信息,微軟亞洲研究院和中科院計算所的研究員們提出了一種新的物體上下文信息——在構建上下文信息時顯式地增強了來自於同一類物體的像素的貢獻,這種新的上下文信息從語義分割的定義出發,符合第一性原理思維,在2019年7月和2020年1月的 Cityscapes leaderboard 提交結果中都取得了語義分割任務第一名的成績。
  • 全監督語義分割訓練新範式「像素對比學習」,蘇黎世聯邦理工等出品
    最近,蘇黎世聯邦理工學院及商湯研究院的研究者提出了一種新的、全監督語義分割訓練範式:像素對比學習(pixel-wise contrastive learning),強調利用訓練集中、跨圖像的像素 - 像素對應關係(cross-image pixel-to-pixel relation)來學習一個結構化(well structured)的特徵空間,用來替代傳統的、基於圖像的(image-wise)訓練範式
  • 圖像語義分割
    圖像語義分割是計算機視覺中十分重要的領域。上圖為語義分割的一個實例,其目標是預測出圖像中每一個像素的類標籤。圖像語義分割是圖像處理和計算機視覺技術中關於圖像理解的重要的一環。語義分割對圖像中的每一個像素點進行分類,確定每個點的類別(如屬於背景、邊緣或身體等)需要和實例分割區分開來。語義分割沒有分離同一類的實例;它關心的只是每個像素的類別,如果輸入對象中有兩個相同類別的對象,則分割本身不會將它們區分為單獨的對象。
  • 一文讀懂語義分割與實例分割
    圖像分割技術是目前預測圖像領域最熱門的一項技術,原因在於上述許多計算機視覺任務都需要對圖像進行智能分割,以充分理解圖像中的內容,使各個圖像部分之間的分析更加容易。本文會著重介紹語義分割和實例分割的應用以及原理。
  • DilatedNet - 擴張卷積(語義分割)
    基本上下文模塊basic context module在整個模塊中僅有1個通道(1C,1 channel),而大上下文模塊large context module從1C 作為輸入到第7層的32C的通道數。 3.結果3.1.
  • 2019 語義分割指南
    語義分割是指將圖像中的每個像素歸於類標籤的過程,這些類標籤可以包括一個人、汽車、鮮花、一件家具等。我們可以將語義分割認為是像素級別的圖像分類。例如,在有許多汽車的圖像中,分割會將所有對象標記為汽車對象。然後,一個稱為實例分割的模型能夠標記一個出現在圖像中的物體的獨立實例。
  • Deeplab語義分割的發展
    「經典圖像分割方法—基於深度學習的語義分割—Deeplab及其變形」在計算機視覺中,簡單的圖像分割是將數字圖像分為多個段(像素集)的過程。圖像分割是一個長期存在的計算機視覺問題。但是,語義分割是在像素級別「理解」圖像的圖像分割技術。換句話說,語義分割是將每個像素分析和分類為多個類別(標籤)。
  • 【圖解AI】什麼是語義分割、實例分割、全景分割
    detection)識別圖像中存在的內容和檢測其位置,如下圖,以識別和檢測人(person)為例 3、語義分割(instance segmentation)目標檢測和語義分割的結合,在圖像中將目標檢測出來(目標檢測),然後對每個像素打上標籤(語義分割)。
  • 語義分割概念及應用介紹
    比如自動駕駛汽車已經逐漸成為可能,但在整個深度學習過程,需要算法識別和學習作為原始數據提供的圖像,在這一過程中,應用到了語義分割技術。下面讓我們來看看語義分割的需求是如何演變的。早期,計算機視覺的初始應用需求只是識別基本元素,例如邊緣(線和曲線)或漸變。然而,僅僅通過全像素語義分割的創造來理解像素級的圖像,它將屬於同一目標的圖像部分聚集在一起,從而擴展了語義分割的應用場景。
  • 入門 | 一文了解什麼是語義分割及常用的語義分割方法有哪些
    我們已經開始發展自動駕駛汽車和智慧機器人,這些都需要深入理解周圍環境,因此精確分割實體變得越來越重要。什麼是語義分割?語義分割是計算機視覺中的基本任務,在語義分割中我們需要將視覺輸入分為不同的語義可解釋類別,「語義的可解釋性」即分類類別在真實世界中是有意義的。
  • 入門| 一文了解什麼是語義分割及常用的語義分割方法有哪些
    我們已經開始發展自動駕駛汽車和智慧機器人,這些都需要深入理解周圍環境,因此精確分割實體變得越來越重要。什麼是語義分割?語義分割是計算機視覺中的基本任務,在語義分割中我們需要將視覺輸入分為不同的語義可解釋類別,「語義的可解釋性」即分類類別在真實世界中是有意義的。
  • 重新思考語義分割範式:SETR
    & 臉書)文章:https://arxiv.org/abs/2012.15840源碼官方:https://github.com/fudan-zvg/SETR 第三方復現(Pytorch):https://github.com/gupta-abhay/setr-pytorch二、論文解讀2.1 動機自全卷積神經網絡(FCN)提出以來,現有的語義分割框架大都是基於編碼器
  • ECCV 2020 | OCRNet化解語義分割上下文信息缺失難題
    針對語義分割中如何構建上下文信息,微軟亞洲研究院和中科院計算所的研究員們提出了一種新的物體上下文信息——在構建上下文信息時顯式地增強了來自於同一類物體的像素的貢獻,這種新的上下文信息從語義分割的定義出發,符合第一性原理思維,在2019年7月和2020年1月的 Cityscapes leaderboard 提交結果中都取得了語義分割任務第一名的成績。
  • 從全卷積網絡到大型卷積核:深度學習的語義分割全指南
    By路雪 2017年7月14日  語義分割一直是計算機視覺中十分重要的領域,隨著深度學習的流行,語義分割任務也得到了大量的進步。本文首先闡釋何為語義分割,然後再從論文出發概述多種解決方案。本文由淺層模型到深度模型,簡要介紹了語義分割各種技術,雖然本文並沒有深入講解語義分割的具體實現,但本文簡要地概述了每一篇重要論文的精要和亮點,希望能給讀者一些指南。  什麼是語義分割?  語義分割指像素級地識別圖像,即標註出圖像中每個像素所屬的對象類別。
  • 語義分割-多層特徵融合
    點擊上方「OpenCV中文網」,選擇加"星標"重磅乾貨,第一時間送達本文原載自知乎,已獲作者授權轉載,請勿二次轉載,https://zhuanlan.zhihu.com/p/110667995語義分割由此,語義分割具有兩大需求,即高解析度和高層語義,而這兩個需求和卷積網絡設計是矛盾的。卷積網絡從輸入到輸出,會經過多個下採樣層(一般為5個,輸出原圖1/32的特徵圖),從而逐步擴大視野獲取高層語義特徵,高層語義特徵靠近輸出端但解析度低,高分率特徵靠近輸入端但語義層次低。
  • 圖像語義分割入門:FCN/U-Net網絡解析
    語義分割即是對圖像中每一個像素點進行分類,確定每個點的類別(如屬於背景、人或車等),從而進行區域劃分。目前,語義分割已經被廣泛應用於自動駕駛、無人機落點判定等場景中。與分類不同的是,語義分割需要判斷圖像每個像素點的類別,進行精確分割。圖像語義分割是像素級別的!