天天看點

MaskFormer:将語義分割和執行個體分割作為同一任務進行訓練

作者:deephub

目标檢測和執行個體分割是計算機視覺的基本任務,在從自動駕駛到醫學成像的無數應用中發揮着關鍵作用。目标檢測的傳統方法中通常利用邊界框技術進行對象定位,然後利用逐像素分類為這些本地化執行個體配置設定類。但是,當處理同一類的重疊對象時,或者在每個圖像的對象數量不同的情況下,這些方法通常會出現問題。

諸如Faster R-CNN、Mask R-CNN等經典方法雖然非常有效,但由于其固有的固定大小輸出空間,它們通常預測每個圖像的邊界框和類的固定數量,這可能與圖像中執行個體的實際數量不比對,特别是當不同圖像的執行個體數量不同時。并且它們可能無法充分處理相同類的對象重疊的情況,進而導緻分類不一緻。

MaskFormer:将語義分割和執行個體分割作為同一任務進行訓練

本文中将介紹Facebook AI Research在21年釋出的一種超越這些限制的執行個體分割方法MaskFormer。可以看到從那時候開始,FB就對Mask和Transformer進行整合研究了。

1、逐像素分類和掩碼分類的差別

逐像素分類

該方法指的是為圖像中的每個像素配置設定一個類标簽。在這種情況下,每個像素都被獨立處理,模型根據該像素位置的輸入特征預測該像素屬于哪個類。對于邊界清晰、定義明确的對象,逐像素分類可以非常準确。但是當感興趣的對象具有複雜的形狀,互相重疊或位于雜亂的背景中時,它可能會遇到困難,這可以解釋為這些模型傾向于首先根據其空間邊界來檢視對象。

考慮一幅描繪多輛重疊汽車的圖像。傳統的執行個體分割模型(如逐像素模型)可能難以應對如下所示的情況。如果汽車重疊,這些模型可能會為整個重疊的汽車建立一個單一的并且是合并後的掩碼。可能會把這個場景誤認為是一輛形狀奇怪的大型汽車,而不是多輛不同的汽車。

MaskFormer:将語義分割和執行個體分割作為同一任務進行訓練

掩碼分類

掩碼分類(在MaskFormer中使用)采用了不同的方法。掩碼分類模型不是獨立對每個像素進行分類,而是為圖像中的每個對象執行個體預測特定于類的掩碼。這個掩碼本質上是一個二值圖像,表示哪些像素屬于對象執行個體,哪些不屬于。換句話說,單個遮罩代表整個對象,而不僅僅是單個像素。

在前一個例子中,使用掩碼分類使我們能夠識别圖像中有多個“car”類執行個體,并為每個執行個體配置設定一個唯一的掩碼,即使它們重疊。每輛車都被視為一個獨立的執行個體,并被賦予自己獨特的面具,以保持其與其他汽車分開的身份。

使用掩碼分類/分割的模型示例:掩碼R-CNN, DETR, Max-deeplab..

DETR

DETR的核心是一個被稱為Transformer的強大機制,它允許模型克服傳統逐像素和掩碼分類方法的一些關鍵限制。

在傳統的掩模分類方法中,如果兩輛車重疊,可能難以将它們區分為不同的實體。而DETR為這類問題提供了一個優雅的解決方案。DETR不是為每輛車生成掩碼,而是預測一組固定的邊界框和相關的類機率。這種“集合預測”方法允許DETR以驚人的效率處理涉及重疊對象的複雜場景。

MaskFormer:将語義分割和執行個體分割作為同一任務進行訓練

雖然DETR徹底改變了邊界框預測,但它并沒有直接提供分割掩碼——這是許多應用程式中至關重要的細節。這時就出現了MaskFormer:它擴充了DETR的魯棒集預測機制,為每個檢測到的對象建立特定于類的掩碼。是以MaskFormer建立在DETR的優勢之上,并增強了生成高品質分割掩碼的能力。

比如在上面提到的汽車場景中,MaskFormer不僅将每輛車識别為一個單獨的實體(感謝DETR的集合預測機制),而且還為每輛車生成一個精确的掩碼,準确捕獲它們的邊界,即使在重疊的情況下也是如此。

MaskFormer:将語義分割和執行個體分割作為同一任務進行訓練

DETR和MaskFormer之間的這種協同作用為更準确、更高效的執行個體分割打開了一個可能性的世界,超越了傳統的逐像素和掩碼分類方法的限制。

MaskFormer

下面是MaskFormer的架構:

MaskFormer:将語義分割和執行個體分割作為同一任務進行訓練

通過主幹提取特征:MaskFormer主幹網絡負責從輸入中提取關鍵的圖像特征。這個主幹可以是任何流行的CNN(卷積神經網絡)架構,比如ResNet,它處理圖像并提取一組特征,用F表示。

逐像素嵌入生成:然後将這些特征F傳遞給像素解碼器,該解碼器逐漸對圖像特征進行上采樣,生成我們所說的“逐像素嵌入”(E像素)。這些嵌入捕獲圖像中每個像素的局部和全局上下文。

段(Per-Segment )嵌入生成:與此同時,Transformer Decoder關注圖像特征F并生成一組“N”段嵌入,用Q表示,通過“注意力”的機制為圖像的不同部分配置設定不同的重要性權重。這些嵌入本質上代表了我們想要分類和定位的圖像中的潛在對象(或片段)。

這裡的術“Segment ”是指模型試圖識别和分割的圖像中對象的潛在執行個體。

一般來說,編碼器處理輸入資料,解碼器使用處理後的資料生成輸出。編碼器和解碼器的輸入通常是序列,就像機器翻譯任務中的句子一樣。

而maskformer的“編碼器”是骨幹網絡(用于maskFormer的Resnet50),它處理輸入圖像并生成一組特征映射。這些特征映射與傳統Transformer中的編碼器輸出具有相同的目的,提供輸入資料的豐富的進階表示。

然後使用這些嵌入Q來預測N個類标簽和N個相應的掩碼嵌入(E掩碼)。這就是MaskFormer真正的亮點所在。與傳統分割模型預測每個像素的類标簽不同,MaskFormer預測每個潛在對象的類标簽,以及相應的掩碼嵌入。

在獲得掩碼嵌入後,MaskFormer通過像素嵌入(E像素)與掩碼嵌入(E掩碼)之間的點積産生N個二進制掩碼,然後進行s型激活。這個過程可能會将每個對象執行個體的二進制掩碼重疊。

最後對于像語義分割這樣的任務,MaskFormer可以通過将N個二進制掩碼與其相應的類預測相結合來計算最終預測。這種組合是通過一個簡單的矩陣乘法實作的,給我們最終的分割和分類圖像。

MaskFormer用于語義和執行個體分割

語義分割涉及到用類标簽标記圖像的每個像素(例如“汽車”,“狗”,“人”等)。但是它不區分同一類的不同執行個體。例如如果圖像中有兩個人,語義分割會将所有屬于這兩個人的像素标記為“人”,但它不會區分A和B。

而執行個體分割不僅對每個像素進行分類,而且對同一類的不同執行個體進行分離。比如執行個體分割需要将所有屬于A的像素标記為“A”,所有屬于B的像素标記為“B”。

MaskFormer:将語義分割和執行個體分割作為同一任務進行訓練

大多數傳統的計算機視覺模型将語義分割和執行個體分割視為獨立的問題,需要不同的模型、損失函數和訓練過程。但是MaskFormer設計了一個統一的方式處理這兩個任務:它通過預測圖像中每個對象執行個體的類标簽和二進制掩碼來工作。這種方法本質上結合了語義和執行個體分割的各個方面。

對于損失函數,MaskFormer使用統一的損失函數來處理這個掩碼分類問題。這個損失函數以一種與語義和執行個體分割任務一緻的方式評估預測掩碼的品質。

是以使用相同的損失函數和訓練過程得到的的MaskFormer模型可以不做任何修改地同時應用于語義和執行個體分割任務。

總結

MaskFormer提供了一種新的圖像分割方法,內建了DETR模型和Transformer架構的優點。它使用基于掩碼的預測,增強了對圖像中複雜對象互動的處理。

MaskFormer的統一方法在圖像分割方面向前邁出了一大步,為計算機視覺的進步開辟了新的可能性。它為進一步的研究奠定了基礎,旨在提高我們了解和解釋視覺世界的能力。

作者:HannaMergui

繼續閱讀