當前位置:
首頁 > 新聞 > 香港中文大學胡梟瑋:用於陰影檢測的 DSC 特徵

香港中文大學胡梟瑋:用於陰影檢測的 DSC 特徵

雷鋒網AI研習社按:陰影檢測向來是計算機視覺中基礎且富有挑戰性的問題——對於一張輸入圖像,我們通過生成二進位圖像來標記陰影區域,陰影區域的檢測為進一步獲取圖像中的光照情況、物體的形狀與位置,以及攝像機的參數提供了可能。與此同時,陰影的存在也為計算機視覺中進一步理解圖像的演算法,例如物體的檢測與跟蹤,帶來了障礙。

來自香港中文大學的胡梟瑋採用了提取 DSC 特徵的方式來解決這個問題,他在近日的 AI 研習社大講堂上向我們分享了具體操作思路。

分享主題:用於陰影檢測的 DSC 特徵

分享提綱:

陰影檢測相關工作與研究動機

DSC模型介紹

實驗結果與討論

最新工作---陰影去除

雷鋒網AI研習社將其分享內容整理如下:

大家好,我是胡梟瑋,來自香港中文大學。很榮幸能和大家介紹一下我們的工作「Direction-aware Spatial Context Features for Shadow Detection」。這篇文章已經被 CVPR2018 收錄,並做口頭報告 (Oral)。

作為計算機視覺中的基礎問題,最近一些年來,陰影檢測已經被廣泛的研究。

最近的兩個工作是基於深度學習的方法來檢測陰影,目前看來已經達到了比較好的性能,這兩種方法——scGAN 與 stacked-CNN,分別發表在了 2017 年的 ICCV 與 2016 年的 ECCV 上,主要是通過深度神經網路從大量的數據樣本中自動學習特徵,用於檢測陰影區域。

然而,它們仍然可能將黑色的物體誤檢為陰影,或者漏掉一些不太明顯的陰影區域

在這幅漫畫中,左邊的這個人舉著刀子指向右邊的人,可能會讓我們以為左邊的傢伙是一個殺手,但如果我們觀察整幅圖像,就會發現右邊的這個人才是真正的殺手。在同一幅圖畫中,我們看到了兩個完全不一樣的故事。

在檢測陰影區域的時候,我們也面臨類似的問題。

正如這幅圖展示的這樣,如果只從局部區域來判斷它是不是陰影,這個問題是十分困難的。

我們並不知道這個黑色區域到底是一個陰影還是一個黑色物體,所以我們需要通過分析更大的區域或者周圍區域來決定它是否是陰影——換句話說,陰影檢測需要去理解全局圖像的上下文信息

除此之外,我們還需要分析不同方向的上下文信息

如圖所示,當我們比較 A 區域與 B 區域的時候,由於 B 區域要比 A 區域亮許多,給了我們一個很強烈的指示:A 是陰影區域。

可是當我們去比較 C 區域和 A 區域的時候,我們並不能從 C 區域來判斷 A 是不是陰影(C 區域與 A 區域同樣都是陰影,且 C 區域更暗)。所以,為了進一步理解陰影,我們提出從不同方向的上下文特徵來分析圖像。

比如在這幅圖中,陰影投射在不同顏色的背景上面。

如果我們使用之前的方法,位於黃色區域的陰影可能會檢測不到。但是,當我們方向性地分析圖像上下文信息,就可以從圖像的上面或者下面來傳播陰影信息,同時可以使用左邊或右邊的信息來推斷陰影區域。

因此,我們的方法可以有效的檢測到位於黃色區域的陰影。

什麼是 spatial context features?

為了傳播圖像的全局上下文信息,我們使用空間 RNN來獲取空間上下文特徵,該特徵叫做spatial context features。先輸入一張特徵圖(這個特徵圖可以是卷積神經網路中任意的一張特徵圖),再從四個方向獨立的傳播信息,用來獲得局部的空間上下文特徵。

以向右傳播為例,每一個特徵值都會被它左邊的這個值更新。

在這個更新的過程中,信息在整張特徵圖上從左到右傳播(公式中的權值 alpha right 是共享的並且可以自動學習的)。通過聚合四個方向的結果,對於每一個像素點來講,就可以獲得它所在的行和列的信息。

通過兩次這樣的操作,每個像素點就可以得到全局的信息。

具體來說,就是將一個卷積神經網路中的 2D 特徵圖作為輸入,首先經過一個 1 乘 1 的卷積操作,之後是四個方向的 recurrent translation。接著我們將四個結果綜合起來作為中間的特徵圖,然後重複上述過程,最終得到全局的空間上下文特徵。

為了進一步方向性的分析空間上下文特徵,我們採用的是attention 機制,來生成一組權值,並且將他們分成四張權值圖,分別通過點對點的方式,乘上四個方向的空間上下文特徵。

這些權值會在兩次 recurrent translation 中共享(且可以跟整個深度學習網路一起進行訓練),因此,我們可以通過在不同方向上選擇性的使用空間上下文特徵來得到 direction-aware spatial context feature,這個結果我們叫做DSC 特徵

至於獲取該特徵的過程被稱作DSC 模塊

如何訓練網路?

我們將在深度神經網路中採用多個 DSC 模塊:對於一張輸入圖像,首先使用卷積神經網路提取不同解析度下的特徵圖像(「特徵金字塔」),位於低層的特徵圖像解析度高,能夠提取到圖像的細節信息,但是缺乏語義信息;位於高層的特徵圖像解析度低,可以提取到圖像的語義信息,但是缺乏圖像細節信息。

我們將 DSC 模塊應用到每一層特徵圖上,並將得到的 DSC 特徵與原來的特徵相連接,然後放大這些特徵圖像到原圖大小。

這些放大之後的特徵圖像組合為Multi-level integrated features(簡稱為 MLIF),之後我們使用包括 MLIF 特徵在內的每一層特徵來預測陰影區域,最後將每層的預測結果綜合起來,作為網路最終的輸出結果。

整個網路是在 SBU training set 上面訓練的,訓練好的 model 會在 SBU testing set 以及 UCF testing set 上進行測試。

在自然圖像中,陰影區域的面積往往大於非陰影區域的面積,如果我們只是以提高整體的訓練精度為目標,結果會傾向於匹配占的面積大的非陰影區域。

因此,我們設計了weighted cross entropy loss來訓練網路——它由 L1 和 L2 兩部分組成。

L1 用來平衡陰影區域與非陰影區域的比重,如果陰影區域的面積小於非陰影區域,會懲罰誤檢的陰影區域多一些。

L2 幫助網路去學習不容易識別的類型(這裡主要指陰影或非陰影)。如果正確識別的陰影區域較小,那麼他的損失函數的權值就會變大,反之亦然。

在測試過程中,我們使用 MLIF 層以及 fusion 層的均值作為最後的結果。並且使用 CRF 作為後處理,用來改進檢測到的陰影區域的邊界。

這裡是我們的方法與最新的兩個陰影檢測方法的比較結果

可以看到,我們的方法在兩個陰影檢測數據集上都取得了最好的效果。

陰影檢測效果展示

接下來,我來展示一些視覺比較結果。

圖中從左到右分別對應:輸入圖像,ground truth(人工標註的數據),我們的結果,以及其他方法的結果。

可以看到,我們的方法能夠有效的識別出黑色的物體,同時檢測到位於不同顏色的背景上面的陰影,相比之下,其他方法可能會失敗。

這是另一組比較結果。

通過方向性的分析圖像上下文特徵,我們的方法可以區分出黑色的桶與陰影區域,以及減少漏檢區域等等。

這是一個評價網路設計的實驗。

圖中 Basic 指的是去除掉所有 DSC 模塊的網路,而 basic + context 則指考慮上下文信息,但忽略掉不同方向上下文的影響。

可以看出,通過考慮 DSC 特徵,能夠有效的提高檢測精度。

這裡展示一下更多的陰影檢測結果。

圖 A 中的陰影投射到不同顏色的背景上面;圖 B 有一些小且零碎的陰影;圖 C 中陰影區域與非陰影區域的邊界不清晰;圖 D 是一些不規則的陰影。

這些陰影通過我們的方法可以比較準確地檢測出來。

然而,該方法在一些情況下可能會失效。

比如,第一幅圖擁有許多小的陰影區域;第二幅圖擁有一塊大的深色區域,然而缺少上下文信息;第三張圖主要是 soft shadow,它與非陰影區域的差別不是很大.

陰影去除機制

近期我們將網路用於陰影去除,在兩個陰影去除數據集上取得了最好的效果。

為了將該網路用於陰影去除,我們先讓網路預測 shadow-free image(去除掉陰影的圖像),再接著用 Euclidean loss 訓練整個網路。

同時,我們發現在現有的陰影去除數據集當中,輸入圖像與 ground truth 的非陰影區域存在顏色和亮度不一致的問題

為了準備陰影去除的訓練數據,人們通常會先對有陰影的場景拍一張照片,然後拿掉產生陰影的物體,再拍一張照片。在這兩次拍照的過程中,環境光照與照相機的曝光參數都可能會發生變化,導致訓練樣本的顏色與亮度不完全一致。

這兩張圖是分別從 SRD 和 ISTD 兩個公開數據集中找的樣本,可以從顏色直方圖中清楚看到輸入圖像與 ground truth 之間的偏差。

現有的基於深度神經網路的方法,會去學習匹配 ground truth,因此,如果直接用這些圖像去訓練,網路可能會生成有顏色偏差的圖像。

為了解決這個問題,我們設計了顏色補償機制——對於一組訓練樣本,我們通過最小化輸入圖像與 ground truth 非陰影區域的誤差,來學習一個顏色轉換函數,然後將這個函數應用到整幅 ground truth 圖像上面來調整顏色誤差。

在實驗中我們發現,只要使用簡單的線性函數就可以學習的很好(該函數在公式中用 Tf 表示),也就意味著我們可以使用最小二乘法計算函數中矩陣 M alpha 的參數。

圖中的 R,g,b 分別對應圖像的紅綠藍三個通道的顏色值。

實際上每張訓練樣本都有一個轉換函數,由於每張拍攝樣本的偏差可能都不一樣(每張樣本都有各自的顏色轉換函數),所以我們將學到的顏色轉換函數應用到原始的 ground truth 上,就可以得到與輸入圖像非陰影區域的顏色亮度相匹配的結果。

我們分別在 SRD 與 ISTD 上訓練與測試網路,並且通過計算整幅圖像(包含陰影區域與非陰影區域)的 Euclidean loss 來優化整個網路。

在測試的過程中,我們採用 MLIF 與 fusion 層結果的平均值作為最終結果

陰影去除效果展示

接下來我會展示一些視覺比較結果。

第一行,從左到右分別對應的是:輸入圖像、ground truth、DSC(我們的結果)、DSC+以及其他方法的結果。其中 DSC+是用調整之後(顏色轉換函數)的訓練樣本訓練的,而 DSC 則是使用原始的訓練樣本訓練網路。

第二行則是:每張圖片(紅色)與輸入圖像(藍色)的顏色直方圖對比。可以看到,DSC+可以生成和輸入圖像顏色與亮度更匹配的結果。而 DSC 以及 ST-CGAN 這些基於深度神經網路的方法,直接用原始的 ground truth 訓練,生成的圖像與原始的 ground truth 更接近,與輸入圖像存在顏色偏差。

第三行是另一組結果。

可以看到,我們方法能夠有效的去除陰影,同時保留非陰影區域的顏色。

這是在另一個數據集上面的測試結果,相比之下,其他方法可能會改變非陰影區域的顏色,或者不能有效去除陰影區域。

然後我們比較了 DSC 與 DSC+和原始的 ground truth (In) 與調整之後的 ground truth (Tf(In)) 的數值結果。

可以看到,DSC+能夠明顯減少與調整後沒有陰影的圖像的誤差

我們繼續來看更多展示結果。

我們的方法可以去除在不同背景上的陰影區域(如圖 AB),也可以去除如圖 C 中牆磚上不規則形狀的陰影,以及圖 D 中複雜背景下的陰影

然而,我們的方法可能也會不小心去除黑色瓷磚上的顏色,因為周圍的上下文無法提供有效的信息,讓它判斷黑色區域究竟是物體還是陰影。同時由於缺少足夠信息,該方法也不能夠恢復包包原本的顏色。

或者我們需要更多的訓練樣本來解決這些問題。

總的來說,在這項工作中,我們通過方向性地分析圖像空間上下文信息來進行陰影檢測與去除,並在兩個陰影檢測數據集以及兩個陰影去除數據集上都達到了頂尖的性能。

以上就是本期嘉賓的全部分享內容。更多公開課視頻請到雷鋒網AI研習社社區(https://club.leiphone.com/)觀看。關注微信公眾號:AI 研習社(okweiwu),可獲取最新公開課直播時間預告。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

剛剛,歐盟對谷歌開出 338 億元天價罰單
通過高效信息傳播來提升深度神經網路的學習效率

TAG:雷鋒網 |