作者丨Lart
編輯丨極市平臺
論文鏈接:https://arxiv.org/abs/2203.12612
本文是對語義分割傳統(tǒng)編解碼逐像素分類范式的一種思考和改進(jìn)。
之前語義分割的工作將其視作一種逐像素分類任務(wù),主流范式是編解碼結(jié)構(gòu),通過編碼器和解碼器學(xué)習(xí)逐像素表征后,通過對每個像素單獨(dú)分類到不同的類別中從而獲得預(yù)測的語義掩碼結(jié)果。這篇文章選擇了另一種策略,即將結(jié)構(gòu)信息作為先驗(yàn)直接構(gòu)造語義掩碼然后逐步細(xì)化,而不再是按照逐像素分類的范式。
具體來看,對于給定的輸入圖像,模型中可學(xué)習(xí)的結(jié)構(gòu)token會和圖像表征進(jìn)行交互,從而推理出最終的語義掩碼。這一思路和最初的ViT結(jié)構(gòu)中的cls token的行為頗為類似??紤]到這份工作的實(shí)現(xiàn)是基于ViT-L,所以可以很直觀的推想出,StructToken的思路很是將Transformer原本的形式向語義分割這樣的密集預(yù)測任務(wù)的一種“直接”遷移,這其中并沒有像其他工作那樣,過多受到目標(biāo)任務(wù)中原始的卷積神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)范式的影響。
所以值得思考的幾點(diǎn)可以由此提出:
- 本文定義的結(jié)構(gòu)信息是什么?
- 提出的設(shè)計(jì)是怎樣表達(dá)出這些結(jié)構(gòu)信息的?
- 如何驗(yàn)證這些設(shè)計(jì)帶來的提升與所謂的結(jié)構(gòu)信息有關(guān)?
相關(guān)工作
現(xiàn)有的語義分割領(lǐng)域已經(jīng)出現(xiàn)了大量的工作,但是目前出現(xiàn)的工作中基本上都可以被歸類為逐像素分類范式,差別主要在于分類參數(shù)是否是動態(tài)的:
- 靜態(tài)逐像素分類:延續(xù)著以分割領(lǐng)域早期基于卷積神經(jīng)網(wǎng)絡(luò)的經(jīng)典工作的范式,例如FCN。他們主要利用上下文語義信息的增強(qiáng)和多尺度特征的融合,從而獲得更有效的圖像特征表示。并利用獨(dú)立的靜態(tài)分類器(典型如1×1卷積)實(shí)現(xiàn)逐像素的語義類別預(yù)測。然而這類工作專注于提升逐像素特征的表達(dá)能力,卻并未在模型設(shè)計(jì)中考慮圖像中的結(jié)構(gòu)信息。
- 動態(tài)逐像素分類:最近的工作中開始引入動態(tài)結(jié)構(gòu)的思想。除了模型本身特征處理結(jié)構(gòu)之外,分類器也開始轉(zhuǎn)變?yōu)閯討B(tài)形式。論文列出的典型的工作有Segmenter[Segmenter: Transformer for semantic segmentation]、MaskFormer[Per-pixel classification is not all you need for semantic segmentation]、Mask2Former[Masked-attention mask transformer for universal image segmentation]和K-Net[K-Net: Towards unified image segmentation]。他們主要是使用了一系列與語義類別相關(guān)的可學(xué)習(xí)的token,與圖像自身的特征進(jìn)行交互,從而實(shí)現(xiàn)最終mask的預(yù)測。這從形式上來看,可以認(rèn)為是一種動態(tài)分類的過程。這些方法同時由沒有完全拋棄上面提到的經(jīng)典范式,整體上獲得了更好的表現(xiàn)。但是從本文的角度來看,這類方法仍然沒有拋開逐像素分類的范式:)。
這些工作從整體上來看, 都是在學(xué)習(xí)針對每一類的線性判別函數(shù),要么是靜態(tài)的卷積,要么動態(tài)的矩陣乘法運(yùn)算。這會作用在逐像素的特征表示上,從而來為其賦予一個最相關(guān)的語義類別。
作者們認(rèn)為,按照人識別物體的過程,先是捕獲語義類別的結(jié)構(gòu)信息(形狀等),然后關(guān)注于內(nèi)部細(xì)節(jié)。想要分割圖像中不同語義類別的區(qū)域,通常先根據(jù)結(jié)構(gòu)生成一個粗略的mask,之后在調(diào)整mask的細(xì)節(jié)?,F(xiàn)有的兩種逐像素分類范式并沒有充分的體現(xiàn)這一過程,而更多的是,直接在模型倒數(shù)第二層的特征圖上分類像素從而獲得得分圖。這一特性鼓勵網(wǎng)絡(luò)優(yōu)化單一像素的表征,而忽略甚至破壞了最重要的結(jié)構(gòu)特征。
本文中作者們提出了一種結(jié)構(gòu)先驗(yàn)范式來解決這一問題,直接從結(jié)構(gòu)token中構(gòu)造得分圖來分割圖像,然后逐漸細(xì)化。
主要內(nèi)容
文中主要研究了如何從特征圖中根據(jù)結(jié)構(gòu)token提取有用的信息。提出的結(jié)構(gòu)整體遵循這樣的過程:
這些步驟中,交互式結(jié)構(gòu)的設(shè)計(jì)是本文的核心。文中主要探索了三種交互式結(jié)構(gòu)。其中包含兩種動態(tài)結(jié)構(gòu)和一種靜態(tài)結(jié)構(gòu)。
- 動態(tài)結(jié)構(gòu):基于Attention的思路,但是計(jì)算相關(guān)的token并非是空間patch,而是基于通道,即S中的類別token和F中的特征通道之間的交互。
- 第一種CSE基于Cross-Attention范式,經(jīng)過線性變換,S生成Query,F(xiàn)生成Key和Value,送入Cross-Attention。這里得到的結(jié)果與S形狀一致。按照圖示,這里也有個拆分操作,但是論文并未明說具體如何實(shí)現(xiàn)。
- 第二種SSE基于Self-Attention范式,S和F沿通道拼接后經(jīng)過線性變換得到Query、Key和Value,并送入Self-Attention。結(jié)果會被按照通道的原始比例進(jìn)行拆分。
- 靜態(tài)結(jié)構(gòu):直接使用1×1卷積處理SSE模塊中的相似性注意力的計(jì)算。卷積結(jié)果即為最終對應(yīng)于拆分之前的結(jié)果。這一過程使用1×1卷積直接混合不同的輸入通道的信息,實(shí)現(xiàn)了類似于SSE的過程。
上面結(jié)構(gòu)中在執(zhí)行Attention操作之前,S和F會被送入投影層處理,雖然是針對通道的Attention處理,但是這里的投影層使用的是1×1卷積+3×3深度卷積+1×1卷積的形式,仍然是空間維度共享的操作。
這些模塊的兩個輸出都會各自接一個FFN。這里的FFN使用的是FC+3×3分組卷積+FC的結(jié)構(gòu)。即可以細(xì)化局部特征,也可以看作是一種隱式位置編碼。
實(shí)驗(yàn)結(jié)果
對比實(shí)驗(yàn)
文中在三個主要的語義分割數(shù)據(jù)集上進(jìn)行了驗(yàn)證。本文的方法是構(gòu)建在ViT的不同變體之上的,也因此沒有使用那些金字塔架構(gòu)形式的多尺度特征。
從這里的實(shí)驗(yàn)中可以發(fā)現(xiàn)一個趨勢,語義分割方法使用的backbone越來越大,從早期的的Res101,到現(xiàn)在的ViT-L、MiT-B5、Swin-L。預(yù)訓(xùn)練權(quán)重甚至都開始使用ImageNet21K上的了。不知道這樣的潮流是否真的有意義。
消融實(shí)驗(yàn)
對提出的結(jié)構(gòu)中的不同組件進(jìn)行了消融實(shí)驗(yàn)。這里的baseline模型基于ViT,僅隔著一個CSE模塊和FFN模塊。這里的FFN沒有使用分組卷積,另外這里不對Query、Key和Value的投影層進(jìn)行消融實(shí)驗(yàn),因?yàn)樽髡邆冇X得如果替換成常規(guī)的全連接成,會導(dǎo)致無法支持多尺度推理。因?yàn)闉榱吮3謅ttention操作本身的原始性,僅對輸入轉(zhuǎn)置來實(shí)現(xiàn)通道attention而非手動修改投影層的情況下,此時的投影層就成了空間上的全連接了。
這里還對提出的解碼塊堆疊數(shù)量進(jìn)行了實(shí)驗(yàn),最終作者們考慮性能與計(jì)算復(fù)雜度的平衡,就選擇了4。實(shí)際上實(shí)驗(yàn)中反映出來,更多的塊會帶來更好的性能表現(xiàn)。
但是作者們并沒有討論這些伴隨而來的計(jì)算量和參數(shù)量對于性能的影響。
為了驗(yàn)證提出的結(jié)構(gòu)token保留結(jié)構(gòu)信息的能力,作者們構(gòu)建了一個逐像素分類范式的對等參考,backbone提取的特征會先將通道數(shù)量調(diào)整到類別數(shù)(類似于本文提出的結(jié)構(gòu)token那樣),每個通道認(rèn)為對應(yīng)一個類別。之后通過四個殘差塊來進(jìn)行處理,最終使用1×1卷積生成最終的得分圖。來自每個殘差塊的輸出會被用來與本文模型中每個交互塊的結(jié)構(gòu)token輸出進(jìn)行可視化對比。下圖中,不同的行組對應(yīng)著不同的類別。可以看到,盡管輸出的得分圖很類似,但是結(jié)構(gòu)token在中間的輸出卻展現(xiàn)出了更清晰的目標(biāo)形狀、輪廓等結(jié)構(gòu)信息。而且隨著多個塊的處理,這些目標(biāo)信息更加清晰(典型如第9行)。
總結(jié)與思考
回答開頭的問題:
- 本文定義的結(jié)構(gòu)信息是什么?文章反復(fù)在強(qiáng)調(diào)的結(jié)構(gòu)其實(shí)直觀上可以理解為反映目標(biāo)信息的形狀和外觀。本文提出的結(jié)構(gòu)Token在多次堆疊的處理單元的輸出中都明顯的凸顯出了特定類別的目標(biāo),確實(shí)實(shí)現(xiàn)了“粗略預(yù)測”的效果。
- 提出的設(shè)計(jì)是怎樣表達(dá)出這些結(jié)構(gòu)信息的?基于通道的交互方式,使得結(jié)構(gòu)token可以對圖像特征不同的通道進(jìn)行自適應(yīng)的組合與強(qiáng)化。雙流中各自的FFN實(shí)現(xiàn)了獨(dú)立的空間變換和通道整合,這保證了各自學(xué)習(xí)過程的差異性和多樣性。這種交互方式保留了圖像空間結(jié)構(gòu)信息的獨(dú)立性和完整性。同時由于真值的監(jiān)督,目標(biāo)類別對應(yīng)的結(jié)構(gòu)token經(jīng)過優(yōu)化,會愈發(fā)具有與真值接近的空間上的外觀,也即論文中圖3中所展示的那樣。
- 這是為什么呢?我覺得這是因?yàn)橥ǖ雷⒁饬Φ氖褂玫慕Y(jié)果?;谕ǖ乐g的相似性計(jì)算的attention運(yùn)算中,會為圖像特征中對應(yīng)空間位置激活更加明顯(即與結(jié)構(gòu)token對應(yīng)類別通道更加相似)的通道賦予更大的比重,這樣才會讓損失越來越小。
- 如何驗(yàn)證這些設(shè)計(jì)帶來的提升與所謂的結(jié)構(gòu)信息有關(guān)?作者對此并未進(jìn)行探討,或許可以構(gòu)造這樣一個實(shí)驗(yàn):在目前這種在最后單一監(jiān)督的形式中,后續(xù)處理單元中結(jié)構(gòu)token各個類別通道的可視化結(jié)果非常趨于真值了。那若是使用深監(jiān)督策略,直接對論文中提供的逐像素分類范式的卷積模型,對這些位置的特征進(jìn)行額外監(jiān)督,進(jìn)一步強(qiáng)化這些特征對于這些目標(biāo)區(qū)域的分割效果。如果性能進(jìn)一步提升,則說明這樣的結(jié)構(gòu)信息的強(qiáng)化是有必要的。