文章概述
這篇文章來自 ACM MM 2019。本文建立了一個簡單而有效的點燃黑暗(表示為 KinD)的網絡,它受 Retinex 理論的啟發,將原始圖像分解為反射率和光照兩個部分,其中光照負責光的調節,而反射率負責去除退化。通過這種方式,原始空間被解耦成兩個較小的子空間,期望得到更好的學習。整個網絡由兩個組件組成,分別用於處理反射率和光照。從功能上看,還可以分為圖層分解、反射率恢復、光照調節三個模塊。其中層分解網絡包含兩個分支,分別對應於反射率和光照,反射率分支采用經典的5層 U-Net,之后是卷積層和 Sigmoid 層;光照分支由兩個 conv+ReLU 層和一個 conv 組成,它們連接在來自反射率分支的特征圖上,最后是一個 Sigmoid 層。
層分解網絡利用 Retinex 理論,將輸入圖像分解為反射率和光照;光照調節網絡可以通過參數 α 靈活調整亮度,輸出調整后的光照分量;反射率恢復網絡負責將之前分解網絡得到的反射率分量和光照調節網絡的輸出結合,得到最終的增強圖像。
網絡使用 paired 數據集,輸入兩張曝光不同的同場景照片,但是並不是以正常曝光的照片作為 ground truth,而是以正常曝光照片的反射率分量作為 ground truth。根據 Retinex 理論,一張圖片可以分成反射率分量和光照分量兩部分,不同曝光的圖片如果不考慮退化(噪聲、顏色失真等),則兩者的反射率分量應該相同,不同的是光照分量,所以作者使用正常曝光圖片的反射率分量作為 ground truth。
同時,作者在不同的網絡部分中,使用了不同的組合的 loss,如 MSE loss、SSIM loss 等。實驗證明,論文的結果在視覺上和定性定量的實驗上,都取得了 SOTA 的效果。
項目地址:https://github.com/zhangyhuaee/KinD。
一、摘要
在弱光條件下拍攝的圖像通常(部分)能見度較差。除了不滿意的光線,多種類型的退化,如噪音和顏色失真,由於相機的質量有限,這些退化隱藏在黑暗中。換句話說,僅僅提高黑暗區域的亮度將不可避免地放大隱藏的退化。這項工作建立了一個簡單而有效的點燃黑暗(表示為 KinD)的網絡,它受 Retinex 理論的啟發,將圖像分解為兩個組件。一個組件(光照)負責光的調節,而另一個組件(反射率)負責去除退化。通過這種方式,原始空間被解耦成兩個更小的子空間,期望得到更好的正則化/學習。值得注意的是,我們的網絡是通過在不同曝光條件下拍攝的成對圖像進行訓練的,而不是使用任何地面實況反射率和光照信息。我們進行了大量的實驗來證明我們的設計的有效性和它優於最先進的技術。我們的產品可以抵抗嚴重的視覺缺陷,並且用戶可以任意調節光線的亮度。此外,我們的模型在 2080Ti GPU 上處理 VGA 分辨率的圖像花費不到 50ms。以上優點使我們的產品具有實用價值。
二、引言
在昏暗的光線條件下捕捉高質量的圖像一直都是一個挑戰。雖然一些操作,如設置高 ISO,長曝光和閃光燈,可以適用於這種情況,但他們有不同的缺點。例如,高 ISO 增加了圖像傳感器對光的靈敏度,但噪聲也會被放大,從而導致低信噪比。長時間曝光僅限於拍攝靜態場景,否則很可能會遇到模糊的結果。使用閃光燈可以在某種程度上照亮環境,然而,這經常會給照片帶來意想不到的光暈和光線不平衡問題,讓照片看起來很不舒服。在實踐中,因為拍照工具有限,普通用戶甚至可能沒有上述選項和有限的攝影工具,例如嵌入便攜式設備中的相機。雖然在過去的幾年里,低光圖像增強一直是一個長期存在的問題,並取得了很大的進展,但開發一個實用的低光圖像增強器仍然具有挑戰性,因為如何靈活地照亮黑暗,有效地消除退化,以及如何提高效率都是需要考慮的問題。
基於深度學習的方法在去噪、超分辨率等數值底層視覺任務中表現優異,但其中大部分都需要訓練數據包含 ground-truth。對於特定問題,比如低光圖像增強,雖然可以確定光強的大小順序,但是不存在 ground-truth 真實數據。因為,從用戶的角度來看,不同的人/需求所喜歡的光照等級可能是多種多樣的。換句話說,一個人不能說什么光的條件是最好的/最真實的。因此,僅將圖像映射到具有特定光線水平的版本並不是很合適。
(1)低光圖像增強面臨的挑戰
如何從單個圖像中有效地估計出光照分量,並靈活地調整光照?
如何在照亮黑暗區域后去除之前隱藏在黑暗中的噪聲和顏色失真等退化?
如何訓練一個模型,在沒有明確的 ground-truth 條件,只看兩個/幾個不同的例子情況下增強低光圖像?
(2)主要貢獻
受 Retinex 理論的啟發,該網絡將圖像分解為反射率和光照兩部分,將原空間解耦為兩個較小的空間。
該網絡使用在不同光/曝光條件下捕獲的成對圖像進行訓練,而不是使用任何 ground-truth 反射率和光照信息。
我們設計的模型提供了一個映射功能,可以根據用戶的不同需求靈活地調整光線的等級。
該網絡還包括一個模塊,能夠有效地去除通過亮暗區域放大的視覺缺陷。
我們進行了大量的實驗,以驗證我們的設計的有效性和它的優越性,可以替代目前最先進的技術。
三、方法
一個理想的低光圖像增強器應該能夠有效地去除隱藏在黑暗中的退化,並靈活地調整光照/曝光條件。我們建立一個深層的網絡,用 KinD 來表示,來達到這個目的。如圖所示,網絡由兩個分支組成,分別用於處理反射率和光照。從功能上看,也可以分為圖層分解、反射率恢復、光照調節三個模塊。
(1)層分解網絡
在 Retinex 理論中,I=R ◦L,分解網絡將原始輸入圖像 I 分解成反射分量 R 和光照分量 L,同時假定,在不考慮圖片退化(噪聲、顏色失真)情況下,相同場景下的不同曝光的圖片的 R 應該相同,所以通過分解網絡輸出的 low reflectance 作為恢復網絡的輸入,用來生成增強圖片,而 high reflectance 用作 ground-truth,有監督地同恢復網絡的輸出圖片計算 loss。
分解網絡包含兩個分支,分別對應反射率和光照。反射率分支采用典型的5層 U-Net,之后是一個 conv 層和一個 Sigmoid 層。光照分支是由兩個 conv+ReLU 層和一個 conv 層組成,它們連接在來自反射率分支的特征圖上,最后是一個 Sigmoid 層。
其總 loss 為:
reflectance similarity loss:是 low/high reflectance maps 保持一致
illumination smoothness loss:對於 I 中邊緣,L 的懲罰很小;而對於 I 中 smooth 的位置,懲罰變得很大
mutual consistency
reconstruction error loss
(2)反射率恢復網絡
低光圖像的反射率分量比正常圖片的反射率分量要差很多,所以這里需要用正常圖片的反射率分量作為監督,計算損失來約束,同時也需要光照分量提供指導,最終增強圖片。
其損失為
(3)光照調節網絡
參數 α 用來調整 illumination maps 的亮度,通過(Lt / Ls)再算平均,得出。t 為 target,s 為 source;當 α> 1時,增亮,α 小於 1 時變暗。最關鍵的是,這里的參數 α 是可以自己設定的,即想要多亮就要多亮,非常靈活。同時不得不說的是,實際上 α 在網絡中實際上是一張 feature map,加權到原有的 illumination maps 上。整個網絡非常簡單,3層 conv layers 還有一個 sigmoid layer 組成,loss 為