low-light圖像增強論文Kindling the Darkness: A Practical Low-light Image Enhancer翻譯與解讀

本文來自ACM MM 2019,作者:Yonghua Zhang, Jiawan Zhang, and Xiaojie Guo
項目地址:https://github.com/zhangyhuaee/KinD

Abstract

在弱光條件下拍攝的圖像通常(部分)能見度較差。除了不理想的照明,多種類型的退化,如噪音和顏色失真,由於相機的質量有限,這些退化隱藏在黑暗中。換句話說,僅僅提高黑暗區域的亮度將不可避免地放大隱藏的退化。這項工作建立了一個簡單而有效的點燃黑暗的網絡(表示爲kindling),它的靈感來自視retinex理論,將圖像分解成兩個部分。一個組件(照明)負責光的調節,而另一個組件(反射率)負責退化去除。通過這種方式,原始空間被解耦爲兩個更小的子空間,期望得到更好的正則化/學習。值得注意的是,我們的網絡是通過在不同曝光條件下拍攝的成對圖像進行訓練的,而不是使用任何地面實況反射率和光照信息。我們進行了大量的實驗來證明我們的設計的有效性和它優於最先進的技術。我們的產品可以抵抗嚴重的視覺缺陷,並且用戶可以任意調節光線的亮度。此外,我們的模型在2080Ti GPU上處理VGA分辨率的圖像花費不到50ms。以上優點使我們的產品具有實用價值。

1 INTRODUCTION 

在昏暗的光線條件下捕捉高質量的圖像一直都是一個挑戰。雖然一些操作,如設置高ISO,長曝光和閃光燈,可以適用於這種情況,但他們有不同的缺點。例如,高ISO增加了圖像傳感器對光的靈敏度,但噪聲也會被放大,從而導致低信噪比。長時間曝光僅限於拍攝靜態場景,否則很可能會遇到模糊的結果。使用閃光燈可以在某種程度上照亮環境,然而,這經常會給照片帶來意想不到的光暈和光線不平衡問題,讓照片看起來很不舒服。在實踐中,因爲拍照工具有限,普通用戶甚至可能沒有上述選項,例如嵌入便攜式設備中的相機。在過去的幾年裏,低光圖像增強一直是一個長期存在的問題,並取得了很大的進展,但開發一個實用的低光圖像增強器仍然具有挑戰性,因爲靈活地照亮黑暗,有效地消除退化,高效這些問題都應該被考慮到。

圖1提供了在具有挑戰性的光照條件下拍攝的三張自然圖像。具體來說,第一種情況是極低的光。嚴重的噪音和顏色失真隱藏在黑暗中。通過簡單地放大圖像的強度,退化就會顯示在右上角。第二張照片是在日落時拍攝的(微弱的環境光),大多數物體都背光。中午對着光源(太陽)成像也很難擺脫像第二種情況那樣的問題,儘管周圍的光線更強,場景更清晰可見。請注意,最後兩張照片中那些相對明亮的區域直接放大會導致飽和。

基於深度學習的方法在去噪、超分辨率等數值底層視覺任務中表現優異,但其中大部分都需要訓練數據包含地面實況。對於特定問題,比如低光圖像增強,雖然可以確定光強的大小順序,但是不存在ground-truth真實數據。因爲,從用戶的角度來看,不同的人/需求所喜歡的光照等級可能是多種多樣的。換句話說,一個人不能說什麼光的條件是最好的/地面實況。因此,僅將圖像映射到具有特定光線水平的版本並不是很合適。

基於以上分析,我們總結了低光圖像增強的挑戰如下:
如何從單個圖像中有效地估計出光照分量,並靈活地調整光照?
如何在照亮黑暗區域後去除之前隱藏在黑暗中的噪聲和顏色失真等退化?
如何訓練一個模型,在沒有明確的地面真相光條件,只看兩個/幾個不同的例子情況下增強低光圖像?

在本文中,我們提出了一種深度神經網絡來同時考慮上述問題

1.1 Previous Arts

已經提出了大量的低光圖像增強方案。在接下來的文章中,我們將簡要回顧與我們密切相關的經典和最近的作品。

Plain Methods

普通方法:直觀地說,對於全局光線較弱的圖像,可以通過直接放大亮度來增強其可視性。但是,如圖1的第一種情況所示,包括噪聲和顏色失真在內的視覺缺陷沿着細節顯示出來。對於包含明亮區域的圖像,例如圖1中的最後兩張,這種操作很容易導致(部分)飽和/過度曝光。以直方圖均衡化及其後續爲代表的技術,試圖將值範圍映射到[0,1],並平衡輸出直方圖,以避免截斷問題。這些方法實際上是爲了提高圖像的對比度。另一種映射方式是伽馬校正(GC),它以非線性的方式在每個像素上單獨執行。雖然GC可以提高亮度,尤其是暗像素的亮度,但是它沒有考慮到某個像素與其相鄰像素的關係。普通方法的主要缺點是它們幾乎不考慮真實的光照因素,這通常使增強的結果在視覺上很不穩定,並且與真實場景不一致。

Illumination-based Methods

基於亮度的方法:與普通方法不同的是,這類方法都意識到光照的概念。由retinex理論得到的關鍵假設是(彩色)圖像可以分解成兩個部分,即反射率和照度。早期的嘗試包括單尺度Retinex (SSR)和多尺度Retinex (MSR)。但受限於生成最終結果的方式,他們的輸出通常看起來不自然,而且在某些地方過度增強。Wang等人提出了一種名爲NPE[9]的方法,它可以同時增強對比度,保持照度的自然。Fu等人開發了一種方法[10],該方法通過融合初始估計光照圖的多重導數來調整光照。然而,這種方法有時會犧牲那些包含豐富紋理的區域的真實感。Guo等人着重於從初始圖像[11]估計結構化光照圖。這些方法通常假定圖像是無噪聲和無顏色畸變的,並且沒有明確考慮圖像的退化。在[12]中,爲了獲得更好的反射率和光照層,設計了一種用於同時進行反射率和光照估計的加權變分模型(SRIE),然後通過控制光照生成目標圖像。在[11]之後,Li等人進一步引入了一個額外的式子來表示噪聲[13]。雖然[12]和[13]都能抑制圖像中的微小噪聲,但它們在處理顏色失真和較大噪聲方面能力不足。

Deep Learning-based Methods

隨着深度學習的出現,一些底層的視覺任務從深度模型中受益,如去噪、超分辨率、壓縮僞影去除、去霧。針對本文的目標任務,在[19]中提出的低光網絡(low-light net, LLNet)構建了一個深度網絡,作爲同時進行對比度增強和去噪的模塊。Shen等人認爲多尺度retinex相當於具有不同高斯卷積核的前饋卷積神經網絡。受此啓發,他們構建了卷積神經網絡(MSR-net)[20]來學習暗圖像和亮圖像之間的端到端映射。Wei等人設計了一個深度網絡,稱爲RetinexNet[21],它集成了圖像分解和光照映射。請注意,Retinex-Net額外使用了一個現成的去噪工具(BM3D[22])來使反射率組件的輸出更清晰。這些策略都假設存在具有“地面實況”光的圖像,而沒有考慮到噪聲對具有不同光的區域的不同影響。簡單地說,在提取光照因子後,暗區在反射率上的噪聲水平要比亮區高得多。在這種情況下,採用/訓練具有在圖像(反射率)上均勻處理的去噪器不再適用。此外,上述方法並沒有明確處理彩色失真的退化問題,但這在真實圖像中並不少見。最近,Chen等人提出了一種基於全卷積網絡[23]端到端訓練的低光圖像處理管道(SID),可以同時處理噪聲和顏色失真。然而,這項工作是針對raw格式的數據的,限制了其適用的場景。如[23]中所述,如果修改網絡以接受JPEG格式的數據,性能會顯著下降。

現有的大多數方法有通過伽瑪校正來調整光照、指定一個存在良好光照圖像的精心構造的訓練數據(low-groudtruth圖像對數據)、或者利用融合技術。對於伽瑪校正,它可能無法反映不同的光(曝光)水平之間的關係。(參數的實際意義不明顯)至於第二種方式,需要嚴格限制在指定的光照水平圖像包含在訓練數據中。而對於最後一個,它甚至不提供操作選項。(沒辦法調節光照)因此,需要學習一種映射函數,可以任意將一種光(曝光)級轉換爲另一種光(曝光)級,爲用戶提供靈活的調節。

Image Denoising Method

在圖像處理、多媒體和計算機視覺領域,圖像去噪一直是一個熱門話題,在過去的幾十年裏提出了無數的技術。經典的模型/正則化問題利用一些自然清潔圖像的特定先驗,如非局部自相似,分段平滑性、信號(表示)稀疏性等。最受歡迎的方案可能是BM3D[22]和WNNM[24]。由於測試優化過程的高度複雜性和合適參數的搜索空間大,這些傳統方法在實際應用中往往表現出不理想的性能。近年來,基於深度學習的去噪器在去噪任務上顯示出了優越性。有代表性的SSDA使用棧式稀疏去噪自動編碼器[25],[26],TNRD使用可訓練的非線性反應擴散[27],DnCNN使用殘差學習和批量歸一化[15],僅在測試階段進行前饋卷積運算,節省了計算量。然而,這些深度模型仍然存在圖像去噪的盲目性。可以針對不同的層次訓練多個模型,也可以訓練一個具有大量參數的模型,這在實踐中顯然是不靈活的。通過在任務中考慮循環思想,這個問題得到了緩解。但是,上述方法都沒有考慮到光照增強圖像的不同區域承載不同級別的噪聲。(暗處和亮處的噪聲分佈是存在極大差異的)同樣的問題也發生在顏色失真上。

1.2 Our Contributions 

該研究爲實際解決低光增強問題提供了一個深度網絡。這項工作的主要貢獻可以總結爲以下幾個方面:
受視神經網絡理論的啓發,該網絡將圖像分解爲反射率和照度兩部分,將原空間解耦爲兩個較小的空間。
該網絡使用在不同光/曝光條件下捕獲的成對圖像進行訓練,而不是使用任何地面真實反射率和照明信息。
我們設計的模型提供了一個映射功能,可以根據用戶的不同需求靈活地調整光線的等級。
該網絡還包含一個模塊,能夠有效地去除通過亮暗區域放大的視覺缺陷。
我們進行了大量的實驗,以證明我們的設計的有效性和它的優越性,可以替代目前最先進的技術。

2 METHODOLOGY 

一個理想的低光圖像增強器應該能夠有效地去除隱藏在黑暗中的退化,並靈活地調整光照/曝光條件。我們建立一個深層的網絡,用KinD來表示,來達到這個目的。如圖2所示,網絡由兩個分支組成,分別用於處理反射率和照明。從功能上看,也可以分爲圖層分解、反射率恢復、光照調節三個模塊。在接下來的小節中,我們將解釋關於網絡的細節。

2.1 Consideration & Motivation

2.1.1 Layer Decomposition 

正如第1.1節所討論的,普通方法的主要缺點來自於光照的盲目性。因此,獲取光照信息是關鍵。如果從輸入中很好地提取了光照,剩下的部分將保存細節信息和可能的退化,在這些信息中可以執行恢復(或降解去除)。在retinex理論中,一幅圖像I可以被看作是兩個成分的合成,即反射率R和照度L,I = R◦L,其中◦爲元素級別的操作。此外,以Retinex的方式分解圖像,從而將一個退化的低光圖像映射到兩個更小的子空間,期望更好和更容易正則化/學習。此外,照明圖是靈活調整光照/曝光條件的核心。在此基礎上,提出了基於retinex的層分解方法,該方法適用於目標任務。

2.1.2 Data Usage & Priors

在光照條件下,沒有明確定義的地面實況。(主管意向)此外,真實圖像的地面真實反射率和照度圖是很難獲得的。層分解問題本質上是欠定的,因此附加的先驗/正則因子很重要。假設圖像沒有退化,某個場景的不同鏡頭應該具有相同的反射率。(物體對光的反射是固有屬性,不因光照變化而變化)光照圖雖然可以強烈地變化,但其結構簡單且相互一致。(脫離物體反射,光照確實應該是分佈簡單的)在實際情況下,在低光圖像中體現的退化往往比在明亮的圖像中更嚴重,這將被轉移到反射率組成部分。這啓發我們,在明亮光照下的反射可以作爲參考(地面實況),爲退化的低光圖像訓練一個修復器。有人可能會問,爲什麼不使用合成數據呢?因爲它很難合成。這種退化不是簡單的形式,並且隨着傳感器的不同而變化。請注意,反射率(定義良好的)的使用完全不同於使用(相對)明亮的圖像作爲低光圖像的參考。

2.1.3 Illumination Guided Reflectance Restoration 

在分解後的反射率中,光照較暗區域的污染要大於光照較亮區域的污染。從數學角度來看,一個退化的低光圖像可以自然地建模爲I = R◦L + E,其中E表示污染的組成部分。通過簡單的代數步驟,我們有:


˜R代表被污染的反射率,˜E是退化光照解耦。加性高斯白噪聲的E∼N(0,σ2),˜E的分佈更加複雜而且顯著與L相關。這是說,反射恢復處理不能均勻的在整個圖像上進行,可以用光照映射作爲指導。有人可能會問,如果直接從輸入I中移除E會怎麼樣?一方面,不平衡的問題仍然存在。從另一個角度看,內在的細節將會和噪音有差異地混淆。另一方面,與反射率不同的是,由於L的變化,我們不再有合適的參考來進行這種方式的降解去除。類似分析對其他類型的退化也適用,比如顏色失真。

2.1.4 Arbitrary Illumination Manipulation 

不同的人/應用程序喜歡的照明強度可能是有差異的。因此,一個實用的系統需要爲任意光照操作提供一個接口。在文獻中,增強光條件的三種主要方法是融合、光級約化和伽瑪校正。基於融合的方法,固定的融合模式缺乏光調節的功能。如果採用第二種方法,訓練數據集必須包含具有目標光照水平的圖像,這限制了它的靈活性。對於伽馬校正,雖然可以通過設置不同的γ值實現,但它可能無法反映不同的光(曝光)水平之間的關係。本文提倡從真實數據中學習靈活的映射函數,允許用戶指定任意的光照/曝光級別。

2.2 KinD Network 

在思考和動機的啓發下,我們構建了一個深層的神經網絡來點亮黑暗,用KinD表示。下面,我們將從功能的角度詳細描述這三個子網。

2.2.1 Layer Decomposition Net 

從一個圖像中恢復兩個組件是一個高度不適定的問題。(適定問題是指定解滿足下面三個要求的問題:① 解是存在的;② 解是唯一的;③ 解連續依賴於定解條件,即解是穩定的。這三個要求中,只要有一個不滿足,則稱之爲不適定問題。)由於沒有基於地面實況的信息指導,所以具有良好設計的損失是很重要的。幸運的是,我們有不同的光/曝光配置的成對圖像[Il, Ih]。回想一下,某個場景的反射率應該在不同的圖像之間共享,我們將分解的反射率對[Rl, Rh]調整爲相近(理想情況下,如果沒有退化,則兩者應相同)。此外,光照映射[Ll, Lh]應該是分段光滑和相互一致的。採用下列定義。
反射率相似性損失:(不同光照的同一場景反射率應該相同)

光照平滑度損失:

這一平滑度測量對於I中的一個邊緣位置上的懲罰很小;而對於I中的平坦區域的位置懲罰會很大。(光照在平滑的物體上分佈應平滑)
相互一致性損失:(這個損失我的理解是在強化邊緣信息,暗光和正常光的光照圖梯度和較小或較大時表示此時的光照在平滑物體表面(分佈均勻)或者邊緣(光照分佈差異較大),只有在梯度和不大不小時才懲罰,應該是兩者一個梯度大一個梯度小的情況,也就是兩個光照圖有差異且差異不是特別大(因爲有一個特別大也會使損失變小)的區域)

圖4描述了函數的性質,其中c是控制函數形狀的參數(代碼中c取值爲10)。從圖4可以看出,隨着u的增加,懲罰值先是上升,然後下降到0。這個特徵很好的擬合了相互一致性。較強的互邊應保留,較弱的互邊應捨棄。我們注意到,設置c = 0會導致m上簡單的一範數損失。此外,分解的兩層應該重現輸入,這受到重構誤差的限制,定義爲:
因此,層分解網的損失函數爲:


層分解網絡包含兩個分支,分別對應於反射率和照度。反射率分支採用典型的5層UNet[29],之後是卷積層和Sigmoid層。光照分支由兩個conv+ReLU層和一個conv層組成,它們連接在來自反射率分支的特徵圖上(可能會從光照中排除紋理),最後是一個Sigmoid層。詳細的層分解網絡配置如表1所示。(關於網絡配置的table這裏就不放了,可以去論文裏查看具體設置)

2.2.2 Reflectance Restoration Net 

如圖3和圖5所示,來自低光圖像的反射率圖比來自明亮光圖像的反射率圖更容易受到退化的干擾。利用更清晰的反射率作爲混亂反射率的參考(非正式的地面實況)是我們的原則。對於尋找恢複函數,目標簡單定義如下:


SSIM(··)爲結構相似性度量,ˆR對應於恢復的反射。第三個式子致力於質地上的相似度。這個子網類似於層分解子網中的反射分支,但更深。示意圖配置如圖2所示,詳細內容見附錄。我們還記得,退化在反射上的分佈複雜,且強烈依賴於照明分佈。因此,我們將光照信息和退化的反射一起引入到恢復網絡中。這個操作的有效性可以在圖5中觀察到。在兩種不同退化(光)級的反射率圖中,BM3D的結果可以一定程度的去除噪聲(不考慮自然的顏色失真),但模糊效果還是幾乎無處不在。在我們的結果中,窗口區域的紋理(例如灰塵/水基污漬)保持清晰和銳利,而在黑暗區域的退化被大量去除,細節(例如瓶子上的字符)得到很好的修復。此外,我們的方法還可以解決顏色失真的問題。反射恢復網絡的具體配置如表2所示。

圖三:左列:較暗的輸入圖及其分解的照度和(退化的)反射率圖。右欄:較亮的輸入及其對應的映射。三行分別對應於輸入、照明映射和反射圖。這些是測試圖像。

圖五:污染的反射率圖(上),以及通過BM3D(中)和我們的反射率恢復網絡(下)得到的結果。右欄對應於較左欄更重的退化(較低的光)水平。這些是測試圖像

2.2.3 Illumination Adjustment Net 

由於不存在用於圖像的地面實況光照級別。因此,爲了滿足不同的需求,我們需要一種機制來靈活地將一種光照條件轉換爲另一種光照條件。我們有成對的照明圖。雖然不知道之間的確切關係,我們可以大致計算強度的元素級比率α(Lt / Ls)。這個比例可以作爲指標來訓練一個調整函數從一個光照條件Ls到另一個標準Lt,如果調整光照的水平更高,則α> 1,否則α≤1。在測試階段,α可以由用戶指定。該網絡是輕量級的,包含3個conv層(2個conv+ReLu和1個conv)和1個Sigmoid層。我們注意到指標α是作爲輸入的一部分擴展到一個特性映射上。以下是照明調節網的損失函數:


ˆL是調整後的光照圖。圖6顯示了我們的學習調整函數和伽馬校正之間的差異。爲了公平比較,我們通過優化參數γ達到類似的整體光強度。我們考慮了兩個不失一般性的調整,包括調亮亮度和調暗亮度。圖6 (a)爲光源照明,(b)和(d)是經gamma校正後的結果,(c)和(e)是我們的方法。爲了更清楚地顯示這種差異,我們繪製了x = 100,200,400(這個地方x代表什麼我沒搞明白)時的一維強度曲線。對於調暗亮度的情況,我們的學習方法在相對明亮的區域比伽瑪校正在強度上減少得更多,而在黑暗區域減少得更少或幾乎相同。對於調亮的情況,出現了相反的趨勢。換句話說,我們的方法在相對較暗的區域增加較少的光照,而在較亮的區域增加更多或相同的光照。這種學習方式更符合實際情況。此外,α比γ方式更方便用戶操作。例如,設置α爲2意味着將光照*2。詳細的照明調節網絡配置如表3所示。

 

3 EXPERIMENTAL VALIDATION

3.1 Implementation Details 

我們使用LOL數據集作爲訓練數據集,其中包括500個低/正常光圖像對。在訓練中,我們只使用了450個圖像對,沒有使用合成圖像。對於層分解網,批量大小設置爲10,patch大小設置爲48x48。而反射率恢復網和照度調整網的批大小設置爲4,patch尺寸設置爲384x384。我們使用隨機梯度下降(SGD)技術進行優化。整個網絡在Nvidia GTX 2080Ti GPU和Intel Core i7-8700 3.20GHz CPU上使用Tensorflow框架進行訓練。

3.2 Performance Evaluation

我們在很多數據集上評估了我們的方法,包括LOL[21]、LIME[11]、NPE[9]和MEF[30]。定量比較採用PSNR、SSIM、LOE[9]和NIQE[31]四個指標。PSNR和SSIM值越高表明質量越好,而LOE和NIQE值越低表明質量越好。競爭對手包括BIMEF[32]、SRIE[12]、CRM[33]、Dong[34]、LIME[11]、MF[35]、RRM[13]、Retinex-Net[21]、GLAD[36]、MSR[8]和NPE[9]。

表4報告了競爭對手在LOL數據集上的數值結果。對於每個測試低光圖像,有一個“正常”光對應。因此,可以作爲測量PSNR和SSIM的參考。從這些數字中,我們可以看到我們的方法明顯優於其他所有方法。在非參考度量NIQE方面,我們也遙遙領先。但是,在LOE中,我們的方法似乎落後於許多方法。正如[11]的作者所述,使用低光輸入本身來計算LOE是有問題的。我們應該選擇一個可靠的參考。與計算PSNR和SSIM類似,我們再次使用對應圖像作爲參考(記作LOEref)。以這種方式,我們排在第三位,略低於CRM (977.3 vs 926.1)。對於LIME、NPE和MEF數據集,沒有可用的參考圖像。因此,我們只採用NIQE來評估所涉及方法之間的性能差異。在這個比較中,如表5所示,我們的種類比其他種類有明顯的優勢。特別的,kind在LIME和NPE數據集上勝過所有對手。對於MEF數據,它僅比CRM稍微差一點(3.34比3.27)。

此外,圖7-13給出了不同光照條件下圖像的一些視覺比較。從結果中我們可以看出,雖然大多數的方法在某種程度上可以使輸入變亮,但是由於光的調節不理想和/或頑固的噪聲和顏色失真所造成的嚴重的視覺缺陷仍然存在。我們的工作在這些情況下表現很好,光照調整適當並且退化明顯地被刪除。

 

 

4 CONCLUSION 

在這項工作中,我們提出了一種深度網絡,命名爲KinD,用於低光增強。受retinex理論的啓發,該網絡將圖像分解爲反射率層和光照層。分解結果是將原始空間解耦爲兩個更小的子空間。由於地面實況反射率和照度信息都很少,因此可以使用在不同光/曝光條件下捕獲的成對圖像對網絡進行交替訓練。爲了消除之前隱藏在黑暗中的退化,kind建立了一個修復模塊。kind學習了映射功能,比傳統的伽瑪校正更符合實際情況,並能靈活調整光級。大量的實驗表明,我們的設計明顯優於最先進的技術。在目前的版本中,KinD在Nvidia 2080Ti GPU上處理VGA分辨率的圖像需要不到50ms的時間。通過使用像MobileNet或輕量化這樣的技術,我們可以進一步加速。

 

 

 

 

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