本文先對FCN的會議論文進行了粗略的翻譯,使讀者能夠對論文的結構有個大概的了解(包括解決的問題是什么,提出了哪些方案,得到了什么結果)。然后,給出了幾篇博文的連接,對文中未鋪開解釋的或不易理解的內容作了詳盡的說明。最后給出了FCN代碼的詳解(待更新)。
Fully Convolutional Networks for Semantic Segmentation
用於語義分割的全卷積網絡
摘要
卷積網絡是可以產生具有層次結構的特征的強大的視覺模型。我們展示了只通過由端到端,像素像素訓練的卷積網絡進行語義分割,就超過了當前最新的技術水平。我們的主要見解是構建“完全卷積”網絡,該網絡接受任意大小的輸入並通過有效的推理和學習產生相應大小的輸出。我們定義並詳細說明完全卷積網絡的空間,解釋它們在空間密集預測任務中的應用,並闡述與先前模型的聯系。我們將現代分類網絡(AlexNet [19],VGG網絡[31]和GoogLeNet [32])調整為完全卷積網絡,並通過微調[4]將其學習的表示轉移到分割任務。然后,我們定義了一種新穎的架構,它將來自深層粗糙層的語義信息與來自淺層精細層的外觀信息相結合,以生成准確而詳細的分割。我們的完全卷積網絡實現了對PASCAL VOC(相對2012年62.2%的平均IU改進率為20%),NYUDv2和SIFT Flow的最先進分割,而典型圖像的推斷時間不到五分之一秒。
1. 緒論
卷積網絡正在推動識別的進步。Convnet不僅改善了整體圖像分類[19,31,32],而且還在結構化輸出的本地任務上取得了進展。這些進展包括邊界框對象檢測[29,12,17],部分和關鍵點預測[39,24]以及局部對應[24,9]。從粗略推斷到精細推理,很自然下一步是對每個像素進行預測。先前的方法已經使用了用於語義分割的卷積網絡[27,2,8,28,16,14,11],其中每個像素用其封閉對象或區域的類來標記,但是具有該工作所解決的缺點。我們證明了一個沒有進一步的機制的由端對端,像素到像素訓練的完全卷積網絡(FCN)超過了現有的最先進的語義分割技術。據我們所知,這是第一個從(2)有監督的預訓練,端對端地訓練FCN(1)用於像素預測的工作。現有網絡的完全卷積版本預測來自任意大小輸入的密集輸出。學習和推理都是通過密集的前饋計算和反向傳播在整個圖像上進行的。網內上采樣層通過子采樣池化來實現網絡中的像素預測和學習。這種方法無論是漸近還是絕對都是有效的,並且排除了對其他工作中的復雜性的需要。Patchwise訓練很常見[27,2,8,28,11],但缺乏完全卷積訓練的效率。我們的方法沒有利用預處理和后處理的復雜性,包括超像素[8,16],建議[16,14],或隨機字段或局部分類器的事后細化[8,16]。我們的模型通過將分類網絡重新解釋為完全卷積並從其學習的表示中進行微調,將最近在分類任務[19,31,32]中取得的成果轉移到密集預測任務。相比之下,以前的工作是在沒有經過有監督的預訓練的情況下應用了小型網絡。語義分割面臨語義和位置之間的內在張力:全局信息解決是什么的問題,而本地信息解決在何處的問題。深度特征層次結構共同編碼了 局部到全局金字塔中的位置和語義信息。我們在4.2節定義了一個新穎的“skip”架構,將深的,粗略的語義信息和淺的,精細的外觀信息相結合(見圖3)。在下一節中,我們將回顧有關深度分類網絡,FCN以及使用convnet進行語義分割的最新方法的相關工作。接下來的章節介紹了FCN設計和密集預測權衡,介紹了我們的網絡上采樣和多層組合的架構,並描述了我們的實驗框架。最后,我們展示了在PASCAL VOC 2011-2,NYUDv2和SIFT Flow上取得的最新成果。
2. 相關工作
我們的方法借鑒了最近成功的用於圖像分類深度網絡[19,31,32]和遷移學習[4,38]。遷移首先在各種視覺識別任務[4,38],然后是檢測,以及混合提議分類器模型中的實例和語義分割任務[12,16,14]上進行了演示。我們現在重新構建和微調分類網絡,以直接,密集地預測語義分割。我們繪制了FCN的空間,並在此框架中定位了歷史和近期的先前模型。
全卷積網絡 據我們所知,Matan等人首先提出了將一個卷積網絡擴展到任意大小的輸入的想法。 [25],它擴展了classicLeNet [21]以識別數字串。因為他們的網絡僅限於一維輸入字符串,Matan等人。 使用Viterbi解碼來獲得它們的輸出。Wolf和Platt [37]將信號輸出擴展為郵政地址塊四個角的二維檢測分數圖。這兩個歷史工作都通過全卷積進行了推理和學習,以便進行檢測。 寧等人 [27通過]完全卷積推理,定義了一個用於秀麗隱桿線蟲組織的粗多類分割的預測網。
在當前的多層網絡時代,也充分利用了卷積計算。Sermanet等人的滑動窗口檢測 [29],Pinheiro和Collobert [28]的語義分割,以及Eigen等人的圖像恢復 [5]都做了全卷積推理。全卷積訓練很少見,但Tompson等人有效地使用了它 [35]來學習一個端到端的部分探測器和姿勢估計的空間模型,但是他們沒有對這個方法進行解釋或分析。
或者,He等人 [17]丟棄分類網的非卷積部分以制作特征提取器。它們結合了提議和空間金字塔池,以產生用於分類的本地化固定長度特征。雖然快速有效,但這種混合模式無法端到端地學習。
用卷積網絡進行密集預測 最近的一些研究已經將卷積網絡應用於密集預測問題,包括Ning等[27],Farabet等[8],Pinheiro和Collobert [28]等人的語義分割 ;Ciresan等人的電子顯微鏡邊界預測, [2]和Ganin和Lempitsky的混合神經網絡/最近鄰模型的自然圖像邊界預測[11];和Eigen等人的圖像恢復和深度估計 [5,6]。這些方法的共同要素包括:
- 限制容量和感受野的小模型;
- patchwise訓練[27,2,8,28,11];
- 有超像素投影,隨機場正則化,濾波或局部分類[8,2,11]的后處理過程;
- 對於密集輸出存在由過擬合 [29]引入的輸入移位和輸出交織問題[28,11];
- 多尺度金字塔處理[8,28,11];
- 飽和tanh非線性[8,5,28];
- 集成[2,11]
而我們的方法沒有這種機制。然而,我們從FCN的角度研究了補丁訓練3.4節和“移位 - 縫合”密集輸出3.2節。我們還討論了網內上采樣3.3節,其中Eigen等人的全連接預測 [6]是一個特例。
與現有方法不同,我們采用深度分類架構,使用圖像分類作為有監督的預訓練,並通過全卷積微調,從整個圖像輸入和整個圖像的Ground Truths中簡單有效地學習。
Hariharan等人 [16]和Gupta等人 [14]同樣使深度分類網適應語義分割,但只在混合提議 - 分類器模型中這樣做。這些方法通過對邊界框和/或區域提議進行采樣來微調R-CNN系統[12],以進行檢測,語義分割和實例分割。這兩種方法都不是端到端學習的。
他們分別在PASCAL VOC分割和NYUDv2分割方面取得了最新成果,因此我們直接在第5節中將我們的獨立端到端FCN與他們的語義分割結果進行比較。
3. 全卷積網絡
卷積網絡中的每個數據層是大小為h×w×d的三維陣列,其中h和w是空間維度,d是特征或信道維度。第一層是有着像素大小為h×w,以及d個顏色通道的圖像,較高層中的位置對應於它們路徑連接的圖像中的位置,這些位置稱為其感知域。
Convnet建立在平移不變性的基礎之上。它們的基本組件(卷積,池化和激活函數)在局部輸入區域上運行,並且僅依賴於相對空間坐標。用xij表示某一層位置(x,j)處的數據向量,yij是下一層的數據向量,則通過下式計算yij:
其中k稱為內核大小,s是步幅或子采樣因子,fks決定層的類型:用於卷積或平均池化的矩陣乘法,用於最大池化的空間最大值,或用於激活函數的元素非線性,等等用於其他類型的層。
這種函數形式在組合下維護,內核大小和步幅遵守轉換規則:
雖然一般的深度網絡計算一般的非線性函數,但只有這種形式的層的網絡計算非線性濾波器,我們稱之為深度濾波器或完全卷積網絡。FCN自然地對任何大小的輸入進行操作,並產生相應(可能重新采樣的)空間維度的輸出。
由FCN組成的實值損失函數定義了任務。如果損失函數是最終圖層的空間維度的總和,它的梯度將是每個空間分量的梯度之和。因此,對整個圖像計算的l的隨機梯度下降將與將所有最終層感受域視為小批量的l'上的隨機梯度下降相同。
當這些感受野顯着重疊時,前饋計算和反向傳播在整個圖像上逐層計算時效率更高,而不是單獨patch-by-patch地計算。接下來我們將解釋如何將分類網轉換為產生粗略輸出映射的完全卷積網。對於逐像素預測,我們需要將這些粗略輸出連接回像素。3.2節描述了OverFeat [29]為此目的引入的一個技巧。我們通過將其重新解釋為等效的網絡修改來深入了解這一技巧。作為一種高效,有效的替代方案,我們在第3.3節中引入了用於上采樣的反卷積層。在3.4節中,我們考慮通過patchwise采樣進行訓練,並在4.3節中證明我們的整個圖像訓練更快,同樣有效。
3.1 調整分類器以進行密集預測
典型的識別網絡,包括LeNet [21],AlexNet [19]及其更深層次的后繼[31,32],表面上采用固定大小的輸入並產生非空間輸出。這些網絡的全連接層具有固定的尺寸並且丟棄了空間坐標。然而,這些完全連接的層也可以被視為具有覆蓋其整個輸入區域的內核的卷積。這樣做會將它們轉換為完全卷積網絡,可以接收任何大小的輸入並輸出分類圖。這種轉換如圖2所示。(相比之下,非卷積網,例如Le等人[20]的網絡,缺乏這種能力。)此外,雖然生成的映射等同於原始網絡對特定輸入patches的評估,但計算在這些patches的重疊區域上高度攤銷。例如,雖然AlexNet需要1.2毫秒(在典型的GPU上)來產生227×227圖像的分類分數,但完全卷積版本需要22毫秒才能從500×500圖像產生10×10網格輸出, 比現在的方法快5倍以上。這些卷積模型的空間輸出圖使它們成為語義分割等密集問題的自然選擇。由於每個輸出單元都有可用的Ground Truth,前向和后向通道都很簡單,並且都利用了卷積的固有計算效率(和積極優化)。AlexNet示例的相應后向時間對於單個圖像是2.4ms,對於完全卷積10×10輸出映射是37ms,導致類似於前向傳遞的加速。這種密集的反向傳播如圖1所示。
雖然我們將分類網絡重新解釋為完全卷積產生任何大小的輸入的輸出映射,但輸出維度通常通過二次取樣來減少。分類網絡子采樣以保持過濾器小並且計算要求合理。這會粗略化這些網絡的完全卷積版本的輸出,將其從輸入的大小減去等於輸出單元的感受域的像素跨度的因子
3.2 Shift-and-stitch 是過濾稀疏
輸入移位和輸出交錯是一種技巧,可以在沒有插值的情況下從粗輸出產生密集預測,由OverFeat [29]引入。如果輸出被 f 因子下采樣,輸入向右移x個像素,向下移y個像素(左上填充),對於每個取值為{0,...,f-1}×{0,...,f-1}的(x,y)的值,將這f2個輸入全部通過卷積網絡,得到的輸出交錯排列,使得預測與他們感受野的中心像素相對應(詳解見博文https://www.jianshu.com/p/e534e2be5d7d)。
僅更改一個convnet的過濾器和層步幅可以產生與此移位和拼接技巧相同的輸出。考慮具有輸入步幅s的層(卷積或池化),以及具有濾波器權重fij的下一層卷積層(消除特征維度,這里不相關)。將下層的輸入步幅設置為1可將其輸出上采樣s倍,就像shift-and-stitch一樣。但是,使用上采樣輸出對原始濾波器進行卷積不會產生與技巧相同的結果,因為原始濾波器僅看到其(現在上采樣)輸入的減少部分。為了重現這個技巧,通過將其放大為稀疏過濾器:
(i和j從零開始)。再現該技巧的全網絡輸出包括逐層重復該濾波器放大,直到去除所有子采樣。
簡單地減少網絡中的子采樣是一種權衡:過濾器看到更精細的信息,但是具有更小的感知域並且需要更長的時間來計算。我們已經看到移位和拼接技巧是另一種權衡:在不降低濾波器的感受野大小的情況下使輸出變得更密集,但禁止過濾器以比其原始設計更精細的規模訪問信息。
雖然我們已經使用移位和拼接進行了初步實驗,但我們並未在模型中使用它。我們發現通過上采樣學習,如下一節所述,更加有效和高效,特別是當與稍后描述的跳過層融合結合時。
3.3 上采樣是向后步進的卷積
將粗略輸出連接到密集像素的另一種方法是插值。例如,簡單的雙線性插值通過線性映射計算來自最近的四個輸入的每個輸出yij,該線性映射僅取決於輸入和輸出單元的相對位置。在某種意義上,使用因子f的上采樣等同於有着分數輸入步幅 1 / f 的卷積。只要f是整數,因此上采樣的自然方式是向后卷積(有時稱為反卷積),其輸出步幅為f。這樣的操作很難實現,因為它簡單地反轉了卷積的前向和后向通道。因此,上采樣通過在網內對像素損失進行反向傳播來端對端的學習。
注意,這種層中的反卷積濾波器不需要固定(例如,雙線性上采樣),而是可以學習的。一堆反卷積層和激活函數甚至可以學習非線性上采樣。在我們的實驗中,我們發現網內上采樣對於學習密集預測是快速有效的。我們最好的分割體系結構使用這些層來學習在4.2節中進行精確預測的上采樣。
3.4Patchwise訓練是損失抽樣
在隨機優化中,梯度計算由訓練分布驅動的。patchwise訓練和完全卷積訓練都可以產生任何分布,盡管它們的相對計算效率取決於重疊和mini-batch大小。整個圖像完全卷積訓練與patchwise訓練相同,其中每個batch包含低於圖像(或圖像集合)損失的單位的所有感受野。雖然這比patches的均勻采樣更有效,但它減少了可能的batches數量。然而一幅圖片中patches的隨機選擇可以簡單地復現。將損失限制為其空間項的隨機采樣子集(或者,等效地在輸出和損失之間應用DropConnect掩碼[36])從梯度計算中排除patches。
如果保留的patches仍然具有顯着重疊,則完全卷積計算仍將加速訓練。如果梯度在多個后向傳遞上累積,則batches可以包括來自多個圖像的patches。patchwise訓練中的采樣可以糾正類不平衡[27,8,2]並減輕密集patches的空間相關性[28,16]。在完全卷積訓練中,也可以通過加權損失來實現類平衡,並且可以使用損失采樣來解決空間相關性。
我們在第4.3節中使用采樣來探索訓練,並且沒有發現它為密集預測產生更快或更好的收斂。 整體圖像培訓是有效和高效的。
4. 分割架構
我們將ILSVRC的分類器使用到FCN中,並通過補充網內上采樣和像素損失來進行密集預測。我們通過微調來訓練分割。 接下來,我們構建了一個新穎的skip架構,它結合了粗略的語義信息和局部的外觀信息來優化預測。在本次調研中,我們在PASCAL VOC 2011分割挑戰上進行了訓練和驗證[7]。我們使用每像素多項logistic損失進行訓練,並使用聯合上的平均像素交點的標准度量進行驗證,其中包括所有類的平均值,包括背景。訓練忽略了在ground truth中被掩蓋掉(如模糊或困難)的像素。
4.1 從分類器到密集的FCN
我們首先將已證實的分類體系結構卷積化,如第3節所述。我們考量了贏得了ILSVRC12的AlexNet3架構[19],以及VGG網絡[31]和在ILSVRC14中表現出色的GoogLeNet4 [32]。我們選擇了VGG 16層網絡,我們發現它在這項任務中的效果與19層網絡相當。對於GoogLeNet,我們僅使用最終損失層,並通過丟棄最終平均池層來提高性能。我們通過丟棄最終的分類器層來截取每個網絡,並將所有完全連接的層轉換為卷積層。我們附加一個帶有通道尺寸21的1×1卷積來預測每個粗略輸出位置的每個PASCAL類(包括背景)的分數,然后是反卷積層,以粗略地將粗略輸出上采樣到像素密集輸出,如上在第3.3節中所述。表1比較了初步驗證結果以及每個網的基本特征。我們報告以固定學習率(至少175個epochs)收斂后獲得的最佳結果。
從分類到分割的微調為每個網絡提供了合理的預測。即使是最糟糕的模型也能達到最先進性能的75%。分割匹配的VGG網絡(FCN-VGG16)已經看起來是最先進的,在val上為56.0平均IU,而在測試中為52.6 [16]。對額外數據的訓練能將val的子集上的平均IU提高到59.4。訓練詳情見第4.3節。
盡管分類准確性相似,但我們對GoogLeNet的實現沒有達到此分割結果。
4.2. 結合是什么和在何處
我們為分割定義了一個新的完全卷積網絡(FCN),它結合了特征層次結構的各層,並細化了輸出的空間精度。 見圖3。
雖然完全卷積分類器可以按照4.1中的說明進行細調,甚至在標准度量上得分很高,但它們的輸出卻不盡如人意(見圖4)。最終預測層的32像素步幅限制了上采樣輸出中的細節尺度。
我們通過添加鏈接來解決這個問題,這些鏈接將最終預測層與有着更精細步幅的較低層相結合。這會將線拓撲變為DAG,其邊緣從較低層跳到較高層(圖3)。因為他們看到的像素更少,更精細的尺度預測應該需要更少的層,因此從較淺的網絡輸出中制作它們是有意義的。精細圖層和粗糙圖層的組合使模型可以進行符合全局結構的局部預測。類似於Florack等人的多尺度local jet。 [10],我們將非線性局部特征層次稱為deep jet。我們首先通過從16像素步幅層預測將輸出步幅分成兩半。我們在pool4的頂部添加1×1卷積層以產生附加的類預測。我們將此輸出與在步幅32處在conv7(卷積化fc7)之上計算的預測融合,方法是添加2x上采樣層並對兩個預測求和。 (見圖3)。我們將2x上采樣初始化為雙線性插值,但允許按照第3.3節中的描述學習參數。最后,將步幅16預測上采樣回到圖像。我們稱之為FCN-16網。 FCN-16s是端到端學習的,用最后一個較粗網絡的參數初始化,我們現在稱之為FCN -32s。作用於pool4的新參數是零初始化的,因此網絡以未修改的預測開始。學習率以100的倍率下降。
學習這個skip網絡可以將驗證集上的性能提高3.0平均IU到62.4。圖4顯示了輸出精細結構的改進。我們將這種融合僅與來自pool4層的學習(導致性能差)進行了比較,並且簡單地降低了學習速率而沒有添加額外的鏈接(這導致不顯着的性能改進,而沒有提高輸出的質量)。我們繼續以這種方式將pool3的預測與融合了pool4和conv7的2x上采樣預測相融合,建立網絡FCN-8s。我們獲得了一個小的額外改進,達到62.7平均IU,並且我們的輸出的平滑度和細節略有改善。至此,我們的融合改進已經滿足了收益遞減,無論是在強調大規模正確性的IU度量方面,還是在可見的改進方面,例如,所以在圖4中,我們不會繼續融合更低層。
通過其他方式進行細化 減少池化層的步幅是獲得更精細預測的最直接方法。但是,這樣做對我們基於VGG16的網絡來說是個問題。將pool5層設置為具有步幅1要求我們的卷積化fc6具有14×14的內核大小以便維持其感受野大小。除了計算成本之外,我們還難以學習如此大的過濾器。我們嘗試用較小的過濾器重新構建pool5之上的層,但是沒有成功實現相當的性能;一種可能的解釋是,從上層的ImageNet訓練的權重初始化很重要。獲得更好預測的另一種方法是使用3.2節中描述的shift-and-stitch技巧。在有限的實驗中,我們發現這種方法的改進成本比層融合更差。
4.3. 實驗框架
優化 我們用帶有動量的隨機梯度下降算法(SGD)進行訓練。我們使用的mini-batch大小為20張圖片,對於FCN-AlexNet, FCN-VGG16和FCN-GoogleNet使用由線性搜索得到的固定的學習率,分別為10-3, 10-4和5-5 。我們使用動量為0.9,權重衰減為5-4或2-4,並且將對偏差的學習率增加了一倍,雖然我們發現訓練對這些參數不敏感(但對學習速度敏感)。我們對類評分卷積層進行零初始化,發現隨機初始化,既不會產生更好的性能,也不會產生更快的收斂。Droupout包含在原始分類器網絡中使用的位置。
微調 我們通過整個網絡的反向傳播來微調所有層。如表2所示,單獨微調輸出分類器僅是完全微調性能的70%。考慮到學習基礎分類網所需的時間,從頭開始訓練是不可行的。 (請注意,VGG網絡是分階段訓練的,而我們是從完整的16層版本初始化的。)對於粗FCN-32s版本,單個GPU上的微調需要三天,而每個版本大約需要一天時間才能升級到FCN-16s和FCN-8s版本。
patch sampling 如第3.4節所述,我們的完整圖像訓練可以有效地將每個圖像batches為大型重疊patches的規則網格。相比之下,先前的工作在整個數據集[27,2,8,28,11]上隨機采樣patches,可能導致更高方差的batches,這可能加速收斂[22]。我們通過以前面描述的方式對損失進行空間采樣來研究這種權衡,做出一個獨立的選擇,以一些概率1-p忽略每個最終的層單元。為避免更改有效batch大小,我們同時將每batch圖像數量增加1 / p。請注意,由於卷積的效率,對於足夠大的p值,這種形式的拒絕采樣仍然比patchwise訓練更快(例如,根據3.1節中的數字,至少p> 0.2)。圖5顯示了這種采樣形式對收斂的影響。我們發現,與整個圖像訓練相比,采樣對收斂速度沒有顯着影響,但由於每批需要考慮的圖像數量較多,因此采用的時間要長得多。因此,我們在其他實驗中選擇非抽樣,全圖像訓練。
類別均衡 完全卷積訓練可以通過對損失進行加權或抽樣來平衡類別。雖然我們的標簽是輕度不均衡的(大約3/4是背景),但我們發現不需要類別均衡。
密集預測 通過網內的反卷積層將分數上采樣到輸入維度。最終層反卷積濾波器固定為雙線性插值,而中間上采樣層初始化為雙線性上采樣,然后學習。不使用Shift-andstitch(第3.2節)或過濾器稀疏等效。
數據擴增 我們嘗試通過隨機鏡像和在每個方向上將它們平移到32像素(最粗略的預測)來“抖動”圖像以增加訓練數據。這沒有產生明顯的改善。
更多的訓練數據 我們用於表1的PASCAL VOC 2011分割挑戰訓練集標記了1112個圖像。Hariharan等人 [15]收集了大量8498 PASCAL訓練圖像的標簽,用於訓練以前最先進的系統SDS [16]。該訓練數據將FCNVGG16驗證得分提高3.4點至59.4平均IU。
實現 所有模型都使用Caffe [18]在單個NVIDIA Tesla K40c上進行訓練和測試。模型和代碼將在發布時公開發布。
5. 結果
我們在語義分割和場景解析上測試我們的FCN,探索PASCAL VOC,NYUDv2和SIFT Flow。盡管這些任務在歷史上區分了對象和區域,但我們將它們統一地視為像素預測。我們在每個數據集上評估我們的FCN skip架構,然后將其擴展到NYUDv2的多模態輸入和SIFT Flow的語義和幾何標簽的多任務預測。
度量 我們報告了來自常見語義分割和場景解析評估的四個度量,這些度量是像素精度和區域交集(IU)的變化。設$n_{ij}$為類別為$i$卻被預測為類別$j$的像素的個數。其中有$n_{cl}$個不同的類別。設${t_i} = \sum\nolimits_j {{n_{ij}}} $為類別為$i$的像素的總數。則:
- 像素精度:$\sum\nolimits_i {{n_{ii}}} /\sum\nolimits_i {{t_i}} $
- 平均精度:${1 \over {{n_{cl}}}}\sum\nolimits_i {{n_{ii}}} /{t_i}$
- 平均IU:${1 \over {{n_{cl}}}}\sum\nolimits_i {{n_{ii}}} /({t_i} + \sum\nolimits_j {{n_{ji}} - {n_{ii}})} $
- 頻率加權IU:${(\sum\nolimits_k {{t_k}} )^{ - 1}}\sum\nolimits_i {{t_i}{n_{ii}}} /({t_i} + \sum\nolimits_j {{n_{ji}} - {n_{ii}})} $
PASCAL VOC 表3給出了我們的FCN-8s在PASCAL VOC 2011和2012測試集上的性能,並將其與先前的最新技術SDS [16]和着名的R-CNN [12]進行了比較。我們以相對邊際為20%的平均IU獲得了最佳結果。推理時間減少了114×(僅限卷積,忽略了提議和細化)或286×(整體)。
NYUDv2 [30]是使用Microsoft Kinect收集的RGB-D數據集。它有1449個RGB-D圖像,像素標簽已被Gupta等人合並為有40個類別的語義分割任務[13]。我們報告了795個訓練圖像和654個測試圖像的標准分割結果。 (注意:所有選擇的模型均在PASCAL 2011上執行過。)表4給出了我們的模型在幾個變體中的性能。首先,我們在RGB圖像上訓練未修改的粗糙模型(FCN-32s)。為了增加深度信息,我們在升級的模型上訓練以采用四通道RGB-D輸入(早期融合)。這提供了很少的好處,可能是由於難以在模型中傳播有意義的梯度。繼Gupta等人的成功之后 [14],我們嘗試深度的三維HHA編碼,僅對此信息進行訓練網絡,以及RGB和HHA的“后期融合”,其中兩個網絡的預測在最后一層求和,得到的雙流網絡是端到端學習的。最后,我們將這個后期融合的網絡升級為16步長版。
SIFT Flow 是2,688個圖像的數據集,具有33個語義類別(“橋”,“山”,“太陽”)的像素標簽,以及三個幾何類別(“水平”,“垂直”和“天空”)。FCN可以自然地學習同時預測兩種類型標簽的聯合表示。我們學習了具有語義和幾何預測層和損失的雙頭版本的FCN-16s。習得的模型與兩個獨立訓練的模型在兩個任務上的表現一樣好,而學習和推理基本上與每個獨立模型本身一樣快。表5中的結果在標准上計算,分為2,488次訓練和200次測試圖像,顯示了兩項任務的最新性能。
6. 結論
完全卷積網絡是一類豐富的模型,其中現代分類網絡是一種特殊情況。認識到這一點,將這些分類網絡擴展到分割,並通過多分辨率層組合改進架構,大大提高了現有技術水平,同時簡化並加速了學習和推理。
致謝 略。
有關FCN的詳解參見博文:
http://www.cnblogs.com/gujianhan/p/6030639.html卷積細節描述到位。
https://blog.csdn.net/qq_36269513/article/details/80420363整體架構描述到位。
論文中的上采樣包含雙線性差值和反卷積兩種方法,其具體操作如下博文所示。
https://buptldy.github.io/2016/10/29/2016-10-29-deconv/關於反卷積的理解到位。
https://blog.csdn.net/u011771047/article/details/72872742關於上采樣和雙線性差值的理解到位。
關於FCN的代碼解析,靜待更新。。。
---恢復內容結束---
---恢復內容開始---
Fully Convolutional Networks for Semantic Segmentation
用於語義分割的全卷積網絡
摘要
卷積網絡是可以產生具有層次結構的特征的強大的視覺模型。我們展示了只通過由端到端,像素像素訓練的卷積網絡進行語義分割,就超過了當前最新的技術水平。我們的主要見解是構建“完全卷積”網絡,該網絡接受任意大小的輸入並通過有效的推理和學習產生相應大小的輸出。我們定義並詳細說明完全卷積網絡的空間,解釋它們在空間密集預測任務中的應用,並闡述與先前模型的聯系。我們將現代分類網絡(AlexNet [19],VGG網絡[31]和GoogLeNet [32])調整為完全卷積網絡,並通過微調[4]將其學習的表示轉移到分割任務。什么是微調?怎么微調?然后,我們定義了一種新穎的架構,它將來自深層粗糙層的語義信息與來自淺層精細層的外觀信息相結合,以生成准確而詳細的分割。我們的完全卷積網絡實現了對PASCAL VOC(相對2012年62.2%的平均IU改進率為20%),NYUDv2和SIFT Flow的最先進分割,而典型圖像的推斷時間不到五分之一秒。
1. 緒論
卷積網絡正在推動識別的進步。Convnet不僅改善了整體圖像分類[19,31,32],而且還在結構化輸出的本地任務上取得了進展。這些進展包括邊界框對象檢測[29,12,17],部分和關鍵點預測[39,24]以及局部對應[24,9]。從粗略推斷到精細推理,很自然下一步是對每個像素進行預測。先前的方法已經使用了用於語義分割的卷積網絡[27,2,8,28,16,14,11],其中每個像素用其封閉對象或區域的類來標記,但是具有該工作所解決的缺點。我們證明了一個沒有進一步的機制的由端對端,像素到像素訓練的完全卷積網絡(FCN)超過了現有的最先進的語義分割技術。據我們所知,這是第一個從(2)有監督的預訓練,端對端地訓練FCN(1)用於像素預測的工作。現有網絡的完全卷積版本預測來自任意大小輸入的密集輸出。學習和推理都是通過密集的前饋計算和反向傳播在整個圖像上進行的。網內上采樣層通過子采樣池化來實現網絡中的像素預測和學習。這種方法無論是漸近還是絕對都是有效的,並且排除了對其他工作中的復雜性的需要。Patchwise訓練很常見[27,2,8,28,11],但缺乏完全卷積訓練的效率。我們的方法沒有利用預處理和后處理的復雜性,包括超像素[8,16],建議[16,14],或隨機字段或局部分類器的事后細化[8,16]。我們的模型通過將分類網絡重新解釋為完全卷積並從其學習的表示中進行微調,將最近在分類任務[19,31,32]中取得的成果轉移到密集預測任務。相比之下,以前的工作是在沒有經過有監督的預訓練的情況下應用了小型網絡。語義分割面臨語義和位置之間的內在張力:全局信息解決是什么的問題,而本地信息解決在何處的問題。深度特征層次結構共同編碼了 局部到全局金字塔中的位置和語義信息。我們在4.2節定義了一個新穎的“skip”架構,將深的,粗略的語義信息和淺的,精細的外觀信息相結合(見圖3)。在下一節中,我們將回顧有關深度分類網絡,FCN以及使用convnet進行語義分割的最新方法的相關工作。接下來的章節介紹了FCN設計和密集預測權衡,介紹了我們的網絡上采樣和多層組合的架構,並描述了我們的實驗框架。最后,我們展示了在PASCAL VOC 2011-2,NYUDv2和SIFT Flow上取得的最新成果。
2. 相關工作
我們的方法借鑒了最近成功的用於圖像分類深度網絡[19,31,32]和遷移學習[4,38]。遷移首先在各種視覺識別任務[4,38],然后是檢測,以及混合提議分類器模型中的實例和語義分割任務[12,16,14]上進行了演示。我們現在重新構建和微調分類網絡,以直接,密集地預測語義分割。我們繪制了FCN的空間,並在此框架中定位了歷史和近期的先前模型。
全卷積網絡 據我們所知,Matan等人首先提出了將一個卷積網絡擴展到任意大小的輸入的想法。 [25],它擴展了classicLeNet [21]以識別數字串。因為他們的網絡僅限於一維輸入字符串,Matan等人。 使用Viterbi解碼來獲得它們的輸出。Wolf和Platt [37]將信號輸出擴展為郵政地址塊四個角的二維檢測分數圖。這兩個歷史工作都通過全卷積進行了推理和學習,以便進行檢測。 寧等人 [27通過]完全卷積推理,定義了一個用於秀麗隱桿線蟲組織的粗多類分割的預測網。
在當前的多層網絡時代,也充分利用了卷積計算。Sermanet等人的滑動窗口檢測 [29],Pinheiro和Collobert [28]的語義分割,以及Eigen等人的圖像恢復 [5]都做了全卷積推理。全卷積訓練很少見,但Tompson等人有效地使用了它 [35]來學習一個端到端的部分探測器和姿勢估計的空間模型,但是他們沒有對這個方法進行解釋或分析。
或者,He等人 [17]丟棄分類網的非卷積部分以制作特征提取器。它們結合了提議和空間金字塔池,以產生用於分類的本地化固定長度特征。雖然快速有效,但這種混合模式無法端到端地學習。
用卷積網絡進行密集預測 最近的一些研究已經將卷積網絡應用於密集預測問題,包括Ning等[27],Farabet等[8],Pinheiro和Collobert [28]等人的語義分割 ;Ciresan等人的電子顯微鏡邊界預測, [2]和Ganin和Lempitsky的混合神經網絡/最近鄰模型的自然圖像邊界預測[11];和Eigen等人的圖像恢復和深度估計 [5,6]。這些方法的共同要素包括:
- 限制容量和感受野的小模型;
- patchwise訓練[27,2,8,28,11];
- 有超像素投影,隨機場正則化,濾波或局部分類[8,2,11]的后處理過程;
- 對於密集輸出存在由過擬合 [29]引入的輸入移位和輸出交織問題[28,11];
- 多尺度金字塔處理[8,28,11];
- 飽和tanh非線性[8,5,28];
- 集成[2,11]
而我們的方法沒有這種機制。然而,我們從FCN的角度研究了補丁訓練3.4節和“移位 - 縫合”密集輸出3.2節。我們還討論了網內上采樣3.3節,其中Eigen等人的全連接預測 [6]是一個特例。
與現有方法不同,我們采用深度分類架構,使用圖像分類作為有監督的預訓練,並通過全卷積微調,從整個圖像輸入和整個圖像的Ground Truths中簡單有效地學習。
Hariharan等人 [16]和Gupta等人 [14]同樣使深度分類網適應語義分割,但只在混合提議 - 分類器模型中這樣做。這些方法通過對邊界框和/或區域提議進行采樣來微調R-CNN系統[12],以進行檢測,語義分割和實例分割。這兩種方法都不是端到端學習的。
他們分別在PASCAL VOC分割和NYUDv2分割方面取得了最新成果,因此我們直接在第5節中將我們的獨立端到端FCN與他們的語義分割結果進行比較。
3. 全卷積網絡
卷積網絡中的每個數據層是大小為h×w×d的三維陣列,其中h和w是空間維度,d是特征或信道維度。第一層是有着像素大小為h×w,以及d個顏色通道的圖像,較高層中的位置對應於它們路徑連接的圖像中的位置,這些位置稱為其感知域。
Convnet建立在平移不變性的基礎之上。它們的基本組件(卷積,池化和激活函數)在局部輸入區域上運行,並且僅依賴於相對空間坐標。用xij表示某一層位置(x,j)處的數據向量,yij是下一層的數據向量,則通過下式計算yij:
其中k稱為內核大小,s是步幅或子采樣因子,fks決定層的類型:用於卷積或平均池化的矩陣乘法,用於最大池化的空間最大值,或用於激活函數的元素非線性,等等用於其他類型的層。
這種函數形式在組合下維護,內核大小和步幅遵守轉換規則:
雖然一般的深度網絡計算一般的非線性函數,但只有這種形式的層的網絡計算非線性濾波器,我們稱之為深度濾波器或完全卷積網絡。FCN自然地對任何大小的輸入進行操作,並產生相應(可能重新采樣的)空間維度的輸出。
由FCN組成的實值損失函數定義了任務。如果損失函數是最終圖層的空間維度的總和如果損失函數是最終圖層的空間維度的總和如果損失函數是最終圖層的空間維度的總和
\(l(x;\theta ) = \sum\nolimits_{ij} {{l^'}({x_{ij}};\theta )} \)
---恢復內容結束---