劉佳敏,何 寧,尹曉杰
北京聯(lián)合大學 智慧城市學院,北京100101
部分圖像增強在計算機斷層成像、工業(yè)產(chǎn)品質(zhì)量檢驗、交通監(jiān)控及衛(wèi)星圖像處理中有著廣泛的應用。其中低照度圖像是一種常見的圖像種類,它的主要特點是微光、暗色區(qū)域占圖像主要部分。造成圖像低照度的原因有很多,例如光線不足,攝影設備性能有限以及設備配置不正確等,這類圖像可見性偏低,不便于觀察與分析,且會對相關應用產(chǎn)生負面影響,尤其是在圖像的匹配、融合、分析、檢測以及分割方面,給數(shù)字圖像處理帶來極大挑戰(zhàn)。
當前國內(nèi)外對于低照度圖像增強技術的相關研究還在不斷探索中,雖然取得了一定的成果,但還遠未達到成熟,該領域仍具有很大的研究價值和發(fā)展空間。經(jīng)研究,針對低照度圖像增強的研究方法大致可分為傳統(tǒng)方法與深度學習兩類。
傳統(tǒng)方法中,基于Retinex 理論[1-4]主要在頻域中增強圖像,基于直方圖均衡化等算法[5-6]則集中于增強圖像對比度,但黑暗區(qū)域的細節(jié)沒有得到適當?shù)脑鰪奫7]。Dong等人[8]發(fā)現(xiàn),低亮度圖像與反轉(zhuǎn)后的圖像相似。同樣,Lin 等人[9]和Zhang 等人[10]利用暗通道先驗[11]來增強低照度圖像。盡管如此,這些方法仍缺乏理論依據(jù)。除此之外,Ying 等人[12-13]提出一種用于低照度圖像增強的多重曝光融合框架,根據(jù)權重矩陣融合輸入圖像和合成圖像來獲得增強的結(jié)果。Guo 等人[14]也提出利用圖像反射圖進行圖像增強,其增強的關鍵是對反射圖的估計程度。但這種基于反射圖的方法容易造成過度增強,這是現(xiàn)有照明圖估計最常出現(xiàn)的問題。如今,過度曝光問題仍未得到有效解決。
近年來,研究者們相繼提出了一些基于深度學習的方法。Lore 等人[15]提出了一種基于深度自動編碼器的方法,該方法可從低照度圖像中識別信號特征并自適應地增亮圖像,并且不會過度放大飽和高動態(tài)范圍圖像中的較亮部分,但并未考慮低照度圖像的性質(zhì)。Chen等人[16]和Loh 等人[17]分別構建短曝光低光圖像及相應長曝光圖像數(shù)據(jù)集(SID,ExDARK),并搭建網(wǎng)絡來學習圖像增強,但是結(jié)果僅在構建的數(shù)據(jù)集上表現(xiàn)良好。受Retinex方法的啟發(fā),Wei等人[18]和Guo等人[19]分別提出Retinex-Net網(wǎng)絡和基于卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)與離散小波變換(Discrete Wavelet Transform,DWT)的LLIE網(wǎng)絡對圖像進行端對端訓練,其中文獻[18]驗證了圖像分解在一定程度上可以增強圖像亮度。Cheng等人[20]提出的深度融合網(wǎng)絡(Deep Fusion Network,DFN)無需估計反射圖,而是使用CNN 生成置信度圖作為空間權重因子,以融合多種基礎圖像增強技術相互補充增強圖像。Bhat 等人[21]提出了一種實時的低光照增強算法,并通過伽瑪校正合成訓練數(shù)據(jù),該算法計算復雜度較低,實時性較高,能保留圖像更多細節(jié)。
Retinex理論典型的假設是圖像可分解為反射圖和照明圖,但此假設缺乏理論基礎。在此基礎上本文設計了一種數(shù)據(jù)驅(qū)動的深層網(wǎng)絡來學習圖像分解和增強,該網(wǎng)絡旨在調(diào)整圖像亮度,增強圖像整體效果。
Retinex 理論假設照明在空間上逐漸變化,但這種假設與實際存在一定偏差,并且MSRCR默認圖像的三個通道所占比例均等,這樣造成處理后的圖像偏暗并帶噪聲,因此本文設計了一個集成圖像分解與增強的神經(jīng)網(wǎng)絡架構RUNet 來解決上述問題。該網(wǎng)絡包括兩個子網(wǎng)絡:圖像分解(DeNet),圖像增強(EnNet)。DeNet 網(wǎng)絡通過卷積神經(jīng)網(wǎng)絡(CNN)學習并分解圖像,并將其結(jié)果作為亮度增強網(wǎng)絡EnNet的輸入,對輸入圖像進行端對端訓練,即可對任意大小的圖像進行增強。
Retinex分解圖像的方法是直接在輸入圖像上估計反射率和照度,但設計適合各種場景的適當約束函數(shù)并不容易。因此,嘗試以數(shù)據(jù)驅(qū)動的方式解決此問題。DeNet每次都會獲取成對的弱光/正常光圖像,并在弱光和正常光圖像的指導下學習弱光及其對應的正常光圖像的分解。
在增強子網(wǎng)EnNet 中,為了分級地調(diào)整照明,即保證局部照明和全局照明的一致性,引入了多尺度級聯(lián),設計了一個全卷積網(wǎng)絡(Fully Convolutional Network,F(xiàn)CN),并結(jié)合U-Net網(wǎng)絡來實現(xiàn)圖像增強。
在DeNet 子網(wǎng)中,RUNet 通過DeNet 將輸入圖像分解為反射圖R 和亮度圖I 。盡管此分解可能與Retinex的圖像分解相似,但本質(zhì)上是不同的。在處理過程中,不需要準確獲取實際圖像就可以很好地調(diào)節(jié)圖像亮度。本文為子網(wǎng)設置了兩個約束:一是低光與正常光圖像共享反射率;二是保證反射圖平滑但保留主要結(jié)構。在此約束下,DeNet學會了以數(shù)據(jù)驅(qū)動的方式提取各種照明圖像之間的共享反射率。
由圖1 可知,DeNet 將低光圖像Slow與正常光圖像Snormal作為輸入,然后分別進行分解。首先使用3×3 卷積層從輸入圖像中提取特征,然后使用以整流線性單元(ReLU)為激活函數(shù)的5個3×3卷積層將RGB圖像映射到反射率和照明度,最后使用一個3×3卷積層從特征空間投影出R 和I 。其中所有層使用卷積核大?。?×3)與通道數(shù)(64)不變,使用Sigmoid函數(shù)目的在于將R 和I 約束在[0,1]范圍內(nèi)。
圖1 RUNet網(wǎng)絡架構
損失函數(shù)L 由重建損失Lrecon、不變反射率損失Lir和平滑度損失Lis三項組成,其中λir、λis分別表示反射率一致性和照明平滑度的系數(shù):
基于Rlow和Rhigh都可以使用對應照明圖重建圖像的假設,重建損失Lrecon可表示為:
引入共享反射率損失Lir來限制反射率的一致性:
EnNet將反射圖R 和亮度圖I 作為輸入,并將其連接后進入網(wǎng)絡層,其中卷積層卷積核大小為3,池化層卷積核大小為2。為結(jié)合U-Net 思想,本文利用最近鄰插值法增大圖像,并進行上采樣,保證與相結(jié)合特征圖大小一致,將其對應加和,之后進行特征融合,得到細節(jié)保存更完整的特征圖,最后使用隨機梯度下降對網(wǎng)絡進行端到端微調(diào),得到增強后的圖像。
全變分(Total Variation)最小化,就是最小化圖像梯度,通常在進行圖像恢復任務之前用作平滑度處理。在圖像處理中最直接和最有效的應用莫過于圖像去噪和復原,但是在圖像像素均勻或亮度急劇變化的區(qū)域,直接使用TV作為損失函數(shù)會失敗。為使損失了解圖像結(jié)構,本文使用反射率圖的梯度對原始TV 函數(shù)進行加權,得出Lis公式為:
其中,?包括水平方向?h和垂直方向?v的梯度,λg表示平衡結(jié)構感知強度的系數(shù)。在權重exp(-λg?Ri)的情況下,Lis放寬了對反射率梯度較陡的平滑度的約束,即放寬了在圖像結(jié)構所在的位置以及照明應不連續(xù)的位置平滑度的約束。
本文采用公開的SID 數(shù)據(jù)集[16],包含5 094 個原始的短曝光圖像序列,每個圖像序列都有對應的長曝光參考圖像。選取每個圖像序列中曝光時間最短的圖像作為低照度圖像,同時選取該圖像對應的長曝光圖像作為參考圖像。SID 數(shù)據(jù)集中的圖像分別由富士和索尼相機拍攝,由于相機設置不同,將原圖格式由RAW格式轉(zhuǎn)換成JPG 格式,由此得出圖像對324 對,每個圖像對大小一致,分辨率為600×400,共648張圖片。
為增強網(wǎng)絡泛化能力,本文增加了合成圖像數(shù)據(jù)集LOL[18]。該數(shù)據(jù)集包含1 485個圖像對,每個圖像對大小一致,包含600×400 和384×384 兩種分辨率,共2 970 張圖片。
本文將這兩個數(shù)據(jù)集合并成一個泛化能力更強的數(shù)據(jù)集,用于網(wǎng)絡訓練和測試。該數(shù)據(jù)集有低、正常光圖像對1 809對,共3 618張圖片。數(shù)據(jù)集如圖2所示。
本文對1 759對圖像進行訓練,并對50幅圖像進行了測試。
訓練過程中無需提供反射率,只需將反射率一致性和照明圖平滑度作為損失函數(shù)嵌入網(wǎng)絡中即可。因此,本文的網(wǎng)絡分解是從配對的低、正常光圖像中自動學習獲取的,并且自然而然地適合于描述不同光照條件下圖像之間的光變化。
訓練時,批處理大小設置為16,圖像塊大小設置為48×48。 Lir、Lis和λg分別設置為0.001、0.1 和10。當i ≠j 時,λij設置為0.001,當i=j 時,λij設置為1,網(wǎng)絡整體迭代100次。
盡管分解是使用成對的數(shù)據(jù)進行訓練的,但它可以在測試階段對任意大小單圖像進行測試。
為了突出Retinex-UNet算法的優(yōu)越性,本文將低光圖像的分解及增強效果與正常光圖像進行了對比,每張圖像由原圖反射圖與亮度圖的對應效果圖組成。由圖3可見,本文方法增強效果無限趨近于正常光圖像。
為了評估本文方法的性能,將其與幾種最先進的方法進行了比較,包括Guo 等人[14]提出的LIME 算法,Dong 等人[8]提出的反轉(zhuǎn)去霧算法,Ying 等人[12]提出的BIMEF 算法,以及Wei 等人[18]提出的Retinex-Net 算法,效果如圖4所示。本文方法不僅能滿足人的視覺需求,而且驗證了此網(wǎng)絡對圖像增強的普適性。
圖2 數(shù)據(jù)集圖像對
圖3 低/正常光圖像分解、亮度增強效果對比
圖4 低光圖像增強效果圖比較與細節(jié)展示
一個算法的優(yōu)劣主要從算法的執(zhí)行時間(計算量)和所需要占用的存儲空間(訪存量)兩方面衡量,但時間復雜度的計算并不是計算程序具體運行的時間,而是算法執(zhí)行語句的次數(shù)。
如果算法的執(zhí)行時間不隨著問題規(guī)模n 的增加而增長,即使算法中有上千條語句,其執(zhí)行時間也不過是一個較大的常數(shù)。此類算法的時間復雜度是O(1)。當有若干個循環(huán)語句時,算法的時間復雜度是由嵌套層數(shù)最多的循環(huán)語句中最內(nèi)層語句的頻度f(n)決定的。除此之外,循環(huán)不僅與n 有關,還與執(zhí)行循環(huán)所滿足的判斷條件有關。
而對于深度學習神經(jīng)網(wǎng)絡模型而言,時間復雜度決定了模型的訓練/預測時間。如果復雜度過高,則會導致模型訓練和預測耗費大量時間,既無法快速地驗證想法和改善模型,也無法做到快速地預測。本文參考了文獻[22]中模型指標——計算量。計算量指的是輸入單個樣本,模型進行一次完整的前向傳播所發(fā)生的浮點運算個數(shù),也即模型的時間復雜度,單位是Flops,其計算公式如下:
其中,D 為神經(jīng)網(wǎng)絡所具有的卷積層數(shù),即網(wǎng)絡的深度;l 表示神經(jīng)網(wǎng)絡第l 個卷積層;Cl為本卷積層具有的卷積核個數(shù),也即輸出通道數(shù);Cl-1為輸入通道數(shù),即上一層的輸出通道數(shù);M 為每層卷積輸出特征圖的大小,由輸入矩陣大小X、卷積核大小K、Padding、Stride 這4個參數(shù)所決定,表示如下:
空間復雜度是對一個算法在運行過程中臨時占用存儲空間大小的量度。在深度學習中,空間復雜度決定了模型的參數(shù)數(shù)量。模型的參數(shù)越多,訓練模型所需的數(shù)據(jù)量就越大,而現(xiàn)實生活中的數(shù)據(jù)集通常不會太大,這會導致模型的訓練容易過擬合。
空間復雜度(訪存量)包含兩部分,即總參數(shù)量和各層輸出特征圖大小,分別表示為式(7)中第一個和第二個求加公式,其參數(shù)表示與式(6)一致。其中總參數(shù)量是指模型所有帶參數(shù)的層的權重參數(shù)總量,即模型體積。特征圖是指模型在實時運行過程中每層所計算出的輸出特征圖大小。
為了定性地測量結(jié)果,本文方法與其他方法進行了對比,見圖4。Dong等人[8]的方法使物體輪廓變黑,圖像整體顏色很重。LIME[14]和BIMEF[12]色彩保持較好,輪廓清晰,但是物體被遮擋部分亮度沒有得到有效增強。Retinex-Net(ReNet)[18]很好地解決了這一問題,但是該方法導致圖像噪聲過多,圖像整體較模糊。本文方法在保存圖像細節(jié)基礎上,很好地避免了噪聲擴大的問題,這得益于平滑損失函數(shù)的設計和去噪的操作。但在增強低照度圖像區(qū)域的同時也增強了其他區(qū)域的圖像,這與Relight網(wǎng)絡輸入有關,在實驗過程中,將亮度圖與反射圖矩陣進行連接后作為亮度增強網(wǎng)絡的輸入,進而對圖像的亮度進行了整體增強。
為了定量地測量結(jié)果,本文使用均方誤差(MSE)、峰值信噪比(PSNR)和結(jié)構相似性指數(shù)(SSIM)[23]對圖像質(zhì)量進行評估。較低的MSE也通常意味著較高質(zhì)量的圖像,較高的SSIM 和PSNR 表示增強的圖像更接近于真實情況,并利用測試時間(Test Time,以s 為單位)來表示不同算法平均測試一幅圖像消耗的時間。如表1所示,本文方法同文獻[18]算法一樣,相較傳統(tǒng)方法耗時更多,空間占比更大,這與算法的復雜度有關。
表1 測試圖像對應MSE、PSNR、SSIM、Test Time對比
為進一步對比方法性能,對神經(jīng)網(wǎng)絡層數(shù)(Network Layers)、程序運行時間(Run Time,以s為單位)、時間復雜度(Time,以階/計算量表示)、空間復雜度(Space,以Mb為單位)對傳統(tǒng)方法與神經(jīng)網(wǎng)絡方法進行比較與分析。其中Run Time 分別指程序運行時間和網(wǎng)絡訓練時間,傳統(tǒng)方法時間復雜度用階表示,而深度學習方法用模型進行一次完整前向傳播的網(wǎng)絡計算量表示??臻g復雜度Space用程序運行時所占用內(nèi)存大小表示。如表2所示。
表2 算法復雜度對比
從表2中可以看出,更復雜的深度學習方法對算法質(zhì)量、設備性能要求更高。
綜上所述,本文方法增強圖像效果優(yōu)于Retinex-Net深度學習方法,與其他傳統(tǒng)方法相比,圖像主觀效果均有所提升。從客觀數(shù)據(jù)分析,本文方法雖在圖像質(zhì)量上有所提高,但還有進步空間。
受Retinex-Net實驗啟發(fā),本文驗證了利用神經(jīng)網(wǎng)絡分解圖像能更精確地調(diào)整圖像亮度,并提出了一種由連續(xù)的子網(wǎng)絡組成的新型網(wǎng)絡RUNet。該網(wǎng)絡是在預測階段沒有任何人工參與的端對端神經(jīng)網(wǎng)絡,但在處理現(xiàn)實中的低照度圖像時會添加噪聲。本文分別從定性與定量的角度將RUNet與現(xiàn)有的最新方法進行了比較,實驗表明,本文方法在其他方法基礎上有所進步,不僅在合成圖像中表現(xiàn)出色,而且在現(xiàn)實世界圖像集中表現(xiàn)也很出色。
未來的研究方向是:(1)用泊松噪聲和量化偽像進行訓練以模擬更現(xiàn)實的情況;(2)增強去模糊能力以增加圖像細節(jié)的清晰度;(3)將應用場景擴展到霧天和多塵等其他背景中;(4)對網(wǎng)絡進行改進,避免在增強低照度部分時增強其他區(qū)域。