Direction-aware Spatial Context Features for Shadow Detection and Removal

基本信息

  • 2018 CVPR
  • https://arxiv.org/abs/1805.04635
  • https://github.com/xw-hu/DSC
  • https://github.com/stevewongv/DSC-PyTorch

值得借鑑的地方

  1. 損失函數

摘要

陰影檢測和陰影去除是基本且具有挑戰性的任務,需要了解全局圖像語義。本文通過以方向感知的方式分析空間圖像上下文,提出了一種用於陰影檢測和去除的新穎的深度神經網絡設計。爲了實現這一點,我們首先在空間遞歸神經網絡(RNN)中通過在聚合RNN中的空間上下文特徵時引入注意權重來制定方向感知注意機制。通過訓練學習這些權重,我們可以恢復方向感知的空間上下文(DSC)以檢測和消除陰影。該設計被開發到DSC模塊中,並嵌入到卷積神經網絡(CNN)中,以學習不同級別的DSC功能。此外,我們設計了加權交叉熵損失以有效地進行陰影檢測訓練,並通過使用歐幾里得損失函數並制定顏色傳遞函數來解決訓練對中的顏色和亮度不一致性,從而將網絡進一步用於陰影去除。我們使用了兩個陰影檢測基準數據集和兩個陰影去除基準數據集,並進行了各種實驗以評估我們的方法。實驗結果表明,我們的方法在陰影檢測和陰影去除方面均優於最新方法。

1 INTRODUCTION

陰影是感知深度和幾何形狀的視覺提示。 一方面,知道陰影位置可以讓我們獲得照明方向[2],相機參數[3]和場景幾何[4],[5]。 另一方面,陰影的存在會降低許多計算機視覺任務的性能,例如,對象檢測和跟蹤[6],[7]。 因此,陰影檢測和陰影去除長期以來一直是計算機視覺研究中的基本問題。

早期的方法是通過開發物理模型來分析和消除顏色和照明的統計數據,從而檢測並消除陰影[7],[8],[9],[10],[11],[12],[13],[14], [15]。 然而,這些方法是建立在複雜情況下可能不正確的假設之上的[16]。 爲了從真實圖像中提取信息,數據驅動方法通過使用手工製作的特徵[17],[18],[19],[20],[21]或通過使用深度神經網絡學習特徵來學習和理解陰影 [16],[22],[23],[24]。 儘管最先進的方法已經能夠以87%至90%的精度檢測陰影[19],[23]並恢復大多數陰影區域[24],但它們可能會誤解黑色物體作爲陰影併產生各種錯誤,因爲它們無法分析和理解全局圖像語義; 有關定量和定性比較結果,請參見第4和第5節。

識別和消除陰影需要利用全局圖像語義,如V. Nguyen等人 [25]最近所展示用於陰影檢測和曲等[26]用於陰影去除。 爲此,我們提出以方向感知的方式分析圖像上下文,因爲通常通過與周圍環境進行比較來識別陰影。 以圖1中的區域A爲例,將其與區域B和C進行比較,區域B會比區域C更有力地表明A是陰影。 因此,在暗示陰影的存在時,不同方向上的空間上下文將提供不同的貢獻。

在這裏插入圖片描述

圖1:在此示例圖像中,與區域C相比,區域B會更強地表明A是陰影。這促使我們以方向感知的方式分析全局圖像上下文以檢測和去除陰影。

爲了捕獲不同方向上圖像/空間上下文之間的差異,我們在深度神經網絡中設計了方向感知的空間上下文(DSC)模塊或簡稱DSC模塊,在該模型中,我們首先通過採用空間來聚合全局圖像上下文 遞歸神經網絡(RNN)的四個主要方向,然後在RNN中制定一個方向感知的注意力機制,以學習每個方向的注意力權重。 因此,我們可以以方向感知的方式獲得空間上下文。 此外,我們將DSC模塊的多個副本嵌入到卷積神經網絡中,以瞭解不同層(尺度)中的DSC特徵,並將這些特徵與卷積特徵相結合以預測每一層的陰影蒙板。 之後,我們將來自不同層的預測與加權的交叉熵損失融合到最終的陰影檢測結果中,以優化網絡。

爲了進一步採用網絡來去除陰影,我們將無陰影圖像作爲真值,並使用訓練對之間的歐幾里得損失(有陰影和無陰影的圖像)來預測無陰影圖像。此外,由於相機曝光和環境光線的變化,訓練對可能會產生不一致的顏色和亮度;可以在現有的陰影去除數據集中,例如SRD [26]和ISTD [24]中觀察到這種不一致。爲此,我們提出了傳遞函數來調整無陰影的地面真實圖像,並使用調整後的圖像來訓練網絡,以便我們的陰影去除網絡可以生成更忠實於輸入測試的無陰影圖像圖片。我們在下面總結了這項工作的主要貢獻:

  • 首先,我們在空間RNN中設計了一種新穎的注意力機制,並構造了DSC模塊以一種方向感知的方式學習空間上下文。
  • 其次,我們通過採用多個DSC模塊來學習不同層中的方向感知空間上下文,並設計加權交叉熵損失來平衡陰影和非陰影區域的檢測精度,從而開發了一種用於陰影檢測的新網絡。
  • 第三,我們進一步通過制定歐幾里得損失並採用經過色彩補償的無陰影圖像訓練網絡來去除陰影,這些圖像是通過顏色傳遞函數生成的。
  • 最後,我們在陰影檢測和陰影去除的幾個基準數據集上評估我們的方法,並將其與最新方法進行比較。實驗結果表明,我們的網絡在這兩個任務上的表現均優於以前的方法。有關定量和定性比較結果,請參見第4和第5節。

2 RELATED WORK

在本節中,我們重點討論有關單圖像陰影檢測和去除的工作。

陰影檢測。 傳統上,單圖像陰影檢測方法[8],[9],[10]利用照明和顏色的物理模型。 然而,這種方法僅在寬動態範圍圖像中趨於產生令人滿意的結果[18],[25]。 另一種方法是使用基於註釋的陰影圖像的手工特徵來學習陰影屬性。 它首先通過特徵描述符描述圖像區域,然後將區域分爲陰影區域和非陰影區域。 顏色[18],[27],[28],[29],紋理[19],[27],[28],[29],邊緣[17],[18],[19]和 Tjunction [18]通常用於陰影檢測,其後是諸如決策樹[18],[19]和SVM [17],[27],[28],[29]等分類器。 但是,由於手工製作的功能描述陰影的能力有限,因此這種方法在複雜情況下通常會失敗。

卷積神經網絡(CNN)已被證明是強大的工具,可用於學習檢測陰影的功能,其結果優於以前的方法,因爲有大量數據可用。 Khan等[22]使用多個CNN來學習超像素和沿對象邊界的特徵,並將輸出特徵饋送到條件隨機場以定位陰影。 沉等[32]提出了一種深層次的結構化陰影邊緣檢測器,並採用結構化標籤來改善預測陰影圖的局部一致性。 維森特等[23]使用帶有噪聲註釋的大型數據集訓練了stacked-CNN。 他們將圖像簇的留一法誤差平方和最小化以恢復註釋,並訓練了兩個CNN以檢測陰影。

最近,Hosseinzadeh等人[33]使用補丁級別的CNN和根據手工特徵計算的陰影先驗圖來檢測陰影。 Nguyen等[25]設計了具有靈敏度參數的scGAN來調整損失函數的權重。 儘管陰影檢測精度在基準[19],[23]上不斷提高,但是現有方法仍可能會將黑色物體誤識別爲陰影,並遺漏了不明顯的陰影。 Nguyen等人最近的工作[25]強調了推理全局語義對檢測陰影的重要性。 除了這項工作,我們在分析空間環境時還考慮了方向方差。 實驗結果表明,我們的方法在基準上的表現進一步優於[25]; 參見第5節。

陰影去除。 早期的作品通過建立從圖像形成過程推論得出的物理模型來消除陰影[7],[11],[12],[13],[14],[15],[34]。 然而,這些方法在描述複雜真實場景中的陰影時並不有效[16]。 之後,基於手工特徵(例如強度[20],[21],[35],顏色[20],紋理[20],漸變[21])開發了用於陰影去除的統計學習方法。 用於發現陰影的高級語義知識。

最近,由卷積神經網絡(CNN)學習的特徵被廣泛用於陰影去除。 Khan等[16]應用多個CNN來學習檢測陰影,並制定了貝葉斯模型以提取陰影遮罩並去除單個圖像中的陰影。 最近,Qu等人 [26]提出了一種以端到端的方式去除陰影的體系結構。 該方法應用了三個嵌入網絡(全局本地化網絡,語義建模網絡和外觀建模網絡)來提取三個級別的特徵。 Wang等[24]在一個框架中設計了兩個條件生成對抗網絡,以同時檢測和去除陰影。

但是,去除陰影是一項艱鉅的任務。正如Qu等人所指出的[26]和Wang等 [24],陰影去除需要圖像的全局視圖,以實現預測結果的全局一致性。但是,現有方法仍可能無法合理地恢復陰影區域並錯誤地更改非陰影區域的顏色。在這項工作中,我們以方向感知的方式分析全局空間上下文,並通過考慮當前基準數據集中訓練對之間的非陰影區域,制定一種顏色補償機制來調整像素顏色和亮度[24],[ 26]。實驗結果從定性和定量方面證明了我們的方法優於最新方法的有效性。

**本徵圖像。**另一個相關主題是固有圖像分解,其目的是消除輸入中的照明並生成僅包含反射率的圖像。爲了解決這個問題,早期的方法[36],[37],[38],[39],[40],[41]使用各種手工製作的特徵來制定約束條件,以提取有效解。請參閱[42]。

藉助深度神經網絡,技術已轉向使用CNN的數據驅動方法。 Narihira等[43]提出了一種稱爲“直接本徵分解”的方法,這是一種早期嘗試,它使用多層CNN將圖像直接轉換爲陰影和反射率。 後來,金等[44]使用具有共享中間層的聯合CNN來預測深度和其他固有成分。 最近,Lettry等[45]提出了DARN網絡,該網絡採用了判別器網絡和對抗訓練方案來增強生成器網絡的性能,而Cheng等人[46]設計了一個尺度空間網絡來生成本徵圖像。

這項工作從三個方面擴展了我們先前的工作[1]。 首先,我們採用具有DSC功能的陰影檢測網絡,通過重新設計輸出並制定不同的損失函數來訓練網絡來消除陰影。 其次,我們表明現有陰影去除數據集的訓練對(陰影圖像和無陰影圖像)中的像素顏色和亮度可能不一致。 爲此,在訓練陰影去除網絡之前,我們制定了顏色補償機制並使用傳遞函數使地面真實圖像中的像素顏色一致。 第三,我們通過考慮更多基準數據集和測量時間性能,進行更多實驗來評估用於陰影檢測和陰影去除的網絡設計,並說明我們的陰影去除網絡如何勝過現有最佳的陰影去除方法。

3 METHODOLOGY

在本節中,我們首先介紹陰影檢測網絡,然後是陰影去除網絡。 圖2展示了我們的整體陰影檢測網絡,該網絡使用多個DSC模塊(參見圖3)來學習不同比例的方向感知空間上下文特徵。 我們的網絡將整個圖像作爲輸入,並以端到端的方式輸出陰影蒙板。

在這裏插入圖片描述

圖2:整個陰影檢測網絡的示意圖:(i)從輸入圖像中提取CNN層上不同比例的特徵; (ii)我們嵌入了DSC模塊(參見圖3),以爲每一層生成方向感知的空間上下文(DSC)特徵; (iii)我們在每層將DSC特徵與卷積特徵連接起來,並將連接後的特徵圖上採樣到輸入圖像的大小; (iv)我們將上採樣的特徵圖組合到多層綜合特徵(MLIF)中,使用[30]中的深度監督機制,基於每一層的特徵預測陰影蒙板,並融合所得的陰影蒙板; (v)在測試過程中,我們計算MLIF層和融合層上的平均陰影蒙板,並使用條件隨機場[31]進一步完善檢測結果。 有關如何採用此網絡進行陰影去除的信息,請參見第3.3節。

首先,它首先使用卷積神經網絡(CNN)提取CNN層上不同比例的分層特徵圖。較淺層的特徵圖對細節進行編碼,這有助於保留陰影邊界,而較深層的特徵圖則具有更多的全局語義,有助於識別陰影和非陰影區域。其次,對於每一層,我們使用DSC模塊以方向感知的方式獲取空間上下文並生成DSC特徵。第三,我們將DSC特徵與相應的卷積特徵連接起來,並將連接後的特徵圖上採樣到輸入的大小。第四,爲了利用不同層上特徵圖的互補優勢,我們將上採樣的特徵圖連接起來,並採用1×1卷積層來生成多層集成特徵(MLIF)。此外,我們應用深度監督機制[30],[47]向每個層以及MLIF施加一個監督信號,並預測每個層的陰影蒙板。在訓練過程中,我們同時將來自多層的預測誤差最小化,並通過直接對中間層提供監督來獲得更多的判別特徵[30]。最後,我們將所有預測的陰影蒙板連接起來,並採用1×1卷積層來生成輸出陰影蒙板。參見圖2。在測試中,我們計算MLIF層和融合層上的平均陰影蒙板以產生最終的預測結果,並採用完全連接的條件隨機場(CRF)[31]來完善結果。爲了採用該網絡進行陰影去除,我們將無陰影圖像替換爲陰影蒙板作爲真值,制定了一種顏色補償機制來調整無陰影圖像的顏色和亮度一致性,並使用歐幾里得損失來優化網絡;有關詳細信息,請參見第3.3節。

在以下小節中,我們首先詳細說明生成DSC特徵的DSC模塊(第3.1節)。 之後,我們將介紹如何使用DSC模塊設計圖2中的陰影檢測網絡(第3.2節),然後介紹如何進一步採用該網絡進行陰影去除(第3.3節)。

3.1 Direction-aware Spatial Context

圖3顯示了我們的DSC模塊架構,該架構以特徵圖作爲輸入並輸出DSC特徵。 在本小節中,我們首先描述空間上下文特徵的概念和空間RNN模型(第3.1.1節),然後詳細說明如何在空間RNN中制定方向感知注意力機制,以學習注意力權重並生成DSC特徵( 3.1.2節)。

在這裏插入圖片描述

圖3:方向感知空間上下文模塊(DSC模塊)的示意圖。 我們通過採用空間RNN通過兩輪在四個主要方向上聚合空間上下文來計算方向感知的空間上下文,並制定注意力機制以生成注意力權重圖,以組合不同方向的上下文特徵。 在兩輪遞歸轉換中,網絡共享權重。

3.1.1 Spatial Context Features

遞歸神經網絡(RNN)[48]是通過三個節點數組處理一維順序數據的有效模型:(i)輸入節點數組以接收數據,(ii)隱藏節點數組以更新內部狀態 基於過去和現在的數據,以及(iii)一組用於輸出數據的輸出節點。 RNN中有三種數據轉換:(i)從輸入節點到隱藏節點,(ii)在相鄰的隱藏節點之間,以及(iii)從隱藏節點到輸出節點。 通過迭代執行數據轉換,在輸入節點接收的數據可以在隱藏節點之間傳播,並最終在輸出節點產生目標結果。

爲了處理具有二維空間上下文的圖像數據,已經擴展了RNN以建立空間RNN模型[49]; 參見圖4的示意圖。以CNN的2D特徵圖爲輸入,我們首先執行1×1卷積以模擬RNN中的輸入到隱藏數據轉換。 然後,我們應用四個獨立的數據轉換以沿每個主要方向(左,右,上和下)聚合局部空間上下文,並將結果融合到中間特徵圖中; 參見圖4(b)。 最後,我們重複整個過程,以進一步在每個主要方向上傳播聚合的空間上下文並生成整體空間上下文。 參見圖4(c)。

在這裏插入圖片描述

圖4:空間上下文信息如何在兩輪空間RNN中傳播的示意圖。

與圖4(c)相比,圖4(a)中的每個像素僅知道其局部空間上下文,而圖4(b)中的每個像素在第一輪數據轉換後進一步瞭解四個主要方向上的空間上下文。 因此,經過兩輪數據轉換後,每個像素可以獲得相關的方向感知全局空間上下文,以學習特徵以增強陰影的檢測和去除。

爲了在空間RNN中執行數據轉換,我們遵循IRNN模型[50],因爲它快速,易於訓練,並且對於遠程數據依賴項具有良好的性能[49]。 將hi,jh_{i, j}表示爲像素(i,j)的特徵,我們通過重複以下操作n次,向右執行一輪數據轉換(其他三個方向也執行類似的操作)。

hi,j=max(αrighthi,j1+hi,j,0)(1) h_{i,j} = \max(\alpha_{right} h_{i, j-1} + h_{i, j}, 0) \tag{1}

其中,nn是特徵圖的寬度,而αrightα_{right}是遞歸轉換層中向右方向的權重參數。 注意,αrightα_{right}以及其他方向的權重被初始化爲一個單位矩陣,並通過訓練過程自動學習。

3.1.2 Direction-aware Spatial Context Features

爲了有效地以方向感知的方式學習空間上下文,我們進一步在空間RNN中制定方向感知的注意力機制,以學習注意力權重並生成方向感知的空間上下文(DSC)特徵。 該設計形成了我們在圖3中介紹的DSC模塊。

方向感知注意機制。 該機制的目的是使空間RNN通過學習有選擇地利用聚集在不同方向上的空間上下文。 參見圖3所示的DSC模塊的左上方方框。首先,我們使用兩個連續的卷積層(具有3×3內核),然後進行ReLU [51]非線性運算,然後是第三卷積層(具有1× 1個內核)以生成四個通道的W。 然後,我們將W分成四個注意權重圖,分別表示爲WleftW_{left}WdownW_{down}WrightW_{right}WupW_{up},每個通道一個。 在數學上,如果將上述運算符表示爲fattf_{att},而將輸入特徵圖表示爲XX,則:

W=fatt(X:θ)(2) W = f_{att}(X: \theta) \tag 2

其中θ\theta表示由fattf_{att}(也稱爲注意力估計器網絡)學習的卷積運算中的參數。

再次參見圖3中所示的DSC模塊。四個權重圖以元素方式在相應方向上與空間上下文特徵(來自循環數據轉換)相乘。 因此,在訓練網絡之後,網絡應學習用於產生適當注意力權重的θ,以選擇性地利用空間RNN中的空間上下文。

完成DSC模塊。 接下來,我們提供有關DSC模塊的詳細信息。 如圖3所示,在將空間上下文特徵與注意權重相乘後,我們將結果連接起來,並使用1×1卷積模擬RNN中的隱藏到隱藏的數據轉換,並將特徵維數減少四分之一。 然後,我們執行第二輪遞歸翻譯,並使用相同的注意權重集選擇空間上下文,根據經驗,我們發現共享注意權重而不是使用兩組單獨的權重可以提高性能; 有關實驗,請參見第5節。 還要注意,這些注意權重是根據從輸入圖像中提取的深層特徵自動學習的,因此它們可能因圖像而異。 最後,我們使用1×1卷積,然後對級聯特徵圖進行ReLU [51]非線性運算,以模擬從隱藏到輸出的轉換,併產生輸出DSC特徵。

3.2 Our Shadow Detection Network

我們的網絡是建立在VGG網絡[52]之上的,在第一層之外的每一層都應用了一個DSC模塊,因爲第一層佔用內存大。 由於它具有僅具有卷積和池化操作的完全卷積架構,因此由DSC模塊捕獲的圖像空間中像素之間的方向關係保留在特徵空間中。

3.2.1 Training

損失函數。 在自然圖像中,陰影通常比非陰影區域在圖像空間中佔據的區域較小。 因此,如果損失函數僅針對總體精度,它將傾向於匹配像素更多的非陰影區域。 因此,我們在訓練過程中使用加權的交叉熵損失來優化陰影檢測網絡。

假設yy爲像素的真值(如果在陰影中,則yy = 1,否則爲yy = 0),而pp爲像素的預測標籤(其中p[0,1]p \in [0,1])。 第ii個CNN層的加權交叉熵損失LiL_{i}是按類別分佈加權的交叉熵LidL_i^d損失和按每類精度加權的交叉熵損失LiaL_i^a的總和:Li=Lid+LiaL_i = L_i^d + L_i^a,其中:

Lid=(NnNn+Np)ylog(p)(NpNp+Nn)(1y)log(1p)(3) L_i^d = - (\frac{N_n}{N_n+N_p}) y \log(p) - (\frac{N_p}{N_p+N_n}) (1- y) \log(1- p) \tag 3
Lia=(1TPNp)ylog(p)(1TNNn)(1y)log(1p)(4) L_i^a = - (1 - \frac{TP}{N_p}) y \log(p) - (1 - \frac{TN}{N_n}) (1- y) \log(1- p) \tag 4

其中TPTPTNTN是每個圖像的預測正確的陰影像素數量和非陰影像素數量,NpN_pNnN_n分別是每個圖像的陰影和非陰影像素數,因此Np+NnN_p+N_n是第ii層的像素總數。在實踐中,LidL_i^d有助於平衡陰影和非陰影的檢測;如果陰影的面積小於非陰影區域的面積,則對錯誤分類的陰影像素的懲罰要大於對錯誤分類的非陰影像素的懲罰。另一方面,受[53]的啓發,[53]傾向於選擇分類錯誤的示例來訓練深度網絡,因此我們擴大了難以分類的類別(陰影或非陰影)的權重。爲此,我們引入LiaL_i^a,其中當正確分類的陰影(或非陰影)像素的數量較小時,陰影(或非陰影)類的權重較大,反之亦然。我們在圖2所示的陰影檢測網絡中使用上述每層損失函數。因此,總損失函數LoverallL_{overall}是所有在不同尺度上的所有預測蔭罩上單個損失的總和:

Loverall=iwiLi+wmLm+wfWf(5) L_{overall} = \sum_i w_i L_i + w_m L_m + w_f W_f \tag 5

wiw_iLiL_i分別表示整個網絡中第ii層的權重和損失; wmw_mLmL_m是MLIF層的權重和損失; wfw_fLfL_f是融合層的重量和損耗,融合層是整個網絡中的最後一層; 參見圖2。請注意,根據經驗將wiw_iwmw_mwfw_f設置爲1。 請參閱相關實驗的補充材料。

訓練參數。 爲了在減少過度擬合的同時加快訓練過程,我們將在ImageNet [54]上訓練的VGG網絡[52]的權重用於分類任務,以初始化特徵提取層中的參數(請參見圖9網絡的正面部分) 2)並通過隨機噪聲初始化其他層中的參數,該隨機噪聲遵循零均值高斯分佈,標準偏差爲0.1。 隨機梯度下降用於優化整個網絡,其動量值爲0.9,權重衰減爲5×10-4。 根據經驗,我們將學習速率設置爲10-8,並在12k次迭代後終止學習過程。 請參閱有關訓練迭代的相關實驗的補充材料。 此外,我們水平翻轉圖像以進行數據論證。我們在Caffe [55]中建立模型, 由於GPU內存的限制,其最每小批大小爲1,並每十次訓練迭代更新一次模型參數。

3.2.2 Testing

在測試過程中,我們的網絡每層產生一個陰影掩模,包括MLIF層和融合層,每層都有一個監控信號。 之後,我們在MLIF層和融合層上計算平均陰影掩模以產生最終預測。 最後,我們通過考慮鄰域像素之間的空間相干性,應用完全連接的條件隨機場(CRF)[31]來改善檢測結果。 參見圖2。

3.3 Our Shadow Removal Network

爲了採用圖2所示的陰影檢測網絡進行陰影去除,我們進行了以下三個修改:

  • 首先,我們制定一種顏色補償機制,以解決訓練對之間的顏色不一致問題,即陰影圖像(輸入)和無陰影圖像(真值),然後調整無陰影圖像(第3.3.1節) )。
  • 其次,我們用調整後的無陰影圖像代替陰影蒙板,作爲網絡中用於去除陰影的監督(即真值圖像); 參見圖2。
  • 第三,我們將加權交叉熵損失替換爲歐幾里得損失,以使用調整後的無陰影圖像來訓練和優化網絡(第3.3.2節)。

3.3.1 Color Compensation Mechanism

通常通過以下方法準備用於去除陰影的訓練數據:首先拍攝帶有陰影的場景圖片,然後通過刪除關聯的對象拍攝另一幅沒有陰影的圖片。 由於環境亮度和相機曝光可能會有所不同,因此,訓練對可能具有不一致的顏色和亮度; 有關兩個不同基準數據集(SRD [26]和ISTD [24])的示例,請參見圖5,其中顏色直方圖清楚地揭示了不一致之處。 現有的基於網絡的方法通過優化網絡以產生與目標地面真實情況相匹配的輸出來學習去除陰影。 因此,給定這種不一致的訓練對,網絡可能會產生更亮或更暗的偏差結果。
在這裏插入圖片描述

圖5:輸入(陰影圖像)和真實情況(無陰影圖像)之間的不一致。 頂行是SRD [26]的“ IMG 6456.jpg”,底行是ISTD [24]的“ 109-5.png”。

爲了解決該問題,我們通過爲每對訓練圖像(輸入陰影圖像和地面真實無陰影圖像)找到一個顏色傳遞函數來設計顏色補償機制。 設IsI_sInI_n分別是訓練對的陰影圖像(輸入)和無陰影圖像(真值),Ωs\Omega_sΩn\Omega_n分別是圖像空間中的陰影區域和非陰影區域。 在我們的公式中,我們的目標是找到使非陰影區域(由陰影蒙板指示)上的陰影圖像和無陰影圖像之間的顏色補償誤差EcE_c最小的顏色傳遞函數TfT_f

Ec=IsTf(In)Ωn2(6) E_c = | I_s - T_f(I_n)|_{\Omega_n}^2 \tag 6

我們使用以下線性變換來公式化TfT_f(憑經驗發現,通過該線性變換足以調整InI_n中的顏色以匹配IsI_s中的顏色)

Tf(x)=Mα(xrxgxb1)(7) T_f(x) = M_\alpha \cdot \left( \begin{array}{lr} x_r \\ x_g \\ x_b \\ 1 \end{array} \right) \tag 7

其中xxInI_n中具有顏色值(xrx_rxgx_gxbx_b)的像素,MαM_α是3×4矩陣,該矩陣將參數存儲在顏色傳遞函數中。 請注意,我們通過考慮IsI_sInI_n的非陰影區域ΩnΩ_n中的像素對,使用最小二乘法求解TfT_f的等式(6)。 然後,我們應用TfT_f調整每個訓練對的InI_n的整個圖像,將圖2中的陰影蒙板替換爲調整後的無陰影圖像(即Tf(In)T_f(I_n))作爲新的監督,並以端到端的方式訓練陰影去除網絡。

3.3.2 Training

損失函數。 我們採用歐幾里得損失來優化陰影去除網絡。 詳細地,我們將網絡預測表示爲I~n\tilde{I}_n,在訓練中將Tf(In)T_f(I_n)I~n\tilde{I}_n都使用“ LAB”色彩空間,並在整個圖像域上計算損耗LrL^r

Lr=Tf(In)I~nΩnΩs2(8) L_r = | T_f(I_n) - \tilde{I}_n | _{\Omega_n \cup \Omega_s}^2 \tag 8

我們對陰影去除網絡中的每一層使用上述損失函數。 總體損耗函數LoverallrL^r_{overall}是所有第iiLirL^r_i,MLIF層和融合層LfrL^r_f上的損耗LrL_r的總和:

Loverallr=iwirLir+wmrLmr+wfrLfr(9) L^r_{overall} = \sum_i w_i^r L_i^r + w_m^r L_m^r + w_f^rL_f^r \tag 9
和等式5類似,設置wirw_i^rwmrw_m^rwfrw_f^r爲1.

**訓練參數。**同樣,我們通過ImageNet [54]上訓練好的VGG網絡[52]初始化特徵提取層中的參數(請參見圖2中所示的網絡的前端),以加快訓練過程並減少過擬合,並且像陰影檢測一樣,通過隨機噪聲初始化其他層中的參數。我們使用Adam[56]來優化陰影去除網絡,其第一動量值爲0.9,第二動量值爲0.99,權重衰減爲5×10-4。這種優化方法針對網絡中的各個參數自適應地調整學習率。它降低了頻繁更新參數的學習率,並提高了很少更新參數的學習率。根據經驗[57],我們將基本學習率設置爲10-5,通過在90k和130k迭代時乘以0.316來降低它,並在160k迭代時停止學習。此外,圖像被水平和垂直翻轉,隨機裁剪並旋轉以進行數據增強。該模型在Caffe [55]中建立,最小批量爲1。

3.3.3 Testing

在測試過程中,我們的網絡會直接爲每個層(包括MLIF層和融合層)生成一個無陰影圖像,每個層均帶有監督。 之後,我們在MLIF層和融合層上計算平均無陰影圖像以產生最終結果。

4 EXPERIMENTS ON SHADOW DETECTION

在本部分中,我們將提供評估陰影檢測網絡的實驗:將其與最新方法進行比較,評估其網絡設計和時間性能,並顯示陰影檢測結果。 在下一部分中,我們將介紹陰影去除網絡的結果和評估。

4.1 Shadow Detection Datasets & Evaluation Metrics

基準數據集。 我們使用兩個基準數據集。 第一個是SBU陰影數據集[23] [61],它是最大的公開註釋的陰影數據集,包含4089個訓練圖像和638個測試圖像,涵蓋了各種場景。 我們採用的第二個數據集是UCF陰影數據集[19]。 繼[32]之後,它包括221個圖像,分爲111個訓練圖像和110個測試圖像。 我們使用SBU訓練集訓練陰影檢測網絡。

評估指標。 我們採用兩個常用指標來定量評估陰影檢測性能。 第一個是準確性指標:

accuracy=TP+TNNp+Nn(10) accuracy = \frac {TP + TN} {N_p + N_n} \tag {10}

其中TPTPTNTNNpN_pNnN_n分別爲預測正確的陰影像素,預測正確的非陰影像素,陰影像素數和非陰影像素數,如第3.2節中所定義。 由於自然圖像中的NpN_p通常比NnN_n小得多,因此我們採用第二種度量標準,即平衡誤差率(BER),通過對陰影和非陰影區域進行同等處理來獲得更加平衡的評估:

BER=(112(TPNp+TNNn))×100(11) BER = (1 - \frac {1} {2} (\frac {TP}{N_p} + \frac{TN}{N_n})) \times 100 \tag{11}

注意,與accuracy 不同,對於BER,其值越低,檢測結果越好。

4.2 Comparison with the State-of-the-art

與最新的陰影檢測方法進行比較。 我們將我們的方法與四種最新的陰影檢測方法進行了比較:scGAN [25],stacked-CNN [23],patched-CNN [33]和UnaryPairwise [28]。 前三種是基於網絡的方法,而後一種是基於手工製作的特徵。 爲了進行公平的比較,我們可以直接從作者那裏獲得結果,也可以通過使用作者使用推薦的參數設置提供的實現生成結果來獲得其陰影檢測結果。

表1報告了比較結果,表明對於基準數據集,我們的方法在準確性和BER方面均優於所有其他方法。我們的陰影檢測網絡使用SBU訓練集[23],[61]進行了訓練,但在UCF數據集上仍然優於其他陰影,從而顯示了其泛化能力。此外,我們在圖6和7中顯示了視覺比較結果,其中顯示了各種具有挑戰性的情況,例如,暗陰影旁邊的淺陰影,複雜背景周圍的陰影以及陰影周圍的黑色物體。如果不瞭解全局圖像語義,就很難找到這些陰影,並且容易將非陰影區域誤識別爲陰影。從結果可以看出,與其他方法相比,我們的方法可以有效地定位陰影並避免誤報,例如,對於被其他人誤認爲陰影的黑色物體,我們的方法仍可以將其識別爲非陰影。

在這裏插入圖片描述

表1:將我們的方法(DSC)與最新的陰影檢測方法(scGAN [25],stacked-CNN [23],patchedCNN [33]和一元對[28])進行顯着性檢測(SRM [58])進行比較 和Amulet [59]),以及語義圖像分割(PSPNet [60])。 注意,由於不同的測試拆分,UCF數據集上的結果與[1]不同。

與最新的顯着性檢測和語義分割方法進行比較。 通過使用帶註釋陰影的數據集訓練網絡,也可以將用於顯着性檢測和語義圖像分割的深層網絡用於陰影檢測。因此,我們使用另一個用於顯着性檢測的最新深度模型(SRM [58]和Amulet [59])和一個用於語義圖像分割的最新深度模型(PSPNet [60])執行另一個實驗。

爲了公平地比較,我們使用作者提供的實現,採用ImageNet [54]上訓練的參數進行分類任務以初始化其模型,在SBU訓練集上對模型進行重新訓練以進行陰影檢測,並調整訓練 參數以獲得最佳陰影檢測結果。 表1中的最後三行報告了準確性和BER指標的比較結果。 儘管這些方法在兩個指標上均取得了良好的結果,但對於兩個基準數據集,我們的方法仍相對於它們表現良好。 請同時參考圖6和7中的最後三列以獲得視覺比較結果。

在這裏插入圖片描述

圖6:通過我們的方法和其他方法(第4至第9列)生產的陰影蒙板與第2列中顯示的真實圖像的視覺比較。 請注意,stkd’-CNN和patd’-CNN分別代表stacked-CNN和patched-CNN。

4.3 Evaluation on the Network Design

組件分析。 我們進行了一項實驗,以評估DSC模塊設計的有效性。 在這裏,我們使用SBU數據集並考慮兩個基準網絡。 第一個基線(表示爲“basic”)是通過從圖2所示的整個網絡中刪除所有DSC模塊而構建的網絡。第二個基線(表示爲“basic+context”)考慮了空間上下文,但忽略了方向-注意權重。 與第一基線相比,第二基線包括所有DSC模塊,但是消除了DSC模塊中的方向感知注意機制,即,無需計算W並直接連接上下文特徵; 參見圖3。這等效於將所有注意權重W設置爲1;否則將其設置爲1。 請參閱有關兩個基準的體系結構的補充材料。

表2報告了比較結果,表明我們的具有多尺度特徵的基本網絡和加權的交叉熵損失可以產生更好的結果。 此外,考慮空間背景和DSC功能可以帶來進一步的改進; 視覺比較結果也請參見圖8。

在這裏插入圖片描述

表2:組件分析。 我們使用SBU訓練集訓練三個網絡,並使用SBU測試集對它們進行測試[23],[61]:“basic”表示圖3所示的體系結構,但沒有所有DSC模塊。 “basic+context”表示具有空間上下文但不具有方向感知的空間上下文的“basic”網絡; “ DSC”是整個網絡,如圖3所示。

在這裏插入圖片描述

圖8:組件分析的視覺比較結果。

DSC體系結構分析。 DSC體系結構分析時,我們遇到了兩個問題。 在使用DSC模塊設計網絡結構時,我們遇到兩個問題:(i)空間RNN中有多少輪遞歸轉換; (ii)在遞歸轉換的不同輪次中是否共享注意力權重或使用單獨的注意力權重。

我們針對這兩個參數修改了我們的網絡,併產生了表3中所示的比較結果。從結果中,我們可以看到進行兩輪遞歸翻譯並在兩輪中共享注意力權重可以產生最佳結果。 當只有一輪遞歸翻譯時,全局圖像上下文無法在空間域上很好地傳播,因此信息交換的數量不足以學習陰影,而將三輪遞歸翻譯與注意權重的單獨副本一起引入 過多的參數使網絡難以訓練。

在這裏插入圖片描述

表3:DSC體系結構分析。 通過更改DSC架構中的參數(請參見下面的第二和第三列),我們可以產生略有不同的總體網絡並探索其性能(請參見最後一列)。

特徵提取網絡分析。 我們還評估了圖2中所示的特徵提取網絡。在這裏,我們使用具有101層的更深層的網絡ResNet-101 [62]來替換隻有16層的VGG網絡。 在ResNet-101中,它具有多層,可生成相同比例的輸出要素圖,我們爲每個比例選擇最後一層的輸出,即res2c,res3b3,res4b22和res5c,以生成DSC特徵,因爲最後一層應具有最強的特徵。 其他網絡部分和參數設置保持不變。

對於VGG網絡和ResNet-101,得出的BER值分別爲5.59和5.73,表明它們具有相似的性能,而VGG的性能稍好。 較深的網絡(ResNet-101)允許生成更強的語義特徵,但是當考慮到有限的GPU內存時,由於特徵圖的尺寸太小,導致細節丟失。

CRF的有效性。 接下來,我們評估CRF [31]作爲後處理步驟的有效性。 “ CRF before”和“ CRF after”的BER值分別爲5.68和5.59,這表明CRF有助於改善陰影檢測結果。 視覺比較結果也請參見圖9。

在這裏插入圖片描述

圖9 CRF的效果

DSC特徵分析。 最後,我們展示了不同方向的空間上下文特徵如何影響陰影檢測性能。 在這裏,通過將左右方向的相關注意力權重設置爲零,在檢測陰影時忽略水平方向上的空間上下文; 參見圖3。類似地,我們通過將上下方向的相關注意權重設置爲零來忽略垂直方向上的空間上下文。 圖10給出了一些結果,表明當僅在垂直/水平方向上使用空間上下文時,我們可能將黑色區域誤識別爲陰影,而錯過了一些不明顯的陰影。 但是,我們的網絡可能無法識別微小的陰影/非陰影區域,因爲由我們的DSC模塊彙總的周圍信息可能覆蓋了原始功能,因此忽略了這些微小區域; 有關更多結果,請參見圖10中的第二行和補充材料。

在這裏插入圖片描述

圖10:陰影檢測的空間上下文效果。 (a)輸入圖像; (b)DSC結果; (c)僅使用垂直方向的空間環境; (d)僅使用水平方向的空間環境。

4.4 Additional Results

更多陰影檢測結果。 圖11顯示了更多結果:(a)暗影彼此相鄰; (b)小而無聯繫的陰影; (c)陰影區域和非陰影區域之間沒有明確的界限; (d)不規則形狀的陰影。 我們的方法仍然可以很好地檢測到這些陰影,但是在某些極其複雜的場景中會失敗:(a)具有許多小陰影的場景(請參見圖13中的第一行),其中深層中的要素會丟失詳細信息,並且淺層中的特徵缺乏陰影上下文的語義; (b)黑色區域較大的場景(參見圖13中的第二行),周圍環境不足以指示它是陰影還是黑色物體; (c)具有柔和陰影的場景(請參見圖13中的第三行),其中柔和陰影區域和非陰影區域之間的差異很小。

在這裏插入圖片描述

圖11:我們的方法產生的更多陰影檢測結果。

時間表現。 由於其全卷積架構和RNN模型的簡單實現,我們的網絡速度很快[50]。 我們在單個GPU(NVIDIA GeForce TITAN Xp)上訓練並測試了用於陰影檢測的網絡,併爲每個圖像使用了400×400的輸入大小。 在SBU訓練集上訓練整個網絡大約需要16.5小時,而測試一張圖像平均需要大約0.16秒。 對於使用CRF [31]的後處理,還需要0.5秒來測試圖像。

5 EXPERIMENTS ON SHADOW REMOVAL

6 CONCLUSION

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章