ABSTRACT
如何恢復背光圖像仍然是一項具有挑戰性的任務。該領域最先進的方法基于監督學習,因此通常僅限于特定的訓練數據。在本文中,我們提出了一種用于背光圖像恢復的“零樣本”方案,該方案利用深度學習的力量,但不依賴于任何先前的圖像示例或先前的訓練。具體來說,我們在測試時訓練一個小型圖像特定 CNN,即 ExCNet(曝光校正網絡的縮寫),以估計最適合測試背光圖像的“S 曲線”。一旦估計出S曲線,就可以直接恢復測試圖像。 ExCNet 可以適應每個圖像的不同設置。這使得我們的方法廣泛適用于不同的拍攝場景和各種背光條件。對 1512 個真實背光圖像進行的統計研究表明,我們的方法可以大幅優于競爭對手。據我們所知,我們的方案是第一個基于 CNN 的無監督背光圖像恢復方法。為了使結果可重現,源代碼可從 https://cslinzhang.github.io/ExCNet/ 獲取。
1 INTRODUCTION
拍攝圖像時,最令人討厭的不良照明條件之一是背光。盡管大多數現代成像傳感器可以根據拍攝目標的光照條件自動調整相關硬件參數(如光圈、快門速度和電子增益[24]),但在大多數逆光條件下仍然無法獲得滿意的結果案例。解決這個問題的一種可能方法是使用 HDR(高動態范圍)成像技術 [5]。然而,HDR只能用于逆光下的圖像采集,無法幫助恢復現有的劣質逆光圖像。
在這項工作中,我們研究了背光圖像恢復問題,并引入了一種“零樣本”方案,即 ExCNet(曝光校正網絡的縮寫)。 “零樣本”是指 ExCNet 不需要事先訓練。 ExCNet 是一種專門設計的 CNN(卷積神經網絡),可以直接估計給定背光圖像的最佳擬合 S 曲線 [2, 28]。通過其S曲線,可以相應地恢復背光圖像。在圖 1 中,我們展示了 4 個典型的背光圖像以及 ExCNet 的恢復結果。可以看出,所提出的方法對于恢復質量較差的背光圖像具有很強的能力。
1.1 Related Work
實際上,可以探索傳統的圖像增強方法[8,13,19,21,30]來增強背光圖像,但在大多數情況下其效果相當有限。還有一些專門為恢復背光圖像而設計的啟發式方法。在[22]中,Safonov 提出了一種基于對比度拉伸和初始圖像亮度的 alpha 混合以及反射率估計的方法。在[25]中,Tsai和Yeh首先通過簡單的亮度通道閾值檢測背光區域,然后線性拉伸檢測到的背光區域。李等人[15]通過引入四叉樹生長和引導過濾來完善Tsai和Yeh的想法[11]。在[12]中,Im等人的方法首先使用暗通道先驗[10]提取曝光不足的區域,然后執行空間自適應對比度增強。在[28]中,Yuan和Sun通過基于區域的區域級最佳曝光評估來估計圖像特定的S曲線。他們將最佳區域估計表述為圖標記問題,并通過強力搜索策略來解決它。后來,作者將他們的工作擴展到糾正曝光不良的視頻序列 [6]。
背光圖像恢復方法的另一個分支是基于機器學習理論。在[4]中,戴爾等人首先建立了一個包含100萬張圖像的數據庫。給定要恢復的輸入圖像,他們的系統執行視覺搜索以查找數據庫中最接近的圖像;這些圖像定義了輸入的視覺上下文,可以進一步利用它來實例化恢復操作。在[14]中,Kang等人構建了一個數據庫,其中存儲描述訓練圖像的特征向量以及增強參數的向量。給定測試圖像,然后在數據庫中搜索最佳匹配圖像,并使用相應的增強參數來執行增強。遵循 Kang 等人的想法 [14],Bychkovsky 等人[1] 構建了一個包含 5000 個示例輸入輸出圖像對的數據集,可用于學習全局色調調整。在[16]中,Li和Wu提出了一種兩階段管道,它對背光和前光區域執行對象引導分割,然后進行空間自適應色調映射。
1.2 Our Motivations and Contributions
我們發現使用機器學習工具來解決背光圖像恢復問題是最近的趨勢,也是一個有前途的方向。然而,應該注意的是,該領域現有的解決方案[1,3,4,14,16,27]都是基于監督學習框架,因此它們的性能高度依賴于訓練數據集。事實上,對于背光圖像恢復問題,如何收集足夠有效的訓練數據本身就是一項具有挑戰性的任務。因此,這些基于監督學習的方案通常在滿足訓練條件的測試圖像上表現良好;相反,一旦這些條件不滿足,它們的性能就會顯著惡化。這促使我們思考:是否可以從逆光圖像中學習曝光校正模型來恢復自身?如果“是”,學習的模型將是特定于圖像的,并且該方法本身可以適應未見過圖像的不同設置。實際上,僅從測試圖像本身學習恢復模型的想法在圖像超分辨率領域已被證明是可行的[23]。在[23]中,Shocher 等人提出了一種超分辨率模型,這是一種特定于圖像的 CNN,僅在從低分辨率測試圖像中提取的內部示例上進行訓練。在處理現實世界的低分辨率圖像時,Shocher 等人的方法大大優于其競爭對手。
因此,在本文中,受 Shocher 等人在超分辨率領域工作成功的啟發,提出了一種用于背光圖像恢復的“零樣本”方案。 “零樣本”一詞是從識別領域借用的,這里用來強調我們的方法不需要事先的圖像示例或事先的訓練。我們的主要貢獻總結如下。
(1)我們方法的核心是一個專門設計的CNN,即ExCNet(曝光校正網絡)。給定測試背光圖像 I,ExCNet 可以在有限的迭代時間內估計最適合 I 的參數“S 曲線”。憑借它的S曲線,I可以直接恢復。據我們所知,我們的工作是第一個自動校正圖像曝光的無監督學習框架。它可以輕松應用于不同曝光級別下各種內容的圖像。
(2)在設計ExCNet時,一個關鍵問題是如何設計一個可以評估圖像曝光不良程度的損失函數。為此,在MRF(馬爾可夫隨機場)[17]公式的推動下,我們設計了一種基于塊的損失函數,該函數傾向于最大化所有塊的可見性,同時保持相鄰塊之間的相對差異。實驗表明,設計的損失函數可以指導ExCNet獲得高視覺質量的恢復結果。當多種競爭方法的結果呈現在他們面前時,人們更傾向于選擇我們方法的輸出。
(3)由于ExCNet的CNN結構,我們的方法可以學習圖像與其最佳“S曲線”參數之間的映射關系。因此,隨著處理圖像的增加,ExCNet在面對未見過的圖像時需要更少的迭代次數來收斂到優化曲線。此外,在處理視頻流時,后續幀的校正可以由先前幀的參數來指導,這不會導致像[28]那樣的明顯的閃爍偽影,并且計算成本相對較低。
2 S-CURVE
大多數攝影師經常使用S形非線性曲線,即S曲線,通過照片編輯軟件手動調整照片中陰影/中調/高光區域的曝光度[2]。 S 曲線可以將輸入電平映射到所需的輸出電平。典型的S曲線圖如圖2所示。圖的橫軸代表原始圖像值,縱軸代表新的調整值。調整圖像時,圖表的右上區域代表高光,左下區域代表陰影。
正如[28]中所建議的,S曲線可以簡單地用兩個參數來參數化,即陰影量 和高光量
?,因此它可以表示為:
3 EXCNET: AN UNSUPERVISED CNN-BASED APPROACH TO ESTIMATE THE S-CURVE
這里詳細介紹了我們提出的背光圖像恢復方法 ExCNet。 ExCNet實際上是一個CNN,旨在從輸入圖像I的亮度通道估計最佳S曲線。利用估計的S曲線,可以相應地恢復I。 ExCNet的結構如圖3所示。為了更好地理解它,ExCNet的每次訓練迭代在概念上可以被認為有兩個階段,使用中間S曲線調整
并導出損失。這兩個階段的詳細內容將在 3.1 和3.2節給出。實施細節將在3.3給出。
3.1 Adjusting
Using the Intermediate S-curve
3.2 Deriving the Loss
3.3 Implementation Details
ExCNet 可以被認為是一種無監督學習方法。也就是說,在處理一些圖像后,ExCNet可以逐步學習捕獲圖像色調信息的能力。當處理即將到來的圖像時,這種預先訓練的 ExCNet 的收斂速度比隨機初始化的對應圖像快得多。因此,在我們的實現中,我們準備了 50 張背光圖像并使用 ExCNet 來估計它們的最佳 S 曲線。最終權重被保存并用于隨后處理新圖像時初始化 ExCNet。
4 BACK-LIT IMAGE RESTORATION USING EXCNET
值得一提的是,我們在實現中還考慮了細節保留。我們首先使用引導濾波器[11]將每個輸入圖像分離為基礎層和細節層,然后使用估計的S曲線來調整基礎層。最后,我們采用韋伯對比度[26]來融合細節層和調整后的基礎層。
我們的硬件平臺是一個配備 3.0GHZ Intel Core i7-5960X CPU 和 Nvidia Titan X GPU 卡的工作站。該方法使用Python和TensorFlow實現。我們的方法處理一張 4032 × 3024 圖像大約需要 1.0 秒。
5 EXPERIMENTAL RESULTS
6 CONCLUSION
背光圖像修復具有重要的實際意義,但尚未得到很好的解決。本文提出了一種“零樣本”背光圖像恢復方案,該方案利用深度學習的力量,無需依賴任何外部示例或事先訓練。這是通過一個小型的特定于圖像的 CNN(即 ExCNet)實現的,它通過最小化在中間恢復結果上定義的基于塊的損失函數來指導恢復進度。所提出的方案簡潔而強大。它非常穩健,因此可以在不同類型的照明條件下產生令人滿意的結果。綜合進行了主觀和客觀評估,以證實所提出的方法相對于其他主流競爭對手的優越性。據我們所知,這是第一個基于 CNN 的無監督背光圖像恢復方法。