① Fast-SCNN
https://blog.csdn.net/calvinpaean/article/details/88534052
https://arxiv.org/pdf/1902.04502.pdf
https://github.com/Tramac/Fast-SCNN-pytorch
https://github.com/xiaoyufenfei/Efficient-Segmentation-Networks
摘要 :本文介紹一種適用於低內存嵌入式設備、計算高效、可用於高解析度圖像(1024×2048px)的實時語義分割模型FastSCNN。在現有的快速分割的雙分支方法的基礎上,我們引入「學習下采樣」模塊,該模塊同時計算多個解析度分支的低層級特徵。然後將高解析度的空間細節與低解析度提取的深層特徵結合起來,在Cityspaces數據集上獲得68.0%mIoU的精度,123.5FPS的速度。我們還證明大規模預訓練沒必要。我們用ImageNet預訓練和Cityspaces的粗標記數據對我們的度量進行了實驗驗證。最後,我們不修改網路結構,在下采樣的輸入上獲得了速度更快、精度有可比性的結果。
1.引言
實時語義分割的研究最近獲得了顯著的普及[21,34,17,25,36,20]。
我們發現,文獻中語義分割通常由具有編碼器-解碼器框架的深卷積神經網路來處理[29,2],而許多計算高效的方法使用雙分支或多分支架構[21,34,17]。通常情況下:
•更大的感受野對於學習對象類之間的復雜關聯(即全局上下文)很重要,
•圖像中的空間細節是保持物體邊界所必需的,以及
•需要具體的設計來平衡速度和准確性(而不是重定位的分類DCNNs)。
具體地說,在兩個分支網路中,較深的分支在低解析度下用於捕獲全局上下文,而較淺的分支在全輸入解析度下用於學習空間細節。然後將二者合並,得到最終的語義分割結果。重要的是,較深的分支帶來的計算成本的提升需要靠縮小輸入尺寸來克服。而要獲得全解析度圖只需要較少的層數。因而,在現代GPU上,實時性是可以實現的。與編碼-解碼不同的是,雙分支中不同解析度的初始卷積是不共享的。這里值得注意的是,引導上采樣網路(GUN)[17]和圖像級聯網路(ICNet)[36]只在前幾層之間共享權重。
我們提出FastSCNN,將雙分支技術[21,34,17,36]與編碼-解碼[29,2]結合起來。FastSCNN的結構如圖1。因為深度卷積網路的淺層主要提取低級特徵[35,19],我們共享了雙分支中初始層的計算。我們稱這種技術為「學習下采樣」,其效果與編碼-解碼中的跳連相似。我們只使用了一次跳連來保證計算效率。「學習下采樣」模塊層數比較淺,以保證特徵共享的有效性。最後,我們還使用了深度可分離卷積[30,10]和逆殘差模塊[28]。
在Cityspaces數據集[6]上,FastSCNN在NvidiaTitanXp(Pascal)上處理全解析度圖像(1024×2048px),速度是123.5FPS,精度是68.0%mIoU。比現有最先進技術快兩倍。(BiSeNet,71.4%mIoU,[34])。
雖然我們的參數量達到1.11M,但大多數離線分割方法(如DeepLab[4]和PSPNet[37])以及一些實時演算法(如GUN[17]和ICNet[36])的參數量多得多。FastSCNN的模型容量特別低,原因是:(1)要在低內存的嵌入式設備上運行,(2)期待有更好的泛化能力。先前的很多工作都建議在ImageNet數據集[27]上預訓練以提高精度和泛化能力。我們研究了預訓練對低容量的FastSCNN的影響,結論是,使用預訓練或者弱標簽數據沒有明顯的提升效果,在Cityscapes數據集上只提升了0.5%mIoU,這一點和那些大容量的模型剛好相反。總結下我們的貢獻:
(1) 提出了FastSCNN,在高解析度圖像(1024×2048px)上,精度有競爭力(68.0%),速度特別強(123.5fps)。
(2) 使用離線方法中常用的跳連,提出了一個淺層的「學習下采樣」模塊,以快速高效地多分支低層級特徵提取。
(3)將FastSCNN設計為小容量,並且實驗證明,對於小容量網路,多跑一些epoch,和使用預訓練或額外的弱標簽數據是等效的。
此外,對於下采樣的輸入,我們不對網路做任何修改就達到了最先進水平。
2.相關工作
我們對比分析語義分割方法,尤其是低功耗低內存的實時語義分割方法[2,20,21,36,34,17,25,18]。
2.1.語義分割的基礎
最先進的語義分割結合了兩個獨立的模塊:編碼器和解碼器。編碼器用卷積和池化來提取特徵。解碼器從低解析度特徵中恢復空間細節,並預測分割結果[29,2]。通常,編碼器用一個移除全連接層的分類網路,例如VGG或ResNet。
FCN[29]是大多數分割模型的基礎,采樣VGG為編碼器,雙線性上采樣結合較低層的跳接來恢復空間細節。U-Net[26]使用密集的跳連進一步利用空間細節。
之後,受全局的圖像上下文先驗啟發[13,16],PSPNet[37]使用金字塔池化模塊,DeepLab[4]使用atrous空間金字塔池化(ASPP)對全局上下文進行編碼和利用。
其他競爭性的基本分割結構使用條件隨機場(CRF)[38,3]或遞歸神經網路[32,38]。然而它們不實時。
與目標檢測[23,24,15]類似,速度是一個重要因素[21,34,17,25,36,20]。SegNet在FCN的基礎上引入了聯合編解碼模型,成為最早的高效分割模型之一。繼SegNet之後,ENet[20]還設計了一個具有很少幾層的編碼器-解碼器,以降低計算成本。
最近出現了雙分支和多分支方法。ICNet[36]、ContextNet[21]、BiSeNet[34]和GUN[17]通過在深度分支中減少輸入的解析度來學習全局上下文,而在淺層分支的全解析度特徵中學習邊緣的細節信息。
然而,最先進的實時語義分割仍然具有局限性,並且通常需要高端GPU。受雙分支方法的啟發,FastSCNN使用了一個淺層的網路路徑來編碼細節信息,上下文信息在低分辨特徵中被有效地學習,如圖2所示。
2.2 DCNN中的高效設計
深度可分離卷積: MobileNet[10]提出深度可分離卷積,減少了浮點運算和卷積參數,降低了計算量和內存需求。
高效的重新設計: Chollet[5]使用高效的深度可分離卷積設計了Xception 網路。MobileNet-V2提出了inverted bottleneck resial block[28]來構建一個高效率的深度網路,用於分類任務。ContextNet[21]使用 inverted bottleneck resial block設計了一個雙分支網路,用於實時語義分割。
網路量化: 浮點計算相較於整型和二進制操作要昂貴的多,模型運行時間可以進一步通過量化技巧來縮短。
網路壓縮: 剪枝可以用於減小預訓練網路的大小,使運行速度更快,參數更少,內存佔用更少。
FastSCNN很依賴於深度可分離卷積和resial bottleneck blocks[28]。此外,我們還引入雙分支結構,與「學習下采樣」模塊結合起來,允許在多級解析度上共享特徵,如圖2所示。注意,盡管多個分支的初始層提取了相似的特徵[35,19],但常用的雙分支方法並沒有使用這一點。網路量化和網路壓縮可以正交應用,這個留給我們以後的工作。
2.3 輔助任務的預訓練
普遍認為輔助任務的預訓練可以提高精度。早期的目標檢測[7]和語義分割[4,37]的研究在ImageNet上進行了預訓練[27]。其他實時高效的語義分割方法也在ImageNet上進行了預訓練[36,34,17]。然而,尚不清楚低容量網路是否有必要預訓練。我們實驗證明預訓練對小網路沒有明顯的提升效果。數據增廣和訓練更多的epoch也能取得類似的效果。
3 我們提出的FastSCNN
FastSCNN靈感來自於雙分支結構[21,34,17]和具有跳連的編碼器網路[29,26]。因為注意到網路的前幾層通常提取低級特徵,我們將跳連重新解釋為一個「學習下采樣」模塊,這樣我們就能夠融合兩個框架的關鍵思想,並可以構建一個快速的語義分割模型。圖1和表1是FastSCNN的結構。接下來將介紹我們的設計動機和各模塊的詳細設置。
3.1 動機
當前最先進的實時語義分割方法是基於雙分支結構,每個分支作用在不同級別的解析度上[21,34,17],從輸入圖像的低分辨特徵中學習全局信息,並使用淺層網路的全解析度來細化分割結果的精度。由於輸入解析度和網路深度是決定運行時間的主要因素,雙分支結構使得模型可以是實時的。
眾所周知,網路的前幾層提取低級特徵,例如邊和角[35,19]。因此,我們不採用將兩個分支完全獨立的方法,而是引入學習下采樣模塊,讓兩個分支共享淺層的網路模塊。
3.2 網路結構
我們的FastSCNN使用「學習下采樣模塊」,一個粗糙的全局特徵提取模塊、一個特徵融合模塊和一個標準的分類器。所有模塊都是用深度可分離卷積來構建,深度可分離卷積已經是許多高效網路的關鍵[5,10,21]。
3.2.1學習下采樣
為了保證低層特徵共享的有效和高效,學習下采樣模塊只採用了三層結構。第一層是標准卷積層(Conv2D),另外兩層是深度可分離卷積(DSConv)。這里要說明的是,雖然DSConv可以提升計算效率,但由於輸入圖像只有3個通道,深度可分離卷積放在第一層的話帶來的效率的提升是微不足道的,因此第一層用標准卷積。
學習下采樣的3層中的每一層的卷積滑動步長都是2,然後是批量歸一化和ReLU。標准卷積和深度可分離中的深度層的卷積核尺寸都是3×3。和[5,28,21]一樣,我們省略了深度可分離卷積中深度卷積和點卷積的非線性運算。
3.2.2全局特徵提取器
全局特徵提取模塊是為了獲取圖像分割的全局上下文。與通常的雙分支方法在原始圖像上獲取低解析度特徵不同,我們是取「學習下采樣」模塊的輸出作為全局特徵提取器的輸入,其解析度是原始圖像的1/8。詳細結構如表1所示。我們使用MobileNet-v2[28]中提出的高效的bottleneck resial block,如表2所示。
特別地,當輸入輸出大小相同時,我們對bottleneck resial block採用殘差連接。我們的bottleneck block使用了一個高效的深度可分離卷積,這樣參數量更小,浮點計算更少。此外,在末尾添加金字塔池模塊(PPM)[37],以聚合基於不同區域的上下文信息。
3.2.3特徵融合模塊
與ICNet[36]和ContextNet[21]類似,我們更喜歡簡單的特徵相加,以確保效率。或者,使用更復雜的特徵融合模塊,例如[34],這樣精度更高而計算量也更大。特徵融合模塊的細節如表3所示。
3.2.4分類器
分類器中使用了兩個深度可分離卷積和一個點卷積。我們發現在特徵融合模塊後增加幾層可以提高精度。分類器模塊的詳細信息如表1所示。
在訓練過程中使用Softmax,因為使用了梯度下降。在推理過程中,我們可以用Argmax代替昂貴的Softmax計算。我們將此選項表示為Fast SCNN cls(分類)。另一方面,如果需要輸出概率模型,則使用softmax,表示為FastSCNN prob(概率)。
3.3 和現有的最先進技術比較
3.3.1與雙分支模型的關系
最先進的實時模型(ContextNet[21]、BiSeNet[34]和GUN[17])使用雙分支結構。我們的「學習下采樣」模塊相當於它們的空間路徑,因為它很淺,從全解析度學習,並用於特徵融合模塊(圖1)。
我們的全局特徵提取模塊相當於這種方法更深層的低解析度分支。相反,我們的全局特徵抽取器與學習下采樣模塊共享其前幾層的計算。通過共享層,我們不僅降低了特徵提取的計算復雜度,而且還降低了所需的輸入大小,因為FastSCNN使用1/8解析度而不是1/4解析度進行全局特徵提取。
3.3.2與編碼-解碼模型的關系
FastSCNN可以看做是諸如FCN[29]或U-Net[26]等編碼-解碼框架的特例。然而,與FCN中的多個跳連和U-Net中的密集跳連不同,FastSCNN只使用一個跳連來減少計算量和內存。
與[35]一致,他主張在DCNNs中只在前幾層共享特徵,我們將跳連放在網路的前幾層。和我們相反,現有的最先進技術都是在每個解析度下使用很深的模塊之後才使用跳連。
4.實驗
我們在Cityscapes數據集[6]上評估我們的方法,並且在測試集,也就是Cityscapes benchmark server上提交了它的性能。
4.1實現細節
我們用Python、Tensorflow上進行了實驗。我們實驗的工作站有有Nvidia Titan X(Maxwell)或Nvidia Titan Xp(Pascal)GPU、CUDA 9.0和CuDNN v7。運行時評估在單個CPU線程和一個GPU中執行,以測量前向推理時間。我們取100幀的平均耗時作為單幀耗時。
我們使用SGD(momentum=0.9),批量大小是12。受[4,37,10]的啟發,我們使用「poly」學習率,其中基學習率為0.045,冪為0.9。與MobileNet-V2類似,我們發現L2正則化對深度卷積(depthwise convolution)不必要。其他的層,L2系數是0.00004。因為語義分割的訓練數據有限,我們使用了多種數據增強技術:隨機縮放(縮放率范圍是0.5到2)、平移/裁剪、水平翻轉、顏色通道雜訊和亮度變化。使用交叉熵損失訓練。我們發現學習結束時的輔助損失和0.4權值的全局特徵提取模塊是有益的。
批量歸一化在每個激活函數之前使用。Dropout只在最後一層,也就是softmax之前。與MobileNet[10]和ContextNet[21]相反,我們發現使用ReLU訓練得更快,而且精度比ReLU6稍高,即使整個模型都使用深度可分離卷積。
我們發現訓練更多的迭代次數可以提高性能。除非另有說明,我們使用Cityescapes數據集[6]用1000個epoch訓練我們的模型。值得注意的是,Fast-SCNN的容量故意非常低,只有1.11million個參數。後來我們發現有益的數據增強技術使得不太可能過度擬合。
4.2.在Cityscapes數據集上的評估
Cityscapes是最大的公開的城市道路數據集,包含從歐洲50個不同城市拍攝的高解析度圖像(1024×2048px)。它有5000個高質量標注的圖像,其中訓練集2975個,驗證集500個,測試集1525個。訓練集和驗證集的標注是公開的,測試集的結果可以在評估伺服器上進行評估。此外,20000個弱標注圖像(粗糙標簽)可用於訓練。我們在這兩者上都進行評估:高質量標注樣本和粗糙標注樣本。Cityscapes提供30個類別標簽,而只有19個類別用於評估。接下來我們報告模型的mIoU和推斷時間。下面報告聯合上的平均交集(mIoU)和網路推理時間。
我們在Cityscapes不公開的測試集上評估總體性能。我們所提的FastSCNN與其他最先進的實時語義分割方法(ContextNet[21]、BiSeNet[34]、GUN[17]、ENet[20]和ICNet[36])和離線方法(PSPNet[37]和DeepLab-V2[4])的比較如表4所示。FastSCNN達到68.0%mIoU,略低於BiSeNet(71.5%)和GUN(70.4%)。ContextNet在這里只達到66.1%。
表5比較了不同解析度下的推斷時間。在這里,BiSeNet(57.3 fps)和GUN(33.3 fps)明顯慢於FastSCNN(123.5 fps)。與ContextNet(41.9fps)相比,在Nvidia Titan X(Maxwell)上,FastSCNN的速度也明顯更快。因此,我們得出結論,FastSCNN顯著提高了最先進模型的速度,而只以輕微的精度降低為代價。FastSCNN為低內存嵌入設備而設計,使用1.11million個參數,比BiSeNet的5.8million個參數少5倍。
最後,我們將跳連的作用置零,來測試FastSCNN的性能。驗證集上,mIoU從69.22%降低到64.30%。圖3比較了定性結果。正如所料,跳連對FastSCNN是有益的,特別是在邊界和小尺寸物體周圍。
4.3 預訓練和弱標注數據
大容量的深度卷積網路,如R-CNN[7]和PSPNet[37]已經表明,通過不同的輔助任務,預訓練可以提高性能。由於我們的FastSCNN是低容量的,我們希望在使用預訓練和不使用預訓練的情況下分別測試性能。據我們所知,預訓練和弱標注數據對低容量模型的作用的重要性,還沒有被研究過。結果如表6所示。
我們在ImageNet[27]上預先訓練FastSCNN,用平均池化替換特徵融合模塊,分類模塊現在只有一個softmax層。FastSCNN在ImageNet的驗證集上達到60.71%的top-1精度和83.0%的top-5精度。這一結果表明,FastSCNN的容量不足以達到ImageNet上大多數標准DCNNs的性能(>70%top-1)[10,28]。使用ImageNet預訓練的Fast-SCNN在城市景觀驗證集上的准確率為69.15%mIoU,僅比沒有預訓練的FastSCNN提高0.53%。因此,我們得出結論,在FastSCNN中,使用ImageNet預訓練不能獲得顯著的提升。
由於Cityscapes數據集和ImageNet數據集之間的重疊是有限的,因此可以合理地假設,由於兩個領域的容量有限,FastSCNN可能不會受益。因此,我們現在合並了Cityscapes提供的20000張粗糙標記的附加圖像,因為這些圖像來自類似的領域。然而,使用粗糙標注數據訓練的FastSCNN(使用或不使用ImageNet預訓練)性能相似,僅在沒有預訓練的情況下略優於原始的FastSCNN。請注意,由於DCNNs的隨機初始化,微小的性能浮動是微不足道的。
我們表明,無論是ImageNet預訓練還是弱標記數據都對我們的低容量DCNN沒有顯著的好處。圖4顯示了訓練曲線。使用粗糙標注數據訓練的FastSCNN的迭代速度慢,因為標注的質量差。使用ImageNet預訓練的兩個模型在早期階段(對不用粗標注數據的模型是前400個epoch,對使用粗標注數據的模型是前100個epoch)表現的更好。帶有粗數據序列的快速SCNN迭代速度慢是標簽質量差的原因。ImageNet的兩個預訓練版本只在早期階段都表現得更好(單獨訓練集最多400個階段,使用附加的粗略標記數據訓練時為100個階段)。這意味著,當我們從頭訓練模型(也就是不使用預訓練)時,多訓練一些epoch就能達到和使用預訓練類似的精度。
4.4 更低的輸入解析度
我們評估下在1/2和1/4解析度下模型的性能(表7)。
1/4解析度下,模型精度51.9%,速度485.4fps,這比MiniNet(佚名)的40.7%mIoU、250fps好得多。在1/2解析度下,可達到具有競爭力的62.8%mIoU、285.8fps。我們強調,無需修改,快速SCNN直接適用於較低的輸入解析度,使其非常適合嵌入式設備。
5 結論
我們提出了FastSCNN用於實時語義分割。多分支結構的共享計算可以節省計算量提高速度。實驗表明跳連有利於恢復空間細節。如果訓練的epoch數足夠多,對低容量網路而言,大規模輔助任務預訓練沒必要。
② CVPR 2019 Oral 論文解讀 | 無監督域適應語義分割
雷鋒網 AI 科技評論按: 網路研究院、華中科技大學、悉尼科技大學聯合新作——關於無監督領域自適應語義分割的論文《 Taking A Closer Look at Domain Shift: Category-level Adversaries for Semantics Consistent Domain Adaptation》被 CCF A 類學術會議 CVPR2019 收錄為 Oral 論文 。該論文提出了一種從「虛擬域」泛化到「現實域」的無監督語義分割演算法,旨在利用易獲取的虛擬場景標注數據來完成對標注成本高昂的現實場景數據的語義分割,大大減少了人工標注成本。 本文是論文作者之一羅亞威為雷鋒網 AI 科技評論提供的論文解讀。
論文地址: https://arxiv.org/abs/1809.09478
1.問題背景
基於深度學習的語義分割方法效果出眾,但需要大量的人工標注進行監督訓練。不同於圖像分類等任務,語義分割需要像素級別的人工標注,費時費力,無法大規模實施。藉助於計算機虛擬圖像技術,如3D游戲,用戶可以幾乎無成本地獲得無限量自動標注數據。然而虛擬圖像和現實圖像間存在嚴重的視覺差異(域偏移),如紋理、光照、視角差異等等,這些差異導致在虛擬圖像上訓練出的深度模型往往在真實圖像數據集上的分割精度很低。
2. 傳統方法
針對上述域偏移問題,一種廣泛採用的方法是在網路中加入一個域判別器Discriminator (D),利用對抗訓練的機制,減少源域Source (S)和目標域Target(T)之間不同分布的差異,以加強原始網路(G)在域間的泛化能力。方法具體包括兩方面:
(1)利用源域的有標簽數據進行有監督學習,提取領域知識:
其中Xs,Ys為源域數據及其對應標簽。
(2)通過對抗學習,降低域判別器(D)的精度,以對齊源域與目標域的特徵分布:
其中XT為目標域數據,無標簽。
3.我們針對傳統方法的改進
以上基於對抗學習的傳統域適應方法只能對齊全局特徵分布(Marginal Distribution),而忽略了不同域之間,相同語義特徵的語義一致性(Joint Distribution),在訓練過程中容易造成負遷移,如圖2(a)所示。舉例來說,目標域中的車輛這一類,可能與源域中的車輛在視覺上是接近的。因此,在沒有經過域適應演算法之前,目標域車輛也能夠被正確分割。然而,為了迎合傳統方法的全局對齊,目標域中的車輛特徵反而有可能會被映射到源域中的其他類別,如火車等,造成語義不一致。
針對這一問題,我們在今年CVPR的論文中,向對抗學習框架里加入了聯合訓練的思想,解決了傳統域適應方法中的語義不一致性和負遷移等鍵問題。具體做法見圖2(b),我們採用了兩個互斥分類器對目標域特徵進行分類。當兩個分類器給出的預測很一致時,我們認為該特徵已經能被很好的分類,語義一致性較高,所以應減少全局對齊策略對這些特徵產生的負面影響。反之,當兩個分類器給出的預測不一致,說明該目標域特徵還未被很好地分類,依然需要用對抗損失進行與源域特徵的對齊。所以應加大對齊力度,使其盡快和源域特徵對應。
4.網路結構
為了實現上述語義級對抗目標,我們提出了Category-Level Adversarial Network (CLAN)。 遵循聯合訓練的思想,我們在生成網路中採用了互斥分類器的結構,以判斷目標域的隱層特徵是否已達到了局部語義對齊。在後續對抗訓練時, 網路依據互斥分類器產生的兩個預測向量之差(Discrepancy)來對判別網路所反饋的對抗損失進行加權。網路結構如下圖3所示。
圖3中,橙色的線條表示源域流,藍色的線條表示目標域流,綠色的雙箭頭表示我們在訓練中強迫兩個分類器的參數正交,以達到互斥分類器的目的。源域流和傳統的方法並無很大不同,唯一的區別是我們集成了互斥分類器產生的預測作為源域的集成預測。該預測一方面被標簽監督,產生分割損失(Segmentation Loss),如式(3)所示:
另一方面,該預測進入判別器D,作為源域樣本。
綠色的雙箭頭處,我們使用餘弦距離作為損失,訓練兩個分類器產生不同的模型參數:
目標域流中,集成預測同樣進入判別器D。不同的是,我們維持兩個分類器預測的差值,作為局部對齊程度的依據 (local alignment score map)。該差值與D所反饋的損失相乘,生成語義級別的對抗損失:
該策略加大了語義不一致特徵的對齊力度,而減弱了語義一致的特徵受全局對齊的影響,從而加強了特徵間的語義對齊,防止了負遷移的產生。
最後,根據以上三個損失,我們可以得出最終的總體損失函數:
基於以上損失函數,演算法整體的優化目標為:
在訓練中,我們交替優化G和D,直至損失收斂。
5. 特徵空間分析
我們重點關注不常見類,如圖4(a)中黃框內的柱子,交通標志。這些類經過傳統方法的分布對齊,反而在分割結果中消失了。結合特徵的t-SNE圖,我們可以得出結論,有些類的特徵在沒有進行域遷移之前,就已經是對齊的。傳統的全局域適應方法反而會破壞這種語義一致性,造成負遷移。而我們提出的語義級別對抗降低了全局對齊對這些已對齊類的影響,很好的解決了這一問題。
6. 實驗結果
我們在兩個域適應語義分割任務,即GTA5 -> Cityscapes 和 SYNTHIA -> Cityscapes 上進行了實驗驗證。我們採用最常見的Insertion over Union作為分割精度的衡量指標,實驗結果如下。從表1和表2中可以看出,在不同網路結構(VGG16,ResNet101)中,我們的方法(CLAN)域適應效果都達到了 state-of-the-art的精度。特別的,在一些不常見類上(用藍色表示),傳統方法容易造成負遷移,而CLAN明顯要優於其他方法。
表 1. 由虛擬數據集GTA5 遷移至真實數據集 Cityscapes 的域適應分割精度對比。
表 2. 由虛擬數據集SYNTHIA 遷移至真實數據集 Cityscapes 的域適應分割精度對比。
第二個實驗中,我們了展示隱空間層面,源域和目標域間同語義特徵簇的中心距離。該距離越小,說明兩個域間的語義對齊越好。結果見圖 5。
最後,我們給出分割結果的可視化效果。我們的演算法大大提高了分割精度。
7. 總結
《Taking A Closer Look at Domain Shift: Category-level Adversaries for Semantics Consistent Domain Adaptation》引入了聯合訓練結合對抗學習的設計,在無監督域適應語義分割任務中取得了較好的實驗結果。該演算法能應用前景廣泛,比如能夠很好地應用到自動駕駛中,讓車輛在不同的駕駛環境中也能保持魯棒的街景識別率。
最後
CVPR 2019 Oral 論文精選匯總,值得一看的 CV 論文都在這里(持續更新中)
CVPR 2019 即將於 6 月在美國長灘召開。今年有超過 5165 篇的大會論文投稿,最終錄取 1299 篇,其中 Oral 論文近 300 篇。為了方便社區開發者和學術青年查找和閱讀高價值論文,AI 研習社從入選的 Oral 論文中,按應用方向挑選了部分精華論文,貼在本文,打開鏈接即可查看~
https://ai.yanxishe.com/page/postDetail/11408
③ Lecture 11 檢測與分割
我們之前都是圖像分類的任務,最後一個全連接層得到所有分類的得分。現在我們來研究計算機視覺的其他任務,比如語義分割、圖像分類與定位、目標檢測、實例分割等。
在 語義分割 任務中,輸入一張圖片,希望輸出能對圖像的每個像素做出分類,判斷這個像素是屬於物體或者背景,不再像之前那樣整張圖片都是一個類。語義分割不會區分實例,只關心像素,所以如果圖中有兩頭牛,會把兩塊像素都歸為牛,不會分開每一頭,以後會講到 實例分割 (Instance Segmentation)可以區分實例。
實現語義分割的一個想法是 滑動窗口 ,即將圖像分成一個個的小塊,然後使用CNN網路計算小塊的中心元素屬於哪個分類。這樣做的一個問題是,需要為每個像素計算一次,很多運算都是重復的,實際上沒人會這么做。
另一個想法是 全卷積 ( Fully Convolutional),將網路的所有層都設計成卷積層,這樣就能實現一次對圖像的所有像素進行預測。比如使用3x3的卷積層然後使用零填充保持輸入輸出的空間尺寸,最終得到一個CxHxW的特徵圖,其中C是像素分類的數量,這樣的一個特徵圖就一次計算了所有像素的分類得分。然後使用交叉熵損失、取平均、反向傳播等操作進行訓練。由於要為每個像素設置標簽,這樣的數據集花費是非常昂貴的。這里的數據集需要先確定圖像屬於哪個類別,比如貓,然後對圖像的像素點設置類別。實際應用中,如果一直保持空間尺寸的話計算量會很龐大,所以不能設置這種結構。
使用全卷積網路的一種好的形式是在網路內部使用 降采樣 (downsampling)然後使用 升采樣 (upsampling),只在最初的幾個卷積層保持尺寸,然後降采樣比如池化或跨進卷積(strided convolution)來降低尺寸,進行一系列卷積後升采樣到原來的尺寸。之所以需要去池化是因為池化減少了像素值,降低了圖像的清晰度,丟失了圖像空間結構,不知道這些像素原來在哪裡,所以也就不明確邊界應該在什麼位置,所以需要進行去池化得到這些空間信息。
然後問題是如何進行升采樣呢?
在一維中可能會表現的更清晰:濾波器被輸入加權後直接放到輸出中,輸出的步長為2,下一個位置要平移兩個像素,重疊的部分直接相加。最後為了使輸出是輸入的兩倍,需要裁掉一個像素。
之所以稱作轉置卷積,可以通過矩陣乘法來解釋,以一個一維的輸入為例 a = [a, b, c, d],現在做 3x1 的卷積,卷積核為 [x, y, z],步長1填充1,此時的卷積可以看作是卷積核組成的一個大的矩陣 X 與輸入 a 做乘法,如下圖左邊所示。(圖上應為xyz,書寫錯誤。)卷積核在輸入 a 上滑動對應元素相乘後相加得到輸出的過程,完全等價於卷積核組成的大矩陣與輸入 a 的乘法。然後將 X 轉置與 a 相乘,即轉置卷積,結果就是一個正常的卷積,改變的只是填充規則。
現在如果步長為2,情況就不一樣了。左邊的卷積仍然可以看作是乘法,而右側的轉置卷積就變成用輸入加權後的卷積核在輸出上的疊加。
綜上,語義分割任務的實現方法如下圖所示:
此外, 多視角3D重建 ( Multi-view 3D Reconstruction)也使用了降采樣和升采樣的方法。
定位 ( Localization)往往是與 分類 (Classificatio)結合在一起的,如果圖片分類是一隻貓,同時我們也想知道貓在這張圖片的什麼位置,要用一個框給框起來。這與 目標檢測 (Object Detection)是不同的,定位是一旦圖像已經歸為哪一類,比如貓,這樣我們就會有一個明確的目標去尋找,找出它的邊界即可。而目標檢測是要檢測出圖像上存在的物體。
定位可以復用分類的方法,比如AlexNet。如下圖所示,最後一個全連接層,除了得到1000個類別的得分,還會得到一個長為4的向量,表示目標的位置。這樣最後就有兩個損失,一個是正確分類的Softmax損失,另一個是正確位置的L2損失,L1、L2等損失也稱作 回歸損失 (Regression Loss)。最後將兩個損失通過某些超參數加權得到總損失,和之前的超參數不同的是,以前的超參數改變是為了減小損失,而這里的加權超參數直接會改變損失值的表達式,損失變大變小都有可能。使用總損失求梯度。這里使用的網路是使用ImageNet 預訓練過的模型,進行遷移學習。
目標檢測任務是這樣的:我們有幾個感興趣的類別,比如貓狗魚等等,現在輸入一張圖像,圖像上有幾個物體事先是不知道的,當我們我們感興趣的物體在圖像上出現時,我們希望模型能自動標記出目標物體的位置,並判斷出具體的分類。這實際上是很有挑戰的任務,也是計算機視覺中很核心的任務,對此的研究已經經歷了很多年,也有非常多的方法。
與定位最大的區別是,我們不知道圖上會有多少對象。比如圖像上只有一隻貓,我們最終的輸出只有一個位置四個數字;有兩只狗一隻貓,會輸出3個位置12個數字;那麼有一群鴨子呢?數量就很多了。所以目標檢測問題不能看作定位中的回歸問題。
另一個想法是把目標檢測問題看作分類問題。類似語義分割的想法,將圖像分成一個個的小塊,讓每一個小塊通過卷積網路判斷這塊是背景?是貓?是狗?可以這么想,但是這個小塊該怎麼獲得呢?不同的物體可能會有不同的大小、位置以及長寬比,這將是無數的情況,如果都要進行卷積,那麼計算量是非常大的。
實際上,更實用的方法是 候選區域 (Region Proposals )方法。 選擇性搜索 (Selective Search )方法就是在目標對象周圍設定2000個形狀大小位置不一的候選區域,目標物體在候選區域的可能性還是比較大的。然後對這些區域卷積,找到目標物體,雖然大多數區域都是無用的。與尋找幾乎個區域比起來,這種方法要高效的多。此外,這不是深度學習的方法,是機器學習演算法。 R-CNN 就是基於這種觀點提出的。首先對輸入圖片使用區域備選演算法,獲取2000個感興趣的區域(Regions of interest, roi),由於這些區域大小不一,所以需要處理成同樣的尺寸才能通過CNN,之後使用SVM對區域進行分類。可以使用線性回歸損失來校正包圍框,比如雖然這個框選中的物體是一個缺少頭部的狗,就需要對包圍框進行校正。總之,這是一個多損失網路。
R-CNN的問題是計算消耗大、磁碟佔用多、運行速度慢,即使測試時也要30秒測試一張圖片,因為有2000個區域。解決方法時使用 快速R-CNN (Fast R-CNN ),不在原始圖像生成備選區域,而是先整張圖片通過卷積網路得到特徵圖,然後在特徵圖上使用備選區域演算法得到感興趣的區域在特徵圖的映射,之後使用 Rol Pool將所有區域變成同樣尺寸。然後一方面使用softmax損失進行分類,一方面使用回歸損失比如L1平滑損失校正包圍框,總損失是兩部分的和,然後反向傳播進行訓練。
如下圖所示,效果還是很明顯的。但是快速R-CNN也有一個問題是運行時間被區域備選方案限制。
解決方案是 更快的R-CNN (Faster R-CNN)。這種方法的改進是與其使用固定的演算法得到備選區域,不如讓網路自己學習自己的備選區域應該是什麼。如下圖所示,前面仍然是通過卷積網路獲得特徵圖,然後通過一個 備選區域網路 (Region Proposal Network,RPN),該網路會做兩件事,一是計算分類損失,選擇的區域是目標還是不是目標;二是校正包圍框。得到備選區域後接下來的步驟就和快速R-CNN一致了,也是得到最後的分類得分和校正包圍框。訓練的過程會綜合這四個損失,最終效果很好。
Mask R-CNN是在Faster R-CNN基礎上改進而來,是2017年發布的方法。首先將整張圖像通過卷積網路和候選框生成網路,得到候選特徵在特徵圖上的映射再調整尺寸,到這里和Faster R-CNN都是相同的;現在不僅是得到分類得分和校正包圍框,還要增加一個分支通過卷積網路對每一個候選框預測一個分割區域模板。這個新增的分支就是一個在候選框中進行的微型語義分割任務。這樣上下兩個分支的任務就很明確了——上面的分支需要計算分類得分確定候選框中的目標屬於哪個分類以及通過對候選框坐標的回歸來預測邊界框的坐標;下面的分支基本類似一個微型語義分割網路,會對候選框中的每個像素進行分類,判斷每個像素是否屬於候選框的中目標。
Mask R-CNN綜合了上面講的很多方法,最終的效果也是非常好的。比如下圖最左邊,不僅框出了每個物體還分割了像素,即使很遠地方的人也被清晰的分割出來了。
此外,Mask R-CNN也可以識別動作,方法是在上面分支中增加一個關節坐標損失,這樣就能同時進行分類、檢測、動作識別、語義分割。此外,基於Faster R-CNN,運行速度也是非常快的。下圖展示的效果是很令人驚訝的,可以同時識別出圖上有多少人,分割出他們的像素區域,並且會標示他們的動作姿勢。
使用前饋模型。
YOLO 即 「You Only Look Once」 和 SSD 即 「Single-Shot MultiBox Detector」,這兩個模型是在同一時期提出的(2016),它們不會使用候選框分別進行處理,而是嘗試將其作為回歸問題,通過一個大的卷積網路,一次完成所有預測。給定輸入圖像,分成網格狀比如7x7,然後在每個小單元中心處使用 B 個基本的邊界框,比如高的、寬的、正方形的,這樣總共有 7x7xB個基本框。現在想對每個網格單元的所有基本邊界框預測目標物體,首先要預測每個基本邊界框偏移來確定邊界框和真實物體的位置差值,使用5個值(dx, dy, dh, dw, confidence)來表示偏差;然後預測每個網格單元里目標的 C 個分類(包括背景)得分,這樣每個網格單元都會得到一個分類得分,即目標所屬類別。最終的輸出就是一個三維的張量:7x7x(5*B+C)。
TensorFlow Detection API(Faster RCNN, SSD, RFCN, Mask R-CNN): 點擊這里
二維平面的目標檢測只需確定 [x, y, w, h],3D的定位框需要確定的坐標為 [x, y, z, roll, pitch, yaw],簡化後可以不需要 roll 和 pitch。比2D目標檢測要復雜的多。
④ 產品語義切分原則是什麼
語義分割作為計算機視覺領域的關鍵任務,是實現完整場景理解的必經之路。為了讓機器擁有視覺,要經過圖像分類、物體檢測再到圖像分割的過程。其中,圖像分割的技術難度最高。
越來越多的應用得益於圖像分類分割技術,全場景理解在計算機視覺領域也至關重要。其中一些應用包括自動駕駛車輛、人機交互、AR-VR等。隨著近年來深度學習的普及,很多語義分割問題都在使用深度架構來解決,其中最常見的是CNN(卷積神經網),它的精度和效率都大大超過了其他方法。
語義分割是什麼?
語義分割是從粗到細推理的一個自然步驟:原點可以定位在分類,它包括對整個輸入進行預測.下一步是本地化/檢測,它不僅提供了類,而且還提供了關於這些類的空間位置的附加信息。最後,語義分割通過為每個像素進行密集的預測推斷標簽來實現細粒度推理,因此每個像素都被標記為其包圍對象礦石區域的類。
更具體地說,語義圖像分割的目標是給圖像中的每個像素都貼上對應的一類所代表的內容的標簽。因為我們要對圖像中的每個像素進行預測,所以這個任務通常被稱為密集預測。這里要注意的事,語義分割是為給定圖像中的每個像素分配一個類的任務而並非為整個圖像分配一個單一的類,語義分割是將圖像中的每個像素都歸入其中的一個類。
語義分割的應用
自動駕駛:需要為汽車配備必要的感知能力,讓汽車可以「觀察」路況和周遭環境,從而使自動駕駛汽車能夠安全地在道路上行駛。
⑤ 語義分割的解碼器去噪預訓練
Decoder Denoising Pretraining for Semantic Segmentation
https://arxiv.org/abs/2205.11423
23 May, 2022
Authors: Emmanuel Brempong Asie, Simon Kornblith, Ting Chen , Niki Parmar , Matthias Minderer, Mohammad Norouzi
摘要:語義分割標注的獲取既昂貴又耗時。因此,通常使用預訓練來提高分割模型的標注效率。通常,分割模型的編碼器作為分類器進行預訓練,解碼器隨機初始化。在這里,我們認為解碼器的隨機初始化可能是次優的,尤其是當標注樣本很少時。我們提出了一種基於去噪的解碼器預訓練方法,該方法可以與編碼器的有監督預訓練相結合。我們發現,在ImageNet數據集上,解碼器去噪預訓練的效果明顯優於編碼器監督的預訓練。盡管解碼器去噪預訓練非常簡單,但它在標注高效語義分割方面取得了最先進的效果,並在城市景觀、Pascal上下文和ADE20K數據集上獲得了可觀的收益。
1簡介
計算機視覺中的許多重要問題,如語義分割和深度估計,都需要密集的像素級預測。為這些任務構建精確的監督模型是一項挑戰,因為在所有圖像像素上密集地收集真值標注成本高昂、耗時且容易出錯。因此,最先進的技術通常求助於預訓練,其中模型主幹(即編碼器)首先被訓練為監督分類器(Sharif Razavian等人,2014;Radford等人,2021;Kolesnikov等人,2020)或自監督特徵提取器(Oord等人,2018;Hjelm等人,2018;Bachman等人,2019;He等人,2020;Chen等人,2020b;c;Grill等人,2020)。主幹架構(如Resnet(He et al.,2016))逐漸降低了特徵圖的解析度。因此,為了進行像素級預測,需要解碼器將采樣恢復到像素級。大多數最先進的語義分割模型都不會預訓練解碼器引入的附加參數並隨機初始化它們。在本文中,我們認為解碼器的隨機初始化遠遠不是最優的,並且使用簡單但有效的去噪方法預訓練解碼器權重可以顯著提高性能。
去噪自動編碼器在機器學習方面有著悠久而豐富的歷史(Vincent et al.,2008;2010)。一般的方法是向干凈的數據中添加雜訊,並訓練模型將雜訊數據分離回干凈的數據和雜訊分量,這需要模型學習數據分布。去噪目標非常適合於訓練密集預測模型,因為它們可以在每像素級別上輕松定義。雖然去噪的想法由來已久,但去噪目標最近在去噪擴散概率模型(DPM)背景下吸引了新的興趣;(Sohl Dickstein等人,2015;Song&Ermon,2019;Ho等人,2020))。DPMs通過學習通過一系列迭代去噪步驟將高斯雜訊轉換為目標分布,從而近似復雜的經驗分布。這種方法在圖像和音頻合成方面取得了令人印象深刻的結果(Nichol&Dhariwal,2021;Dhariwal&Nichol,2021;Saharia et al.,2021b;Ho et al.,2021;Chen et al.,2021b),在樣本質量分數方面優於強GAN和自回歸基線。
受擴散模型中去噪的新興趣和成功的啟發,我們研究了通過去噪自動編碼器學習的表示在語義分割中的有效性,特別是對於通常隨機初始化的預訓練解碼器權重。
總之,本文研究了語義分割體系結構中解碼器的預訓練,發現通過隨機初始化可以獲得顯著的收益,特別是在有限的標注數據設置中。我們提出將去噪用於解碼器預訓練,並將去噪自動編碼器連接到擴散概率模型,以改進去噪預訓練的各個方面,例如在去噪目標中預測雜訊而不是圖像,以及在添加高斯雜訊之前縮放圖像。這導致在三個數據集上對編碼器的標准監督預訓練有了顯著的改進。
在第2節中,我們在深入研究常規去噪預訓練的細節之前,先對其進行簡要概述
第3節和第4節中的解碼器對預訓練進行去噪。
第5節介紹了與最新方法的實證比較。
2方法
我們的目標是學習能夠很好地遷移到密集視覺預測任務的圖像表示。我們考慮一種由編碼器fθ和解碼器gφ組成的體系結構,解碼器gφ由兩組參數θ和φ參數化。此模型將圖像x作為輸入∈ R H×W×C並將其轉換為稠密表示y∈ R h×w×c,例如語義分割掩碼。
我們希望找到一種初始化參數θ和φ的方法,這樣模型就可以通過幾個標注的樣本有效地在語義分割上進行微調。對於編碼器參數θ,我們可以按照標准實踐,使用分類時預訓練的權重初始化它們。我們的主要貢獻涉及解碼器參數φ,它通常是隨機初始化的。我們建議將這些參數作為去噪自動編碼器進行預訓練(Vincent et al.,2008;2010):給定一幅未標注的圖像x,我們通過將高斯雜訊σc與固定的標准偏差σ相加到x,獲得一幅帶噪圖像xe,然後將模型訓練為自動編碼器gφ◦ fθ以最小化重建誤差kgφ(fθ(xe))− xk 2 2(僅優化φ並保持θ固定)。我們稱這種方法為解碼器去噪預訓練(DDeP)。或者,φ和θ都可以通過去噪(去噪預訓練;DeP)進行訓練。下面,我們將討論對標准自動編碼器公式的幾個重要修改,這些修改將顯著提高表示的質量。
作為我們的實驗裝置,我們使用了Transune(Chen et al.(2021a));圖2)。編碼器根據ImageNet-21k(Deng等人,2009)分類進行預訓練,而解碼器則使用我們的去噪方法進行預訓練,也使用ImageNet-21k圖像,而不使用標注。預訓練後,該模型根據城市景觀、Pascal上下文或ADE20K語義分段數據集進行微調(Cordts等人,2016;Mottaghi等人,2014;Zhou等人,2018)。我們報告了所有語義類別的平均交並比(mIoU)。我們在第5.1節中描述了進一步的實施細節。
圖1顯示,我們的DDeP方法明顯優於僅編碼器的預訓練,尤其是在少樣本情況下。圖6顯示,即使是DeP,即在沒有任何監督預訓練的情況下對整個模型(編碼器和解碼器)進行去噪預訓練,也可以與監督預訓練相競爭。我們的結果表明,盡管去噪預訓練簡單,但它是學習語義分割表示的一種有效方法。
3編碼器和解碼器的去噪預訓練
如上所述,我們的目標是學習能夠很好地轉換到語義分割和其他密集視覺預測任務的有效視覺表示。我們重新討論去噪目標以實現這一目標。我們首先介紹標准去噪自動編碼器公式(針對編碼器和解碼器)。然後,我們提出了對標准公式的一些修改,這些修改的動機是最近擴散模型在圖像生成方面的成功(Ho等人,2020年;Nichol&Dhariwal,2021;Saharia等人,2021b)。
3.1標准去噪目標
在標准去噪自動編碼器公式中,給定一個未標注的圖像x,我們通過將高斯雜訊σc與固定的標准偏差σx相加,得到一個帶噪圖像xe,
然後我們訓練一個自動編碼器gφ◦ fθ以最小化重建誤差kgφ(fθ(xe))− xk 2。因此,目標函數採用以下形式
雖然這個目標函數已經產生了對語義分割有用的表示,但我們發現,一些關鍵的修改可以顯著提高表示的質量。
3.2目標中去噪目標的選擇
標准去噪自動編碼器目標訓練模型來預測無噪圖像x。然而,擴散模型通常訓練來預測雜訊向量c(Vincent,2011;Ho et al.,2020):
對於具有從輸入xe到輸出的跳躍連接的模型,這兩個公式的行為類似。在這種情況下,模型可以很容易地將其對c的估計與輸入xe結合起來,以獲得x。
然而,在沒有明確的跳躍連接的情況下,我們的實驗表明,預測雜訊向量明顯優於預測無雜訊圖像(表1)。
3.3作為預訓練目標的去噪的可擴展性
無監督的預訓練方法最終會受到由預訓練目標學習的表徵與最終目標任務所需表徵之間不匹配的限制。對於任何無監督的目標,一個重要的「健全性檢查」是,它不會很快達到這個極限,以確保它與目標任務很好地一致。我們發現,通過去噪學習的表示將繼續提高到我們的最大可行預訓練計算預算(圖3)。這表明去噪是一種可擴展的方法,並且表示質量將隨著計算預算的增加而繼續提高。
3.4去噪與監督預訓練
在標准去噪自動編碼器公式中,使用去噪對整個模型(編碼器和解碼器)進行訓練。然而,至少在微調數據豐富的情況下,全模型的去噪預訓練性能不如編碼器的標准監督預訓練(表2)。在下一節中,我們將探索將去噪和有監督的預訓練相結合,以獲得兩者的好處。
4僅對解碼器進行去噪預訓練
實際上,由於已經存在用於預訓練編碼器權重的強大且可伸縮的方法,因此去噪的主要潛力在於預訓練解碼器權重。為此,我們將編碼器參數θ固定在通過在ImageNet-21k上進行監督預訓練獲得的值上,並且僅對解碼器參數φ進行預訓練並進行去噪,從而實現以下目標:
我們將這種預訓練方案稱為解碼器去噪預訓練(DDeP)。如下所示,在所有標注效率機制中,DDeP的性能優於純監督或純去噪預訓練。在第5節給出基準結果之前,我們研究了DDeP的關鍵設計決策,如本節中的雜訊公式和最佳雜訊級。
4.1雜訊大小和圖像與雜訊的相對比例
解碼器去噪預訓練的關鍵超參數是添加到圖像中的雜訊的大小。雜訊方差σ必須足夠大,網路必須學習有意義的圖像表示才能將其移除,但不能太大,導致干凈圖像和雜訊圖像之間的分布過度偏移。對於目視檢查,圖4顯示了σ的幾個樣本值。
除了雜訊的絕對大小外,我們還發現干凈圖像和雜訊圖像的相對縮放也起著重要作用。不同的去噪方法在這方面有所不同。具體地說,DDPM生成一個有雜訊的圖像xe as
這不同於等式(1)中的標准去噪公式,因為x衰減為√γ和c衰減為√ 1.− γ,以確保如果x的方差為1,則隨機變數xe的方差為1。使用此公式,我們的去噪預訓練目標變為:
在圖5中,我們將這種縮放的加性雜訊公式與簡單的加性雜訊公式(公式(1))進行了比較,發現縮放圖像可以顯著提高下游語義分割性能。我們推測,雜訊圖像的方差與雜訊大小的解耦減少了干凈圖像和雜訊圖像之間的分布偏移,從而改善了預訓練表示到最終任務的傳遞。因此,本文其餘部分將使用此公式。我們發現,對於縮放的加性雜訊公式,最佳雜訊幅值為0.22(圖5),並將該值用於下面的實驗。
4.2預訓練數據集的選擇
原則上,任何圖像數據集都可以用於去噪預訓練。理想情況下,我們希望使用大型數據集(如ImageNet)進行預訓練,但這引發了一個潛在的擔憂,即預訓練數據和目標數據之間的分布變化可能會影響目標任務的性能。為了驗證這一點,我們比較了解碼器在幾個數據集上進行去噪預訓練,而編碼器在ImageNet-21K上進行預訓練,並保持分類目標不變。我們發現,對於所有測試數據集(城市景觀、Pascal上下文和ADE20K;表3),在ImageNet-21K上預訓練解碼器比在目標數據上預訓練解碼器的效果更好。值得注意的是,這甚至適用於城市景觀,城市景觀在圖像分布方面與ImageNet-21k存在顯著差異。因此,在通用圖像數據集上使用DDeP預訓練的模型通常適用於范圍廣泛的目標數據集。
4.3解碼器變體
考慮到解碼器去噪預訓練顯著改善了解碼器的隨機初始化,我們假設該方法可以使解碼器的大小擴大到使用隨機初始化時效益減少的程度。我們通過在解碼器的各個階段改變特徵映射的數量來測試這一點。我們所有實驗的默認(1×)解碼器配置為[1024、512、256、128、64],其中索引i處的值對應於第i個解碼器塊處的特徵映射數。這反映在圖2中。在Cityscapes上,我們嘗試將所有解碼器層的默認寬度加倍(2×),而在Pascal上下文和ADE20K上,我們嘗試將寬度加倍(3×)。雖然較大的解碼器通常即使在隨機初始化時也能提高性能,但DDeP在所有情況下都會帶來額外的增益。因此,DDeP可能會解鎖新的解碼器密集型架構。我們在第5節中給出了1×解碼器和2×/3×解碼器的主要結果。
4.4擴散過程的擴展
如上所述,我們發現,通過調整標准自動編碼器公式的某些方面,如預測目標的選擇以及圖像和雜訊的相對縮放,可以改進預訓練表示,使其更類似於擴散模型。這就提出了一個問題,即是否可以通過使用全擴散過程進行預訓練來進一步改進表徵。在這里,我們研究了使該方法更接近DDPM中使用的完全擴散過程的擴展,但發現它們並沒有改善上述簡單方法的結果。
可變雜訊表。
由於它使用單個固定雜訊級(式(6)中的γ),因此我們的方法對應於擴散過程中的單個步驟。完整的DDPMs通過從每個訓練樣本的[0,1]中隨機均勻采樣雜訊幅值γ,模擬從干凈圖像到純雜訊(及其相反)的完整擴散過程(Ho et al.,2020)。因此,我們也對隨機抽樣γ進行了實驗,但發現固定γ表現最好(表4)。
調節雜訊水平。
在擴散形式中,模型表示從一個雜訊級到下一個雜訊級的(反向)過渡函數,因此以當前雜訊級為條件。在實踐中,這是通過為每個訓練樣本提供所采樣的γ作為額外的模型輸入來實現的,例如,提供給歸一化層。由於我們通常使用固定的雜訊級,因此我們的方法不需要調節。當使用可變雜訊時間表時,調節也不會提供任何改善。
雜訊級加權。
在DDPM中,損失中不同雜訊級的相對權重對樣品質量有很大影響(Ho等人,2020年)。由於我們的實驗表明,學習可遷移表徵不需要多個雜訊級,因此我們沒有對不同雜訊級的權重進行實驗,但請注意,這可能是未來研究的一個有趣方向。
5基準結果
我們在幾個語義分割數據集上評估了所提出的解碼器去噪預訓練(DDeP)的有效性,並進行了標注效率實驗。
5.1實施細則
對於語義分割任務的預訓練模型的下游微調,我們使用標準的逐像素交叉熵損失。我們使用Adam(Kingma&Ba,2015)優化器和餘弦學習率衰減計劃。對於解碼器去噪預訓練(DDeP),我們使用512的批量大小,並訓練100個epoch。學習速度為6e−5用於1×和3×寬度解碼器,以及1e−4用於2×寬度解碼器。
在對目標語義分割任務中的預訓練模型進行微調時,我們將權值衰減和學習率值掃過[1e−5,3e−4] 並為每個任務選擇最佳組合。對於100%設置,我們報告所有數據集上10次運行的平均值。在Pascal上下文和ADE20K中,我們還報告了1%、5%和10%標注分數的10次運行(不同子集)的平均值,以及20%設置的5次運行的平均值。在城市景觀上,我們報告了1/30設置下10次跑步的平均值,1/8設置下6次跑步,1/4設置下4次跑步的平均值。
在訓練過程中,對圖像及其相應的分割模板應用隨機裁剪和隨機左右翻轉。對於城市景觀,我們將圖像隨機裁剪為1024×1024的固定大小,對於ADE20K和Pascal上下文,我們將圖像裁剪為512×512的固定大小。所有解碼器去噪預訓練運行均以224×224解析度進行。
在城市景觀推斷過程中,我們通過將全解析度1024×2048圖像分割為兩個1024×1024輸入patch來評估它們。我們採用水平翻轉,平均每一半的結果。將兩半部分串聯起來以產生全解析度輸出。對於Pascal Context和ADE20K,除了水平翻轉外,我們還對圖像的重縮放版本使用多尺度評估。使用的比例因子為(0.5、0.75、1.0、1.25、1.5、1.75)。
5.2解碼器去噪預訓練的性能增益
在城市景觀方面,DDeP的表現優於DeP和有監督的預培訓。在圖6中,我們報告了城市景觀上的DeP和DDeP結果,並將其與隨機初始化或使用ImageNet-21K預訓練編碼器初始化的訓練結果進行比較。DeP結果使用了縮放的加性雜訊公式(方程式(5)),與標准降噪目標獲得的結果相比,性能顯著提高。
如圖6所示,在1%和5%標注圖像設置中,DeP優於監督基線。對於1×和2×解碼器變體,解碼器去噪預訓練(DDeP)比DeP和ImageNet-21K監督預訓練都有進一步改進(表6)。
如表5.2所示,DDeP在所有標注分數上都優於先前提出的城市景觀標注有效語義分割方法。只有25%的訓練數據,DDeP比最強的基線方法PC2Seg(Zhong等人,2021)在完整數據集上訓練時產生的分割效果更好。與最近的工作不同,我們不對城市景觀進行多尺度評估,這將導致進一步的改進。
DDeP還改進了Pascal上下文數據集上的有監督預訓練。圖1比較了DDeP在1%、5%、10%、20%和100%的訓練數據上與有監督基線和Pascal上下文上隨機初始化模型的性能。表5.2將這些結果與使用3×解碼器獲得的結果進行了比較。對於1×和3×解碼器,DDeP的性能明顯優於架構上相同的監督模型,在所有半監督設置中獲得了4-12%的mIOU改進。值得注意的是,只有10%的標注,DDeP優於20%標注訓練的監督模型。
圖7顯示了ADE20K數據集上DDeP的類似改進。我們再次看到,在5%和10%的設置中,收益超過10分,在1%的設置中,收益超過5分。這些一致的結果證明了DDeP在數據集和訓練集大小方面的有效性。
我們的上述結果使用了Transune(Chen等人(2021a));圖2)實現最大性能的體系結構,但DDeP與主幹網無關,並且與更簡單的主幹網體系結構一起使用時也會帶來好處。在表7中,我們訓練了一個標準的U-Net,該U-Net帶有一個ResNet50編碼器,在Pascal上下文中具有DDeP(無多尺度評估)。DDeP在所有設置中都優於監督基線,表明我們的方法超越了transformer架構。
6相關工作
因為為語義分割收集詳細的像素級標注成本高昂、耗時且容易出錯,已經提出了許多方法來從較少的標注樣本中實現語義分割(Tarvainen&Valpola,2017;Miyato et al.,2018;Hung et al.,2018;Mittal et al.,2021;French et al.,2019;Ouali et al.,2020;Zou et al.,2021;Feng et al.,2020b;Ke et al.,2020;Olsson et al.,2021;Zhong et al.,2021)。這些方法通常求助於半監督學習(SSL)(Chapelle et al.,2006;Van Engelen&Hoos,2020),在這種學習中,除了有標注的訓練數據外,還假設可以訪問大量的未標注圖像數據集。在接下來的內容中,我們將討論以前關於強數據增強、生成模型、自訓練和自監督學習在標注有效語義分割中的作用的工作。雖然這項工作側重於自監督的預訓練,但我們相信,強大的數據增強和自訓練可以與所提出的去噪預訓練方法相結合,以進一步改善結果。
數據增強。
French et al.(French et al.,2019)證明,Cutout(DeVries&Taylor,2017)和CutMix(Yun et al.,2019)等強大的數據增強技術對於少數標注樣本的語義分割特別有效。Ghiasi等人(2021)發現,簡單的復制粘貼增強有助於實例分割。之前的工作(Remez et al.,2018;Chen et al.,2019;Bielski&Favaro,2019;Arandjelović&Zisserman,2019)也通過利用GANs(Goodfello et al.,2014)組合不同的前景和背景區域來生成新的可信圖像,探索了完全無監督的語義分割。我們使用了相對簡單的數據增強,包括水平翻轉和隨機起始式裁剪(Szegedy et al.,2015)。使用更強大的數據增強留給未來的工作。
生成模型。
標注有效語義分割的早期工作使用GANs生成合成訓練數據(Souly et al.,2017),並區分真實和預測的分割掩碼(Hung et al.,2018;Mittal et al.,2021)。DatasetGAN(Zhang等人,2021)表明,現代GAN架構(Karras等人,2019)在生成合成數據以幫助像素級圖像理解方面是有效的,而此時只有少數標注圖像可用。我們的方法與擴散和基於分數的生成模型高度相關(Sohl Dickstein et al.,2015;Song&Ermon,2019;Ho et al.,2020),這代表了一個新興的生成模型家族,導致圖像樣本質量優於GANs(Dhariwal&Nichol,2021;Ho et al.,2021)。這些模型通過去噪分數匹配與去噪自動編碼器相連(Vincent,2011),可以看作是訓練基於能量的模型的方法(Hyvärinen&Dayan,2005)。去噪擴散模型(DDPM)最近已應用於超解析度、著色和修復等條件生成任務(Li等人,2021;Saharia等人,2021b;Song等人,2021;Saharia等人,2021a),表明這些模型可能能夠學習有用的圖像表示。我們從DDPM的成功中得到了啟發,但我們發現DDPM的許多組件都不是必需的,簡單的去噪預訓練效果很好。擴散模型已被用於迭代優化語義分段掩碼(Amit等人,2021;Hoogeboom等人,2021)。Baranchuk et al.(Baranchuk et al.,2021)證明了通過擴散模型學習的特徵在語義分割中的有效性,這些特徵來自於極少數標注的樣本。相比之下,我們利用簡單的去噪預訓練進行表示學習,並研究編碼器-解碼器體系結構的完全微調,而不是提取固定特徵。此外,我們使用成熟的基準將我們的結果與之前的工作進行比較。
自訓練,一致性規范化。
自訓練(自學習或偽標注)是最古老的SSL演算法之一(Scudder,1965;Fralick,1967;Agrawala,1970;Yarowsky,1995)。它的工作原理是使用一個初始的監督模型,用所謂的偽標注對未標注的數據進行注釋,然後使用偽標注和人類標注數據的混合來訓練改進的模型。這個迭代過程可以重復多次。自訓練已被用於改進目標檢測(Rosenberg等人,2005;Zoph等人,2020)和語義分割(Zhu等人,2020;Zou等人,2021;Feng等人,2020a;Chen等人,2020a)。一致性正則化與自訓練密切相關,並在圖像增強過程中加強預測的一致性(French et al.,2019;Kim et al.,2020;Ouali et al.,2020)。這些方法通常需要仔細調整超參數和合理的初始模型,以避免傳播雜訊。將自訓練與去噪預訓練相結合可能會進一步改善結果。
自監督學習。
自監督學習方法可以制定預測性的借口任務,這些任務很容易從未標注的數據中構建,並且有利於下游的區分性任務。在自然語言處理(NLP)中,掩蔽語言建模任務(Devlin等人,2019;Liu等人,2019;Raffel等人,2020)已成為事實上的標准,在NLP任務中顯示出令人印象深刻的結果。在計算機視覺中,提出了用於自監督學習的不同借口任務,包括預測圖像中相鄰patch的相對位置的任務(Doersch et al.,2015),修復任務(Pathak et al.,2016),解決拼圖(Noroozi&Favaro,2016),圖像著色(Zhang et al.,2016;Larsson et al.,2016),輪換預測(Gidaris et al.,2018)和其他任務(Zhang et al.,2017;Caron et al.,2018;Kolesnikov et al.,2019)。最近,基於樣本鑒別和對比學習的方法在圖像分類方面顯示出了有希望的結果(Oord et al.,2018;Hjelm et al.,2018;He et al.,2020;Chen et al.,2020b;c;Grill et al.,2020)。這些方法已被用於成功地預訓練用於對象檢測和分割的主幹(He et al.,2020;Chen et al.,2020d),但與這項工作不同的是,它們通常隨機初始化解碼器參數。最近,也有一系列基於掩蔽自動編碼的新興方法,如BEIT(Bao等人,2021)、MAE(He等人,2021)和其他方法(Zhou等人,2021;Dong等人,2021;Chen等人,2022)。我們注意到,我們的方法是針對這一系列掩模圖像建模同時開發的,我們的技術也是正交的,因為我們關注的是解碼器預訓練,這不是上述論文的重點。
用於密集預測的自監督學習。
Pinheiro et al.(2020)和Wang et al.(2021)提出了密集對比學習,這是一種針對密集預測任務的自監督預訓練方法,對比學習應用於patch和像素級特徵,而不是圖像級特徵。這讓人想起AMDIM(Bachman et al.,2019)和CPC V2(Hénaff et al.,2019)。Zhong等人(2021)進一步考慮了這一想法,並將圖像不同增強(可能未標注)的模型輸出之間的分割掩碼一致性與整個增強的像素級特徵一致性相結合。
視覺Transformer。
受NLP中Transformer的成功(Vaswani et al.,2017)的啟發,一些出版物研究了卷積和自注意相結合的目標檢測(Carion et al.,2020)、語義分割(Wang et al.,2018;2020b)和全景分割(Wang et al.,2020a)。Vision Transformer(ViT)(Dosovitskiy et al.,2021)證明,當大量標注數據集可用時,無卷積方法可以產生令人印象深刻的結果。最近的研究探索了將ViT作為語義分割的主幹(Zheng等人,2020年;Liu等人,2021;Strudel等人,2021)。這些方法在解碼器的結構上有所不同,但它們顯示了基於ViT的語義分割的能力。我們採用混合ViT(Dosovitskiy et al.,2021)作為主幹,其中patch嵌入投影應用於從卷積特徵圖中提取的patch。我們研究了解碼器的大小,發現更寬的解碼器通常會改善語義分割結果。
7結論
受最近流行的圖像合成擴散概率模型的啟發,我們研究了這些模型在學習語義分割有用的可遷移表示方面的有效性。令人驚訝的是,我們發現,將語義分割模型作為去噪自動編碼器進行預訓練可以大大提高語義分割性能,尤其是在標注樣本數量有限的情況下。我們基於這一觀察結果,提出了一種兩階段預訓練方法,其中監督預訓練編碼器與去噪預訓練解碼器相結合。這導致了數據集和訓練集大小的一致收益,從而形成了一種切實可行的預訓練方法。探索去噪預訓練在其他密集預測任務中的應用也很有趣。
⑥ 計算機視覺面試之語義分割
在深度學習廣泛應用於計算機視覺之前,人們一般使用TextonForest和Random Forest based Classifiers的方法進行語義分割。
深度學習方法中常見的一種語義分割方法是圖像塊分類(patch classification),即利用像素周圍的圖像塊對每一個像素進行分類。原因是網路模型通常包含全連接層(fully connect layer),而且要求固定大小的圖像輸入。
2014年,加州大學伯克利分校的Long等人提出全卷積網路(FCN),使得卷積神經網路不需要全連接層就可以實現密集的像素級分類,從而成為當前非常流行的像素級分類CNN架構。由於不需要全連接層,所以可以對任意大小的圖像進行語義分割,而且比傳統方法要快上很多。之後,語義分割領域幾乎所有的先進方法都是基於該模型進行擴展的。
為了保留像素的空間位置信息,有兩種方法可以解決這個問題:
(1)編碼器-解碼器結構,編碼器與解碼器之間通常存在跨越連接(shortcut connections)。U-Net是這類架構中最常用的模型之一(源於: Convolutional Networks for Biomedical Image Segmentation )。
(2)使用帶孔卷積(dilated/atrous convolutions),從而除去池化層。
條件隨機場(CRF)通常用於後處理來進一步改善分割效果。CRF是一種基於底層圖像的像素強度進行的平滑分割的圖模型,原理是相似強度的像素更可能標記為同一類別。
主要貢獻:
1. 為語義分割引入了端到端的全卷積網路。
2. 利用ImageNet的預訓練網路做語義分割。
3. 使用反卷積層(取代線性插值)進行上采樣。
4. 引入少量跳躍連接改善上采樣粗糙的像素定位。
主要貢獻:
使用編碼-解碼架構。並且將池化結果應用到解碼的過程,使用的是Pooling indices(記錄位置信息)而不是簡單地復制特徵。其實沒有跳躍連接,更節省內存。
U-Net的結構更規整,是FCN的延伸,通過將編碼器的每層結果拼接到解碼器中得到更好的結果。
移去了VGG網路的最後兩層池化層,並且後續的卷積層都採用帶孔卷積。還訓練了一個模塊,輸入卷積結果,級聯了不同孔大小的帶孔卷積層。
主要貢獻:
1. 通過帶孔卷積提取和聚合多尺度的信息。
2. 提出context mole來聚合多尺度的信息。
主要貢獻:
1. 採用了帶孔卷積。
2. 提出了金字塔形的空洞池化(Atrous Spatial Pyramid Pooling, ASPP)。
3. 採用了全連接的CRF。
由於帶孔卷積需要大量的高解析度特徵圖,對計算和內存的消耗很大,因此無法利用高解析度的精細預測。
該文章採用編碼解碼結構。編碼器是ResNet-101,解碼器是RefineNet模塊,用於連接編碼器中高解析度特徵和先前RefineNet中低解析度的特徵。
每一個RefineNet都有兩個組件,一個組件通過對低解析度特徵的上采樣操作融合不同的解析度特徵,另一個組件利用窗口為5*5且步長為1的池化層來獲取背景信息。這些組件都遵循恆等映射(identity mapping)思想,採用殘差連接設計。
主要貢獻:
1. 精心設計了解碼模塊。
2. 所有模塊遵循殘差連接設計。
金字塔池化模塊通過使用大窗口的池化層來提高感受野。使用帶孔卷積來修改ResNet網路,並增加了金字塔池化模塊。金字塔池化模塊對ResNet輸出的特徵進行不同規模的池化操作,並作上采樣後,拼接起來,最後得到結果。
金字塔池化模塊簡單來說是將DeepLab(不完全一樣)ASPP之前的feature map池化了四種尺度之後,將五種feature map拼接到一起,經過卷積,最後進行預測的過程。
在ResNet的第四個階段之後(即輸入到金字塔池化模塊的階段),在主分支損失之外增加輔助損失(其他論文稱為中間監督)。
主要貢獻:
1. 提出了金字塔池化模塊來聚合圖片上下文信息。
2. 使用附加的輔助損失函數。
理論上更深的ResNet能有很大的感受野,但研究表明實際上網路更適合收集較小區域(有效感受野)內的信息,因此使用大核來擴大感受野。但是核越大,計算量越大,因此將 k x k 的卷積近似轉換為 1 x k + k x 1 和 k x 1 + 1 x k 卷積的和。本文稱為GCN。
編碼器使用ResNet(無帶孔卷積),解碼器由GCNs和反卷積構成。此外還用到了邊界精調(Boundary Refinement, BR)的簡單殘差塊。
主要貢獻:提出具有大卷積核的編碼-解碼架構。
主要貢獻:
1. 改進ASPP。將不同孔率的帶孔卷積的結果拼接起來(DeepLab v2使用的是求和),並使用了BN。
2. 串列部署ASPP的模塊。直接對中間的特徵圖進行帶孔卷積(Dilated Convolutions(2015) 是在最後做)。
⑦ 用於語義分割的分層多尺度注意力
https://arxiv.org/abs/2005.10821
https://github.com/NVIDIA/semantic-segmentation
1.5k星
21 May 2020
最近開源了: https://paperswithcode.com/paper/hierarchical-multi-scale-attention-for#code
摘要: 多尺度推理常用於改善語義分割結果。將圖像縮放到多個不同尺度,再輸入給同一個網路,再將結果取平均或最大池化。本文提出一個基於注意力的方法來組合多尺度預測。我們表明,某些尺度下的預測更能處理特定的故障情況,而網路學會了在這種特定情況下更傾向於這些尺度,以便輸出更好的結果。我們的注意力機制是分層的,這使得它的內存效率比其他最近的方法快4倍。這樣除了能夠訓練地更快以外,還能讓我們使用更大的裁剪尺寸訓練,從而使得模型准確度更高。我們在Cityscapes和Mapillary Vistas兩個數據集上驗證我們的方法。對於具有大量弱標注圖像的Cityscapes數據集,我們還利用自動標注改進泛化能力。我們的方法在Cityscapes數據集(85.1 IOU test)和Mapillary Vistas數據集(61.1 IOU val)上都取得最先進水平。
關鍵詞:語義分割、注意力、自動標注
1.引言
語義分割的任務是給圖像中所有像素打上多個類別中的一個的標簽。該任務有個折中,就是某些情況下的預測在低解析度下推理得更好,而另一些情況下的預測在高解析度下推理得更好。在放大的圖像尺寸下,精細的細節,例如物體邊緣或者細長的結構,會推理得更好。同時,縮小的圖像尺寸下,對需要更多的全局上下文信息的大物體會推理得更好,因為網路的感受野可以觀察到更多的必要的上下文信息。我們將後一種問題稱為類別混淆(class confusion)。兩種情況的例子如圖1所示。
多尺度推理是這一問題的常見解決辦法。圖像縮放到多個不同尺度,再輸入給同一個網路,再將結果取平均或最大池化。取平均來組合多個尺度的預測通常可提高結果,但存在將最佳預測和最差預測結合的問題。煮個栗子,對於某像素,最佳預測來自2×尺度,其0.5×尺度的預測要差很多,取平均的話會將這兩者結合起來,得到一個次優的輸出。另一方面,最大池化是選擇該像素在多個尺度預測中的一個,而最優結果可能是多個尺度預測的加權組合。
為了解決這個問題,我們提出一種使用注意力機制來將某像素的多個尺度預測結合在一起的辦法,類似於Chen[1]。我們提出一種層次化的注意力機制,學習預測相鄰尺度之間的關系權重,由於它是層次化的,所以我們只需要增加一個額外的尺度的訓練pipeline,而其它的方法,例如[1],則需要在訓練階段顯示地增加每一個額外的推理尺度。例如,當多尺度推理為{0.5,1.0,2.0}時,其它的注意力方法要求網路在所有這些尺度上訓練,導致額外的 倍的訓練成本。我們的方法只需要再增加0.5×尺度的訓練,導致增加 倍的訓練成本。此外,我們提出的層次化機制還可使推理時具有選擇額外的尺度的靈活性,而以往的方法在推理的時候只能使用訓練時候的尺度。為了在Cityscapes上取得最先進水平,我們還使用了一種對粗標注圖像的自動標注策略,以增加數據集中的方差,以提高泛化能力。我們的自標注方法是受一些最近的工作的啟發,包括[2,3,4]。和典型的軟標簽不同,我們使用硬標注,這樣標簽存儲內存就更小,可以降低磁碟IO成本,提高訓練速度。
1.1 貢獻
一種高效地層次化注意力機制,使網路可以學習如何最好地組合多個尺度的推理,能解決類別混淆和細節的問題。
一種基於硬-閾值的自動標注策略,利用未標記圖像來提升IOU。
在Cityscapes數據集(85.1 IOU test)和Mapillary Vistas數據集(61.1 IOU val)上取得最先進水平。
2 相關工作
多尺度上下文 最先進的語義分割網路使用低輸出步長的主幹網路,這可以更好地分割細節,但是感受野也較小。小的感受野會導致網路難以預測大物體。金字塔池化可通過組合多個尺度的上下文來解決感受野較小的問題。PSPNet[5]使用一個空間金字塔池化模塊,使用主幹網路的最後一層的特徵,用一些列卷積和池化來組合多個尺度的特徵。DeepLab[6]使用Atrous Spatial Pyramid Pooling(ASPP),用不同擴張率的擴張卷積,以建立比PSPNet更加稠密的特徵。最近ZigZagNet[7]和ACNet[8]使用中間層特徵,而不僅僅是最後層特徵,來創建多尺度上下文。
關繫上下文 實際上金字塔池化關注的是固定的方形上下文區域,因為池化和擴張通常都是對稱的。此外這些方法是固定的,不是可學習的。關繫上下文通過關注像素之間的關系來構建上下文,而不是固定的方向區域。關繫上下文的可學習特性使得上下文的構建可基於圖像的各個分區。該方法能夠對非正方形的物體區域構建更合適的上下文,例如長火車和細高的燈柱。OCRNet[9]、DANET[10]、CFNet[11]、OCNet[12]和其他相關工作[13,14,15,16,17,18,19,20]利用這些關系來構建更好的上下文。
多尺度推理 一些關繫上下文和多尺度上下文方法都使用了多尺度推理來達到最好的結果,例如[21,22,23,9]。多尺度推理有兩種常見方法:取平均和最大池化,取平均要更常見些。然而,取平均對不同尺度的輸出是等權重的,這樣的結果可能是次優的。為了解決這個問題,[1,24]使用注意力組合多個尺度。[1]使用網路的最後層特徵來訓練一個建模各個尺度間關系的注意力頭。[24]組合不同層的特徵來構建更好的上下文信息。然而,這兩種方法有共同的確定,網路和注意力頭是用一組固定尺度訓練的,推理時只能使用這些尺度,否則網路要重新訓練。我們提出一種層次化的注意力機制,它對推理時用多少個尺度是無關的。我們方法不僅比取平均的性能更好,而且,更進一步地,我們的方法可用於可視化、診斷不同尺度分別對不同物體類別和場景的重要性。此外,我們的方法和其它的注意力方法和金字塔池化方法是正交的,例如[22,25,26,9,27,10,28],因為這些方法使用單個尺度,並使用注意力來更好地組合不同層級的特徵,以生成高解析度的預測。
自動標注 很多在Cityscapes上的語義分割工作都使用了大約2w張的粗標注圖像以達到最先進水平[12,29]。然而,由於標簽是粗標注的,圖像中相當一部分是未標記的。為了在Cityscapes上取得最先進水平,我們提出一種自動標注策略,我們的靈感是來自於NoisyStudent[2],以及其他語義分割半監督自訓練方法[30,31,32,33,34],以及其他基於偽標注方法[4,35,36,3]。我們為Cityscapes的粗標注圖像生成稠密標注。我們生成的標簽只有很少的未標注區域,這樣我們就能夠充分利用粗標注數據的全部圖像內容。
雖然大多數圖像分類的自標注方法使用軟標簽,但為了提高存儲效率和訓練速度,我們用的是被閾值過的硬標簽。軟標簽在語義分割中是指,教師網路為圖像的每個像素上都提供分別屬於每個類別的概率。而硬標簽是用閾值從各個類別的概率中選出最大的。類似於[37,4],我們為Cityscapes粗標注圖像生成稠密的硬標簽。圖4是一些例子。不同於NoisyStudent[2],我們對生成的偽標簽不做迭代的調精。相反,我們使用默認的粗標注數據和精細標注數據,對教師模型進行一次完整的訓練。在聯合訓練之後,對粗標注圖像進行自動標注,在將這些自動標注數據替換我們教師模型用的粗標注數據,以獲得最好的測試結果。使用我們的偽硬標注和層次化注意力,我們能獲得在Cityscapes上的最先進水平。
3.層次多尺度注意力
我們的注意機制在概念上與[1](Attention to scale)非常相似,在[1]中,在每個尺度下都學習,得到dense mask,並通過在對mask執行像素級乘法,然後在不同尺度之間進行像素級求和,來組合這些多尺度預測,以獲得最終結果,見圖2。我們稱陳的方法為 顯式方法 。使用我們的 分層方法 ,我們學習相鄰尺度之間的相對注意mask,而不是學習每個尺度的所有注意mask。在訓練網路時,我們只使用相鄰的尺度對(adjacent scale pairs)進行訓練。如圖2所示,給定一組來自單個(較低)尺度的圖像特徵,我們預測兩個圖像尺度之間的像素級的密集的相對注意力權重(dense pixel-wise the relative attention)。實際上,為了獲得一對縮放圖像,我們獲取一個輸入圖像並將其縮小2倍,這樣我們就剩下1倍縮放輸入和0.5倍縮放輸入,盡管可以選擇任何縮小比率。需要注意的是,網路輸入本身是原始訓練圖像的重新縮放版本(re-scaled version),因為我們在訓練時使用圖像縮放增強。這允許網路學習預測一個范圍內(a range of)的圖像尺度的相對注意力。在進行推理時,我們可以分層地應用所學的注意力,將N個預測尺度組合在一起,形成一個計算鏈,如圖所示,並由下面的等式描述。我們優先考慮較低的尺度,並努力向更高的尺度發展,我們的想法是,它們有更多的全局上下文,可以選擇哪些區域是需要通過更高尺度的預測來refine的。
更正式地,在訓練期間,給定的輸入圖像縮放因子 ,r=0.5表示下采樣兩倍,r=2.0表示上采樣2倍,r=1表示不進行操作。對於我們的訓練,我們選擇r=0.5和r=1.0。然後,r=1和r=0.5的兩個圖像通過一個共同的網路塊(the shared network trunk),該網路塊輸出各個尺度下的semantic logits 和注意力掩碼 ,該掩碼 用來組合不同尺度下的logits 。因此,如果訓練和推理都使用2個尺度的話,令 表示雙線性上采樣,∗ 和+分別為逐像素乘法和加法,公式可形式化為:
使用我們提出的方法有兩個優勢:
• 在推理時,我們現在可以靈活地選擇不同的尺度,因此,通過我們提出的分層式注意力機制鏈,對於在0.5x和1.0x尺度下訓練的模型,我們在推理時可以添加新的尺度例如如0.25x或2.0x。這不同於先前提出的方法,先前的方法訓練時使用哪些尺度,在推理時就得用哪些尺度。
• 與顯式方法相比,這種層次結構使我們能夠提高訓練效率。使用顯式方法,如果使用0.5、1.0、2.0尺度,相對於單量表訓練,訓練成本為0.5^2+1.0^2+2.0^2=5.25。採用我們的分層方法,訓練成本僅為0.5^2+1.02=1.25。
3.1 架構
主幹: 對於本節中的消融研究,我們使用ResNet-50[38](配置為輸出步幅8)作為我們網路的trunk。為了獲得最先進的結果,我們使用了更大、功能更強大的主幹HRNet OCR[9]。
語義頭: 語義預測由一個專用的全卷積頭執行,該卷積頭包括(3x3 conv)→ (BN)→ (ReLU)→ (3x3卷積)→ (BN)→ (ReLU)→ (1x1 conv)。最後的卷積輸出num_classes個通道。
注意頭:
注意力預測是使用一個單獨的頭部來完成的,該頭部在結構上與語義頭部相同,除了最終的卷積輸出,它輸出一個通道。當使用ResNet-50作為主幹時,語義頭和注意頭會收到ResNet-50最後階段的特徵。當使用HRNet OCR時,語義和注意頭會收到OCR塊中的特徵。使用HRNet OCR的時候,還存在一個 輔助語義頭 ,在OCR之前直接從HRNet主幹獲取其特徵。該頭部包括(1x1 conv)→ (BN)→ (ReLU)→ (1x1 conv)。在將注意力應用於語義logits之後,使用雙線性上采樣將預測上采樣到目標圖像大小。
3.2 分析
為了評估我們的多尺度注意力方法的有效性,我們使用DeepLab V3+架構和ResNet50主幹訓練網路。在表1中,我們表明,與基線平均法(49.4)或顯式法(51.4)相比,我們的分層注意法具有更好的准確性(51.6)。我們還觀察到,當添加0.25倍尺度時,我們的方法的結果明顯更好。與顯式方法不同,當使用額外的0.25倍尺度時,我們的方法不需要重新訓練網路。這種 推理時的靈活性 是我們方法的一個主要優點。我們可以訓練一次,但可以靈活地用不同的尺度進行評估。
此外,我們還觀察到,對於基線平均多尺度方法,簡單地添加0.25倍尺度對精度有害,因為它會導致IOU減少0.7,而對於我們的方法,添加額外的0.25倍尺度會將精度再提高0.6個IOU。使用基線平均法,0.25倍的預測是如此粗糙,以至於當與到其他尺度平均時,我們觀察到諸如車道標記、人洞、電話亭、路燈、交通燈和交通標志(前後)、自行車架等類別下降1.5 IOU。預測的粗糙度損害了邊緣和細節。然而,在我們提出的注意方法中,添加0.25倍的比例將我們的結果提高了0.6,因為我們的網路能夠以最合適的方式應用0.25倍的預測,避免在邊緣使用它。這方面的例子可以在圖3中觀察到,其中對於左側圖像中的fine posts,0.5x預測很少關注posts,但2.0x尺度中存在非常強的注意信號。相反,對於右側非常大的區域,注意機制學習到最大程度地利用較低的尺度(0.5倍),很少利用錯誤的2.0倍預測。
3.2.1單尺度與雙尺度特徵
雖然我們確定的架構只從兩個相鄰圖像尺度中較低的一個尺度的特徵輸入給注意力頭(見圖2),但我們也嘗試用兩個相鄰尺度的特徵訓練注意力頭。我們沒有觀察到准確度上的顯著差異,所以我們選擇了單個尺度的特徵。
4.Cityscapes上的自動標注
受最近的在圖像分類上任務上的自動標注工作[2,39]的啟發,我們在Cityscapes數據集上使用自動標注來提升有效數據集的大小和標注的質量。Cityscapes有2w張粗標注圖像和3500張精細標注圖像。粗標注圖像的標注非常一般,有大量像素是無標簽的,如圖4所示。通過我們的自動標注方法,我們可以提高標簽質量,這反過來又有助於提升模型的IOU。
圖像分類中常用的是軟標簽,或者稱為連續標簽。在語義分割中,軟標簽是為每一像素標上所屬各個類別的概率,這樣很占磁碟空間,訓練速度會很慢,標簽會佔大約3.2TB的磁碟:20000×2048×1024×19×4B=3.2TB。訓練期間讀取這些標簽會大大降低訓練速度。
因此,我們用硬標簽,即對每個像素,選擇教師網路輸出的最大類別概率。我們對教師網路輸出的概率標簽進行閾值化。超過閾值的概率視為標簽,否則該像素被視為忽略類。實踐中,我們使用0.9的閾值。
5 結果
5.1 實施協議
在本節中,我們將詳細描述我們的實現協議。
訓練詳情
我們的模型在Nvidia DGX伺服器上使用Pyrotch[40]進行訓練,每個節點包含8個GPU,具有混合精度、分布式數據並行訓練和同步批處理規范化。我們的優化器使用隨機梯度下降(SGD),每GPU的批量大小為1,動量為0.9,重量衰減為5e−4.在訓練中。我們採用「多項式」學習率策略[41]。在默認設置下,我們使用RMI[42]作為主要損失函數,並使用交叉熵作為輔助損失函數。對於城市景觀,我們使用2.0的多指數,初始學習率為0.01,並在2個DGX節點上訓練175個歷元。對於Mapillary,我們使用1.0的多邊形指數、0.02的初始學習率,並在4個DGX節點上訓練200個歷元。如[29]中所述,我們在數據載入器中使用類均勻采樣,從每個類中平均采樣,這有助於在數據分布不均勻時改進結果。
數據增強:
在訓練過程中,我們對輸入圖像採用高斯模糊、顏色增強、隨機水平翻轉和隨機縮放(0.5x-2.0x)來增強數據集。城市景觀的裁剪尺寸為2048x1024,Mapillary Vistas為1856x1024。
5.1.1城市景觀結果
Cityscapes[43]是一個大型數據集,在5000幅高解析度圖像上標記了19個語義類。對於城市景觀,我們使用HRNet OCR作為主幹,並提出了多尺度注意方法。我們使用RMI作為主分割頭的損失,但對於輔助分割頭,我們使用交叉熵,因為我們發現使用RMI損失會導致深入訓練的訓練精度降低。我們的最佳效果是首先在較大的Mapillary Vistas數據集上進行預訓練,然後在城市景觀上進行訓練。對於Mapillary預訓練任務,我們不會使用注意力機制進行訓練。除了自動標記的粗略圖像外,我們還使用train+val圖像實現了最先進的城市景觀配方。我們從train+val集合中用50%的概率采樣,另外我們從自動標記的圖像池中采樣。在推斷時,我們使用scales={0.5,1.0,2.0}和圖像翻轉。
我們對城市景觀驗證集進行了消融研究,如表2所示。多尺度注意力產生的IOU比基線HRNet OCR架構平均池高0.5%。自動標簽比基線提高了1.1%的IOU。將這兩種技術結合在一起可獲得1.4%IOU的總增益。
最後,在表3中,我們展示了我們的方法與Cityscapes測試集中其他性能最好的方法相比的結果。我們的方法得分為85.1,這是所有方法中報告的最佳城市景觀測試分數,比之前的最佳分數高0.6 IOU。此外,我們的方法在除三個類別外的所有類別中都擁有最高的每班分數。圖5顯示了一些結果。
5.1.2 Mapillary Vistas遠景的結果
Mapillary Vistas[45]是一個大型數據集,包含25000個高解析度圖像,注釋為66個對象類別。對於Mapillary,我們使用HRNet OCR作為主幹,並提出了多尺度注意方法。因為Mapillary Vistas圖像可以具有非常高且不同的解析度,所以我們調整圖像的大小,使長邊為2177,如[23]中所述。我們使用在ImageNet分類上訓練的HRNet的權重初始化模型的HRNet部分。由於Mapillary中66個類需要更大的內存,我們將裁剪大小減少到1856 x 1024。在表4中,我們展示了我們的方法在Mapillary驗證集上的結果。我們單個模型達到61.1,比下一個最接近的方法Panopoptic Deeplab[23]高2.4,後者使用模型集成實現58.7。
6 結論
在這項工作中,我們提出了一種分層的多尺度注意語義分割方法。我們的方法在提高分割精度的同時,也提高了內存和計算效率,這兩者都是實際問題。訓練效率限制了研究的速度,而GPU內存效率限制了裁剪網路的訓練尺度,這也限制了網路的准確性。我們的經驗表明,使用我們提出的方法可以持續改善城市景觀和Mapillary Vistas。
致謝:我們要感謝Sanja Fidler、Kevin Shih、Tommi Koivisto和Timo Roman的有益討論。