
文章要解決的任務(wù)是semi-supervised video object segmentation, 該任務(wù)的定義是給定一段圖像序列,其中第一幀提供了目標(biāo)的mask,希望能夠通過(guò)算法獲得其后逐幀的目標(biāo)mask。
motivation
目前解決該任務(wù)的主流方法是基于匹配的方法,其基本思想是計(jì)算當(dāng)前幀與歷史幀中目標(biāo)的相似度,確定當(dāng)前幀中哪些是前景區(qū)域。代表性方法比如STM等,構(gòu)建當(dāng)前幀的每個(gè)像素與歷史幀每個(gè)像素的時(shí)空attention,作者認(rèn)為這些方法僅考慮了當(dāng)前幀信息與歷史幀信息的關(guān)聯(lián),但并沒(méi)有考慮歷史幀之間的關(guān)系。同時(shí)也忽略了幀內(nèi)不同像素點(diǎn)的關(guān)聯(lián)。另外一些引入temporal relationships的方法忽略了空間關(guān)系。而本文將不同幀的不同像素都作為tokens,顯然能將時(shí)空信息都同等的納入考慮,于是選擇了transformer結(jié)構(gòu)。
該任務(wù)還存在的一個(gè)問(wèn)題是 輸入表示問(wèn)題,當(dāng)前幀只有RGB,但參考幀有RGB和mask,兩者顯然無(wú)法同樣表示。大多數(shù)方法使用兩個(gè)獨(dú)立的encoder處理這兩種信息,這種做法會(huì)有大量的冗余參數(shù),過(guò)于龐大。另一些方法則是從讓兩種信息共享參數(shù)的角度出發(fā),比如RANet利用siamese網(wǎng)絡(luò)處理RGB信息,然后將reference frames的RGB特征和mask結(jié)合,作者認(rèn)為這類方法直接將mask與高層語(yǔ)義結(jié)合,忽略了mask具有的edge和contour信息,另一些方法比如RGMP和AGSS-VOS則給當(dāng)前幀附加了一個(gè)偽mask,然后統(tǒng)一成4通道的信息,從而共享網(wǎng)絡(luò)參數(shù),但這種方法會(huì)存在mask對(duì)齊的問(wèn)題,即使使用flow對(duì)mask進(jìn)行wrap,也會(huì)帶來(lái)大計(jì)算量。本文的思路是利用兩個(gè)很淺的層分別處理兩種信息,進(jìn)行尺度統(tǒng)一再輸入到共享網(wǎng)絡(luò)提取特征。相當(dāng)于折衷方案吧。
method
文章方法的pipeline如Figure 2所示, feature extractor其實(shí)處理了兩種不同信息,達(dá)到統(tǒng)一形式。Transformer包括encoder 和 decoder和DETR的結(jié)構(gòu)一樣, 最后的segmentation模塊是將transformer獲得的target 模板信息target predictions與當(dāng)前幀的信息融合對(duì)尺度的獲得當(dāng)前幀中目標(biāo)的mask。

- Feature extractor, 一般的multi-stage backbone,如VGG, ResNet都可以拿過(guò)來(lái)用,但第一個(gè)stage需要替換成這里的two-path input layer,以處理不同形式的信息。對(duì)于query frame的path就是常規(guī)的cnn模塊,對(duì)于reference sets,因?yàn)榘琑GB和mask,所以該path設(shè)計(jì)了3個(gè)conv分支,分別處理RGB, mask的前景和mask的背景, 然后將三個(gè)分支的特征相加作為該path的輸出。兩個(gè)path的融合是將特征在時(shí)間T維度上cat,可以理解為batch上,送入到CNNbackbone上提取特征,最后在backbone的后面加了一個(gè)1x1的卷積層用于降維,以減少transformer的計(jì)算量。最終只有最后一個(gè)stage的輸出參與了transformer,但不同stage的輸出特征還會(huì)再segmentation head中用到。
- transformer, transformer這一塊大體上就是標(biāo)準(zhǔn)的流程,tokens是每個(gè)frames的每個(gè)pixel, 其pos編碼采用的是sinusoidal positional encoding,但其參數(shù)包含時(shí)間和空間。在decoder部分query只有一個(gè),這時(shí)候decoder的self-attention部分不需要計(jì)算內(nèi)積和softmax部分,所以直接就是兩個(gè)線性層映射。
- Segmentation,在TAB中主要是利用target predictions計(jì)算query上存在目標(biāo)的可能性,然后和query的transformer融合后特征cat一起用于反推當(dāng)前幀的mask。
是transformer 的encoder輸出的當(dāng)前幀的特征。
是decoder的輸出。
- [圖片上傳失敗...(image-ad2694-1623323130370)]
- Segmentation head,這部分通過(guò)skip-connection的fan公式融合了TAB的輸出和feature extractor獲得的當(dāng)前幀的表觀特征,類似于FPN的反向金字塔方式最終獲得當(dāng)前幀1/4分辨率下的mask。這部分怎么理解呢?我個(gè)人覺(jué)得
表示了時(shí)域的特征,可以認(rèn)為是種背景信息, attention則可以認(rèn)為是一種粗糙的mask,feature extractor的輸出則是側(cè)重當(dāng)前幀的信息,從而在當(dāng)前幀只能更好的區(qū)分出背景和前景區(qū)域。
Training and Inference, 在training時(shí),由于transformer可以是任意數(shù)量的token,所以這部分其實(shí)對(duì)于reference set的基數(shù)沒(méi)有要求,其限制可能來(lái)自于CNN的backbone和segmentation head是否使用BN。訓(xùn)練數(shù)據(jù)則主要來(lái)自于合成數(shù)據(jù),然后在真實(shí)數(shù)據(jù)上進(jìn)行微調(diào)。損失函數(shù)包括二分類的交叉熵?fù)p失和mask的IOU損失。在Inference時(shí),從時(shí)間角度考慮,inference sets僅使用了第一幀和前一幀。第一幀比較準(zhǔn)確,前一幀是與當(dāng)前幀關(guān)聯(lián)最大。
Experiments
在與SOTA方法對(duì)比時(shí),無(wú)論是否使用YouTube輔助數(shù)據(jù)進(jìn)行訓(xùn)練,性能優(yōu)勢(shì)都很明顯,證明了該方法處理VOS任務(wù)的優(yōu)越性。
消融實(shí)驗(yàn)部分。
Mask utilization,主要分析了mask的不同使用時(shí)機(jī)的影響。multiply是直接與RGB數(shù)據(jù)乘在一起,這時(shí)候兩個(gè)path應(yīng)該一樣吧?沒(méi)看到補(bǔ)充材料,具體不清楚;residual表示(mask+1)*features, 這個(gè)時(shí)候應(yīng)該兩個(gè)path也一樣吧?, weights-shared就是本文方法,即mask內(nèi)容和RGB圖共享網(wǎng)絡(luò)。發(fā)現(xiàn)mask在更高層上融合比開(kāi)始就融合的效果好,而本文其實(shí)不是mask的簡(jiǎn)單融合,而是mask所表示內(nèi)容的特征抽取,其信息更豐富吧。
Reference set, 這部分對(duì)比了僅利用第一幀,僅利用前一幀和兩幀都利用的性能,但為什么沒(méi)有對(duì)比利用T幀reference set的情況呢?
Transformer structure, 對(duì)比了是否利用decoder的性能,以及僅利用1層decoder和1層encoder的性能。不利用decoder是怎么做的不是很清楚,猜測(cè)是直接將query token作為query prediction?
input resolution, 增大分辨率顯然分割效果更好,但是會(huì)帶了tokens的數(shù)量激增,計(jì)算量的壓力更大。


Thoughts
Transformer可能適合做圖像分割,但對(duì)于示例分割這種更依賴局部信息,且需要更強(qiáng)區(qū)域鑒別性的任務(wù)能否取得好效果呢?但attention像Graph attention network一樣,除了刻畫相似度,也能反映不相似度,所以原理上應(yīng)該是可以做的。那么這個(gè)方法能不能擴(kuò)展到處理MOTS任務(wù)呢?