全景分割MaX-DeepLab


image-20211103101522585

摘要

MaX-DeepLab優勢:

加了遮罩:基於包圍框的方法是預測包圍框,不用包圍框的是預測遮罩

端到端,無代理子任務:直接通過transformer預測類別標簽,用二匹配方法,以PQ-style loss指標訓練。

最重要的transformer:引入全局memory路徑,再加上原來的像素CNN路徑,合成雙路徑結構,使得各CNN層可以直接通信(

實驗結果:首次讓基於包圍框和不用包圍框的方法的准確性近乎接近,不用包圍框可以使預測更無條件進行

背景介紹

全景分割:對每個像素進行預測,預測遮罩歸屬和類別,每個像素都有唯一的類別thing/stuff,不允許兩個物體重合,不僅預測出了類別還能將各物體分離開

img

語義分割:只能紅色的都是人,但是不能區分是幾個人,無法分個體處理並且甚至肉眼都看不出是人(比如方框里的那玩意)

image-20211106192929484

實例分割:類似目標檢測,只不過輸出的是遮罩,只能分離特定類別的物體,也不是對像素標記,而是只找到感興趣物體的物體輪廓即可

img

現有的研究

Panoptic-FPN

image-20211102174442306

這是基於包圍框的處理管線,有anchors, 包圍框特例規則等人工設置的模塊,雖然這些規則已經研究得挺好了但是對於以下情況還是會有問題。

image-20211103091022239

Ours Axial-DeepLab box-based
成功 方法基於中心,中心太近的物體會被認為是同一個物體 椅子包圍框的置信度太低,被過濾

優化

使得代理任務數更少:

image-20211103093225202

從處理管線里直接去掉包圍框:這更好地滿足 實例分割任務是對於遮罩的性質。

一個SOTA的算法Axial-DeepLab是像素級別的預測(相比於包圍框來說)(會不會處理量過於大),它不適於變形了的或中心點重合的物體

本文:

  1. 借鑒DETR end-to-end的思想用mask transformer直接完成預測遮罩區域和對應語義的任務

  2. 用PQ-style loss這個自己發明的遮罩重合度和類別正確度的乘積的指標,以及用one-to-one bipartite matching* 評價 predicted mask 與 ground truth

  3. 不用人工參數

  4. 是Axial-DeepLab的拓展改進

one-to-one bipartite matching

之前box-free的方法都是label assignment(匹配target和成千上萬個anchor,選擇正樣本)先對目標生成多個預測(one-to many),再對多個預測去重(many-to-one),而類似YOLO對每個目標匹配一個grid的就是one-to-one assignment

bipartite matching(二分圖匹配):左邊和右邊能匹配起來並且兩條邊不依附於同一個節點

網絡結構:

​ 傳統:transformer放在CNN頂端

​ 本文:將CNN和transformer結合起來的雙路徑框架,加了全局的memory,任何卷積層可以與memory直接溝通,促使transformer可以插入任何一層CNN(

decoder:

還采用了沙漏式解碼器,將多種尺度特征聚合起來,最終以高分辨率輸出。

方法

Transformers

Transformer詳細講解

在機器翻譯中應用。每個transformer中有兩個模塊,encoder(編碼)模塊包括一堆小的encoder,decoder(解碼)模塊有同樣數量的小的decoder

img

imgimg

第一層encoder是一個word embedding(用低維的一些數字vector表示單詞,embedding越近的單詞意義越相似,通過神經網絡將低維的數字映射了高維的關聯關系),以后每層都是前層來的

每一個小的encoder里面都有兩部分:self-attention和前饋傳播網絡

每一個小的decoder還有一個Attention層(

img

self-attention使得網絡可以聯系上下文,比如翻譯中"it"的指代

Self-attention的執行步驟

  1. 在每個encoder的輸入vector后加3個vector: Query, key, value 它們的維度都固定且小於embedding

  2. 算得分Query1 dot Key1,Query1 dot Key2(后面的詞),得出我們在編碼這個單詞時,對其他位置的關注度

  3. 將score進行softmax標准化,使得score∈(0,1]

  4. Value * score,得出每個詞的focus程度

  5. 將有關於它的各權重相加

比如對Thinking這個詞,並考慮它后面的Machines這個詞:

img

所以,transformer由encoder和decoder組成,encoder包括數個小encoder,decoder也是,每個小encoder由self-attention和前饋網絡組成,self-attention計算包括6個步驟,同時為讓attention可以關注更多位置,引入multi-head即多檢測頭機制,使該層有多個Query/key/value矩陣

算法基本方程

image-20211103191141101mi是物體ground truth遮罩,各不重合,ci是該遮罩的分類號

image-20211103191339849是預測的遮罩,mi近似不相交,pi是c這個分類的概率

image-20211103191525835對每個遮罩求類別

image-20211103191708067是(h,w)這個像素的第i個預測mask,下標i稱為其ID,之后還要過濾掉confidence太低的

PQ-Style Loss

PQ(全景質量)=識別質量(RecognitionQ)*分割質量(SegmentationQ)

先定義PQ-style的分類的ground truth和預測值間的相似矩陣

然后優化使得預測的遮罩結果逼近真實的遮罩結果

遮罩相似矩陣

相似矩陣:[公式],那么A和B是相似矩陣

遮罩相似矩陣定義為:image-20211103193924361,前面的yi=image-20211103194226507,^yi=image-20211103194331002

Dice(應對語義分割中正負樣本強烈不平衡的場景,評估兩個樣本相似性)系數評估預測樣本和真實樣本

語義分割之Dice Loss深度分析

遮罩相似矩陣下界0是預測的分類不對 或者 遮罩與正確遮罩無交集,上界1是分類正確 且 遮罩完全吻合

遮罩匹配

image-20211104094925364

用匈牙利算法進行預測遮罩和真實遮罩的二部圖匹配,找到對應真實值的那K個預測遮罩叫正樣本,並得出正樣本的正確排列,那N-K個負樣本就當作空集(無物體)

DETR的一對一匹配是為了移除重復和重疊,本文沒有遇到這樣的困難,並且利用PQ(panoptic quality)矩陣成功(因為上面的匹配輸出的是唯一對應排列)使每個預測遮罩只能對應一個真實遮罩來促進訓練

PQ-style loss

用上面的方程來優化模型的參數θ(這是哪個參數?

image-20211104152607657

為了讓它更適合梯度下降訓練,我們加了交叉熵項Log:image-20211104152955675

然后也給了負樣本一些權重,來訓練空集的識別:image-20211104153058213,於是最后PQ-Style Loss就是:image-20211104153126587用這個loss來訓練

網絡結構

包括一個雙路徑transformer,一個將多尺度結合起來的沙漏式解碼器和檢測頭

雙路徑Transformer

image-20211104161559060

解碼器

本文不是用的輕量級解碼器,而是用了L層層疊的解碼器image-20211104173402647

這個解碼器進行的處理是將特征進行尺寸調整后,加和

Bilinear Resizing 指用雙線性插值將圖片縮放,調整尺寸

image-20211104174610747

本文的解碼器只是做了簡單的各尺度加和,每一層解碼器后面加了一個transformer再進入下一個分辨率,並且這里的每個分辨率不和YOLO一樣直接參與預測,只是聚合一下各尺度的特征供接下來處理

檢測頭

對於N個遮罩,通過2個全連接層和1個SoftMax標准化后,我們得出了分類image-20211104180914485

另外一路經過兩個全連接層的得到了特征image-20211104181437363,然后從解碼器出來的在經過兩個卷積層(步長為4)后得到了正則化的特征image-20211104181512013,預測的遮罩^m就是f和g相乘:image-20211104181425759

在處理時,應用了batch norm([知乎-Batch Normalization]是為防止訓練飽和,在隱藏層中也進行邊訓練邊正則化,如下圖)來改善初始化值,並且對原始的圖像進行遮罩雙線性上采樣(用雙線性是為了不讓放大模糊)

image-20211104182903155img

最后結合上述的m和p就是結果image-20211103191339849

輔助Loss

輔助Loss可以幫助網絡訓練

Instance discrimination

Instance discrimination常見於無監督學習中,露頭於"What makes instance discrimination good for transfer learning?" 它的 MoCo 超越了有監督網絡,通過物件級別的對比學習來得到有意義的表征,該表征可以用於反映實例之間的明顯相似性。正如有監督分類學習可以獲得具備 不同類別之間的明顯相似性的表征。相似地,通過將class數量擴展為instance數量,我們最終可以用無監督方法得到表示instance之間明顯相似性的表征。因而,instance discrimination本身成立的假設是建立在:每一個樣例均與其他樣例存在顯著不同,可以將每一樣例當作單獨類別看待的基礎上。

本文將每個像素作為每個instance,處理image-20211104181512013

對於每個遮罩image-20211104212732248,定義image-20211104212852696上的特征embedding image-20211104213029631

image-20211104212957300

這K個實例embedding 對應着K個真實遮罩。然后這image-20211104213256428個pixel的image-20211104213329270每個對應一個instance discrimination任務,每個像素對應哪個遮罩embedding會被對應好(

Contrastive Loss:像素會被表示成vector,相同類別的vec距離近,不同類別的距離遠,該loss想讓和這個樣本同類的正樣本趨近於1,負樣本趨近於0(

image-20211105095939254

τ 是temperature(?),m項僅當像素(h,w)屬於真實遮罩mi時為1,並且跑一遍所有的像素,這會促使同個物體的特征是相似的,而不同的物體是差別很大的,這就是contrastive loss處理的結果,也是實例分割的目的

遮罩ID的交叉熵

image-20211103191708067這會得出每個像素(h,w)下的“正確”遮罩ID號,優化的過程中將使用交叉熵Loss

語義分割檢測頭

當Stacked decoder的L=0時,在backbone的頂端加入語義檢測頭,否則把語義檢測頭放在步長為4的decoder的后面,因為通過實驗得知這樣會讓遮罩的特征g和語義的特征分離得很好

實驗

參數

32 TPU 訓練 100k 樣本(分成54 epochs)

batch size=64

poly式的learning rate = 1e-3

推理的圖像尺寸=641×641

遮罩的置信度=0.7 過濾遮罩ID的置信度<0.4的像素的類別,設置為空

輸出尺寸:N=128 D=128(128個通道)

PQ-Style Loss

weight=3.0

α=0.75

輔助Loss

instance discrimination

τ=0.3

weight=1.0

遮罩ID的交叉熵

weight=0.3

語義分割檢測頭

weight=1.0

Main results

小模型MaX-DeepLab-S和大模型MaX-DeepLab-L 跑 COCO val(訓練過程的測試集),test-dev(開發過程中訓練過程后的測試集)

MaX-DeepLab-S使用ResNet50骨架,在最后兩階段用了Axial-attention 塊,預訓練后將最后一個階段替換為雙路徑transformer L=0decoder

MaX-DeepLab-L使用Wide-ResNet-41骨架,L=2decoder,替換所有步長=16的殘差塊為axial-attention雙路徑塊

image-20211105111530192 image-20211105112225042

Ablation Study

將Wide-ResNet-41的16步長的塊都加入雙路徑transformer,使得其擁有四種尺度的注意力

為了更快地訓練,我們不用decoder,並且將Pixel-to-pixel近似用卷積塊代替

尺寸

image-20211105154414083

各個網絡的尺寸如表所示。加入Axial-attention有最大的提升,將輸入分辨率提升至1025×1025后同樣采用100kIter后PQ提升至49.4%,加入L=1的decoder后PQ有較大的提升,L=2就沒有那么明顯了,Iter數量更多更利於聚合,但是沒有DETR里面那種明顯

雙路徑Transformer

本文用Memory-to-pixel來把transformer連接到CNN上,接下來的情況見表:

image-20211105155443561

把P2M去掉會帶來損失,但是把M2M去掉會更魯棒,我們認為是因為非重合遮罩方程促使的。其實DETR是通過M2M的self-attention來去重的。

把步長為8的塊也加入transformer會帶來1%的提升,但是加入步長為4的塊就沒有提升了

輔助Loss

image-20211105160418955

通過從匈牙利算法基本的RQ+SQ開始,逐漸改進,可以看到其逐步的提升

分析

訓練曲線

image-20211105161152183

模型通過1/10於DETR的iterations快速收斂到了46%PQ附近,由(b),(c)可知,匹配的分類效果優於匹配的遮罩效果,同時(d),(e)進行了逐像素的instance discrimination效果和Mask-ID預測的效果,絕大多數的像素都預測得很好,只有10%一直預測不好,最終也是它們導致的PQ error

好看的

為了更好了解transformer遮罩特征f,標准化的decoder輸出g,它們怎樣得到預測值^m的,我們用RGB3個通道訓練,得到只有這三種基本顏色的遮罩結果,如圖:

image-20211105161947974

差別越大的物體顏色差別越大

閱讀總結

全景分割是一個非常有意思的領域,之前沒有接觸過NLP的transformer,研究復雜神經網絡的經歷較少,對各種Loss學習得也不足,對數學公式的推導和理解也較欠缺,這樣看來雖然對神經網絡很感興趣,但是相較於研究生階段高端深入的研究學習來說,目前的知識可能還處在新手村,還有很長的路要走,需要繼續和現在一樣查英文解釋,以一敵百拓展學習,多舉一反三多讀文獻來進步,希望能早日在我浙做出好的成果!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM