做pc端網(wǎng)站案例網(wǎng)站搜什么關(guān)鍵詞
Abstract
在弱光條件下拍攝的圖像通常會出現(xiàn)(部分)可見度較差的情況。,除了令人不滿意的照明之外,多種類型的退化也隱藏在黑暗中,例如由于相機(jī)質(zhì)量有限而導(dǎo)致的噪點和顏色失真。,換句話說,僅僅調(diào)高黑暗區(qū)域的亮度將不可避免地放大隱藏的偽像。,這項工作為 Kindling the Darkness(記為 KinD)構(gòu)建了一個簡單而有效的網(wǎng)絡(luò),該網(wǎng)絡(luò)受 Retinex 理論的啟發(fā),將圖像分解為兩個部分。,一個組件(照明)負(fù)責(zé)光調(diào)節(jié),而另一個組件(反射率)負(fù)責(zé)消除退化。,通過這種方式,原始空間被解耦成兩個更小的子空間,期望得到更好的正則化/學(xué)習(xí)。,值得注意的是,我們的網(wǎng)絡(luò)是使用在不同曝光條件下拍攝的配對圖像進(jìn)行訓(xùn)練的,而不是使用任何地面實況反射率和照明信息。,進(jìn)行了大量的實驗來證明我們的設(shè)計的有效性及其相對于最先進(jìn)的替代方案的優(yōu)越性。,我們的 KindD 能夠有效應(yīng)對嚴(yán)重的視覺缺陷,并且用戶可以任意調(diào)整光線水平。,此外,我們的模型在 2080Ti GPU 上處理 VGA 分辨率圖像的時間不到 50 毫秒。,所有上述優(yōu)點使我們的 KindD 具有實際應(yīng)用的吸引力。
1 INTRODUCTION
很多時候,在昏暗的光線條件下捕捉高質(zhì)量的圖像是具有挑戰(zhàn)性的。,雖然在這種情況下可以進(jìn)行一些操作,例如設(shè)置高ISO、長時間曝光和閃光,但它們都有不同的缺點。,例如,高 ISO 會增加圖像傳感器對光的敏感度,但噪聲也會被放大,從而導(dǎo)致低(信噪比)SNR。,長曝光僅限于拍攝靜態(tài)場景,否則很可能會出現(xiàn)結(jié)果模糊的問題。,使用閃光燈可以在某種程度上使環(huán)境變亮,但是這經(jīng)常會給照片帶來意想不到的亮點和不平衡的光線,使照片在視覺上令人不快。,在實踐中,典型用戶甚至可能無法使用有限的拍攝工具(例如,相機(jī))來實現(xiàn)上述選項。,嵌入便攜式設(shè)備中的相機(jī)。,盡管低光圖像增強(qiáng)一直是社區(qū)中長期存在的問題,并且在過去幾年中取得了很大進(jìn)展,但開發(fā)實用的低光圖像增強(qiáng)器仍然具有挑戰(zhàn)性,因為靈活地照亮黑暗,有效消除退化,以及,效率應(yīng)該是所有人都關(guān)心的。
圖 1 提供了在具有挑戰(zhàn)性的光照條件下拍攝的三張自然圖像。,具體來說,第一種情況是光線極弱的情況。,黑暗中隱藏著嚴(yán)重的噪點和色彩失真。,通過簡單地放大圖像的強(qiáng)度,退化就會顯示在右上角。,第二張圖像是在日落時拍攝的(環(huán)境光較弱),其中大多數(shù)物體都受到背光的影響。,中午面對光源(太陽)成像也很難擺脫像第二種情況所示的問題,盡管環(huán)境光更強(qiáng)并且場景更清晰。,請注意,最后兩張照片的那些相對明亮的區(qū)域?qū)⑼ㄟ^直接放大而飽和。
基于深度學(xué)習(xí)的方法在數(shù)值低級視覺任務(wù)(例如去噪和超分辨率)中展現(xiàn)了其優(yōu)越的性能,其中大多數(shù)任務(wù)需要具有真實值的訓(xùn)練數(shù)據(jù)。,對于目標(biāo)問題,例如弱光圖像增強(qiáng),盡管可以確定光強(qiáng)度的順序,但不存在真實的真實數(shù)據(jù)。,因為,從用戶的角度來看,不同的人/需求最喜歡的燈光水平可能會有很大不同。,換句話說,我們無法說出什么光線條件是最好的/真實的。,因此,僅將圖像映射到具有特定光照水平的版本并不那么合適。
基于上述分析,我們將弱光圖像增強(qiáng)的挑戰(zhàn)總結(jié)如下:
? 如何有效地估計單幅圖像的光照分量,并靈活調(diào)整光照水平? ,
? 如何在照亮黑暗區(qū)域后消除先前隱藏在黑暗中的噪聲和顏色失真等劣化? ,
? 如何通過僅查看兩個/幾個不同的示例來訓(xùn)練沒有明確定義的地面實況光照條件的模型以實現(xiàn)低光圖像增強(qiáng)?
在本文中,我們提出了一種深度神經(jīng)網(wǎng)絡(luò)來同時考慮上述問題。
1.1 Previous Arts
人們提出了大量的弱光圖像增強(qiáng)方案。,下面我們簡單回顧一下與我們密切相關(guān)的經(jīng)典和當(dāng)代作品。
Plain Methods
直觀上,對于全局低光的圖像,可以通過直接放大來增強(qiáng)可見度。,但是,如圖 1 的第一種情況所示,包括噪點和顏色失真在內(nèi)的視覺缺陷沿著細(xì)節(jié)顯現(xiàn)出來。,對于包含明亮區(qū)域的圖像,例如,對于圖 1 中的最后兩張圖片,此操作很容易導(dǎo)致(部分)飽和/過度曝光。,一條技術(shù)路線,以直方圖均衡化(HE)[1]、[2]、[3]及其后續(xù)[4]、[5]為代表,試圖將取值范圍映射為[0, 1]并進(jìn)行平衡,用于避免截斷問題的輸出直方圖。,這些方法實際上旨在增加圖像的對比度。,另一種映射方式是伽馬校正(GC),它以非線性方式對每個像素單獨進(jìn)行。,雖然GC可以提升亮度,特別是暗像素的亮度,但它沒有考慮某個像素與其鄰居的關(guān)系。,普通方法的主要缺點是它們幾乎不考慮真實的照明因素,通常會使增強(qiáng)的結(jié)果在視覺上容易受到影響并且與真實場景不一致。
Traditional Illumination-based Methods.
與普通方法不同,此類策略了解光照的概念。,受 Retinex 理論 [6] 啟發(fā),關(guān)鍵假設(shè)是(彩色)圖像可以分解為兩個組成部分,即反射率和照明度。,早期的嘗試包括單尺度 Retinex (SSR) [7] 和多尺度 Retinex (MSR) [8]。,受限于產(chǎn)生最終結(jié)果的方式,輸出通??雌饋聿蛔匀徊⑶以谀承┑胤竭^度增強(qiáng)。,王等人。,提出了一種稱為 NPE [9] 的方法,該方法共同增強(qiáng)對比度并保持照明的自然度。,傅等人。,開發(fā)了一種方法[10],通過融合初始估計的照明圖的多個推導(dǎo)來調(diào)整照明。,然而,這種方法有時會犧牲那些包含豐富紋理的區(qū)域的真實感。,郭等人。,專注于從初始圖估計結(jié)構(gòu)化照明圖 [11]。,這些方法通常假設(shè)圖像無噪聲和顏色失真,并且沒有明確考慮退化。,在[12]中,設(shè)計了一種用于同時反射率和照明估計(SRIE)的加權(quán)變分模型以獲得更好的反射率和照明層,然后通過操縱照明來生成目標(biāo)圖像。,繼[11]之后,Li 等人。,進(jìn)一步引入了一個額外的術(shù)語來表示宿主噪聲[13]。,雖然[12]和[13]都可以抑制圖像中的輕微噪聲,但它們在處理顏色失真和嚴(yán)重噪聲方面缺乏能力。
Deep Learning-based Methods
隨著深度學(xué)習(xí)的出現(xiàn),許多低級視覺任務(wù)已經(jīng)受益于深度模型,例如用于去噪的[14]、[15],用于超分辨率的[16],用于壓縮偽影去除的[17]和,[18] 用于除霧。,關(guān)于本文的目標(biāo)任務(wù),[19]中提出的低光網(wǎng)絡(luò)(LLNet)構(gòu)建了一個深度網(wǎng)絡(luò),該網(wǎng)絡(luò)充當(dāng)同時對比度增強(qiáng)和去噪模塊。,沉等人。,認(rèn)為多尺度Retinex相當(dāng)于具有不同高斯卷積核的前饋卷積神經(jīng)網(wǎng)絡(luò)。,受此啟發(fā),他們構(gòu)建了一個卷積神經(jīng)網(wǎng)絡(luò)(MSR-net)[20]來學(xué)習(xí)暗圖像和亮圖像之間的端到端映射。,魏等人。,設(shè)計了一個名為 RetinexNet [21] 的深度網(wǎng)絡(luò),它集成了圖像分解和照明映射。,請注意,Retinex-Net 還使用了現(xiàn)成的去噪工具(BM3D [22])來清理反射分量。,這些策略都假設(shè)存在具有“地面真實”光的圖像,而沒有考慮噪聲對具有不同光的區(qū)域的不同影響。,簡單來說,提取光照因子后,暗區(qū)的噪聲水平(遠(yuǎn))高于亮區(qū)的反射率。,在這種情況下,采用/訓(xùn)練在圖像上具有均勻能力(反射率)的降噪器不再合適。,此外,上述方法沒有明確處理顏色失真的退化,這在實際圖像中并不罕見。,最近,陳等人。,提出了一種基于全卷積網(wǎng)絡(luò)的端到端訓(xùn)練的低光圖像處理管道[23],它可以聯(lián)合處理噪聲和顏色失真。,然而,這項工作特定于RAW格式的數(shù)據(jù),限制了其適用場景。,正如[23]中所述,如果修改網(wǎng)絡(luò)以接受JPEG格式的數(shù)據(jù),性能會顯著下降。
大多數(shù)現(xiàn)有方法通過伽瑪校正來操縱照明,指定精心構(gòu)建的訓(xùn)練數(shù)據(jù)或融合中存在的級別。,對于伽馬校正,它可能無法反映不同光線(曝光)級別之間的關(guān)系。,對于第二種方式,其受到訓(xùn)練數(shù)據(jù)中是否包含指定級別的嚴(yán)格限制。,而對于最后一個,它甚至不提供操作選項。,因此,需要學(xué)習(xí)一種映射函數(shù)來任意地將一種光(曝光)級別轉(zhuǎn)換為另一種光級別,以便為用戶提供調(diào)整的靈活性。
Image Denoising Methods
在圖像處理、多媒體和計算機(jī)視覺領(lǐng)域,圖像去噪長期以來一直是一個熱門話題,在過去的幾十年里提出了許多技術(shù)。,經(jīng)典的方案通過利用自然干凈圖像的一些特定先驗來對問題進(jìn)行建模/規(guī)范化,例如非局部自相似性、分段平滑性、信號(表示)稀疏性等。最流行的方案可以說是 BM3D [22] 和 WNNM [ ,24]。,由于測試中優(yōu)化過程的高度復(fù)雜性以及適當(dāng)參數(shù)的搜索空間大,這些傳統(tǒng)方法在實際情況下往往表現(xiàn)出不令人滿意的性能。,最近,基于深度學(xué)習(xí)的降噪器在這項任務(wù)上表現(xiàn)出了優(yōu)越性。,代表性的工作,例如使用堆疊稀疏去噪自動編碼器的 SSDA [25]、[26]、通過可訓(xùn)練的非線性反應(yīng)擴(kuò)散的 TNRD [27]、具有殘差學(xué)習(xí)和批量歸一化的 DnCNN [15],可以節(jié)省計算費用,這要歸功于僅,測試階段涉及前饋卷積運算。,然而,這些深度模型仍然存在圖像盲去噪的困難。,可能會訓(xùn)練多個不同級別的模型,或者一個模型有大量參數(shù),這在實踐中顯然不靈活。,通過將反復(fù)思考納入任務(wù)中,可以緩解這個問題[28]。,但是,上述方法都沒有考慮到光增強(qiáng)圖像的不同區(qū)域存在不同級別的噪聲。,顏色失真也會出現(xiàn)同樣的問題。
1.2 Our Contributions
這項研究提出了一種用于實際解決弱光增強(qiáng)問題的深度網(wǎng)絡(luò)。,這項工作的主要貢獻(xiàn)可以概括為以下幾個方面。
? 受 Retinex 理論的啟發(fā),所提出的網(wǎng)絡(luò)將圖像分解為兩個組成部分,即反射率和照明度,從而將原始空間解耦為兩個較小的空間。 ,
? 網(wǎng)絡(luò)使用在不同光線/曝光條件下捕獲的配對圖像進(jìn)行訓(xùn)練,而不是使用任何地面實況反射率和照明信息。,
? 我們設(shè)計的模型提供了映射功能,可以根據(jù)用戶的不同需求靈活調(diào)整亮度。 ,
? 所提出的網(wǎng)絡(luò)還包含一個模塊,該模塊能夠有效消除通過照亮黑暗區(qū)域而放大的視覺缺陷。 ,
? 進(jìn)行了大量的實驗來證明我們的設(shè)計的有效性及其相對于最先進(jìn)的替代方案的優(yōu)越性。
2 METHODOLOGY
理想的低光圖像增強(qiáng)器應(yīng)該能夠有效地消除隱藏在黑暗中的劣化,并靈活??地調(diào)整光照/曝光條件。,我們建立一個深度網(wǎng)絡(luò),表示為KinD,以實現(xiàn)該目標(biāo)。,如圖 2 所示,該網(wǎng)絡(luò)由兩個分支組成,分別用于處理反射率和照明分量。,從功能上看,也可分為圖層分解、反射率恢復(fù)、光照調(diào)節(jié)三個模塊。,在接下來的小節(jié)中,我們將解釋有關(guān)網(wǎng)絡(luò)的詳細(xì)信息。
2.1 Consideration & Motivation
2.1.1 Layer Decomposition
正如第 1.1節(jié)中所討論的。 ,、樸素方法的主要缺點來自于光照的盲目性。,因此,獲取光照信息是關(guān)鍵。,如果從輸入中很好地提取了照明,則其余部分包含細(xì)節(jié)和可能的退化,可以在其中執(zhí)行恢復(fù)(或退化消除)。,在 Retinex 理論中,圖像 I 可以被視為兩個分量的組合,即反射率 R 和照度 L,其形式為 I = R ? L,其中 ? 表示元素級乘積。,此外,以 Retinex 方式分解圖像因此將退化的低光圖像映射到所需圖像的空間解耦為兩個更小的子空間,期望更好、更容易地正則化/學(xué)習(xí)。,此外,照明圖是靈活調(diào)整光照/曝光條件的核心。,綜上所述,基于Retinex的層分解對于目標(biāo)任務(wù)來說是合適且必要的。
2.1.2 Data Usage & Priors
對于光照條件,沒有明確定義的地面實況。,此外,沒有/很少有真實圖像的真實反射率和照明圖可用。,層分解問題本質(zhì)上是不確定的,因此額外的先驗/正則化器很重要。,假設(shè)圖像是無退化的,某個場景的不同鏡頭應(yīng)該具有相同的反射率。,雖然照明圖雖然可能變化很大,但結(jié)構(gòu)簡單且相互一致。,在實際情況中,低光圖像中體現(xiàn)的退化通常比明亮圖像中的退化更嚴(yán)重,這將被轉(zhuǎn)移到反射率分量中。,這啟發(fā)我們,亮光下圖像的反射率可以作為退化的低光圖像的反射率來學(xué)習(xí)修復(fù)者。,有人可能會問,為什么不使用合成數(shù)據(jù)呢?,因為它很難合成。,退化不是以簡單的形式出現(xiàn),并且隨著不同的傳感器而變化。,請注意,反射率(明確定義)的使用完全不同于使用(相對)亮光下的圖像作為低光圖像的參考。
2.1.3 Illumination Guided Reflectance Restoration
反射率恢復(fù)無法在整個圖像上進(jìn)行統(tǒng)一處理,而照明圖可以作為一個很好的指導(dǎo)。有人可能會想,如果直接從輸入I中去掉E會怎么樣?一方面,不平衡問題仍然存在。從另一個角度來看,內(nèi)在細(xì)節(jié)與噪音的混雜程度是不同的。另一方面,與反射率不同,我們不再有以這種方式去除退化的適當(dāng)參考,因為 L 是變化的。類似的分析適用于其他類型的退化,例如顏色失真。
2.1.4 Arbitrary Illumination Manipulation
不同的人/應(yīng)用最喜歡的照明強(qiáng)度可能非常不同。,因此,實際的系統(tǒng)需要提供用于任意照明操作的接口。,在文獻(xiàn)中,增強(qiáng)光照條件的三種主要方法是融合、光照水平指定和伽瑪校正。,基于融合的方法由于融合模式固定,缺乏光調(diào)節(jié)的功能。,如果采用第二種選擇,訓(xùn)練數(shù)據(jù)集必須包含具有目標(biāo)級別的圖像,限制了其靈活性。,對于伽瑪校正來說,雖然可以通過設(shè)置不同的伽瑪值來達(dá)到目的,但它可能無法反映不同光線(曝光)級別之間的關(guān)系。,本文主張從真實數(shù)據(jù)中學(xué)習(xí)靈活的映射函數(shù),該函數(shù)接受用戶指定任意的光照/曝光級別。
2.2 KinD Network
受到思考和動機(jī)的啟發(fā),我們構(gòu)建了一個深度神經(jīng)網(wǎng)絡(luò),記為KinD,用于點燃黑暗。,下面,我們從功能角度詳細(xì)描述這三個子網(wǎng)。
2.2.1 Layer Decomposition Net
層分解網(wǎng)絡(luò)包含兩個分支,分別對應(yīng)于反射率和照度。,反射分支采用典型的 5 層 UNet [29],后面是卷積(conv)層和 Sigmoid 層。,照明分支由兩個 conv+ReLU 層和來自反射分支的串聯(lián)特征圖上的 conv 層組成(可能從照明中排除紋理),最后是 Sigmoid 層。,表1提供了詳細(xì)的層分解網(wǎng)絡(luò)配置。
2.2.2 Reflectance Restoration Net
如圖 3 和圖 5 所示,低光圖像的反射率圖比亮光圖像的反射率圖更容易受到降級的干擾。,使用更清晰的反射率作為雜亂反射率的參考(非正式的基本事實)是我們的原則。,為了尋求恢復(fù)函數(shù),目標(biāo)變得簡單如下:
其中SSIM(·,·)是結(jié)構(gòu)相似性度量,R?對應(yīng)于恢復(fù)的反射率。,第三項集中于紋理方面的接近度。,該子網(wǎng)與層分解子網(wǎng)中的反射分支類似,但更深。,原理圖配置如圖 2 所示,詳細(xì)信息參見附錄。,我們記得,衰減在反射率中分布復(fù)雜,這在很大程度上取決于照明分布。,因此,我們將照明信息與退化的反射率一起帶入恢復(fù)網(wǎng)絡(luò)。,該操作的有效性可以在圖5中觀察到。在具有不同退化(光)級別的兩個反射率圖中,BM3D的結(jié)果可以相當(dāng)?shù)厝コ肼?#xff08;不考慮本質(zhì)上的顏色失真)。,模糊效果幾乎無處不在。,在我們的結(jié)果中,原本明亮且?guī)缀鯖]有污染的窗戶區(qū)域的紋理(例如灰塵/水性污漬)保持清晰銳利,而黑暗區(qū)域的退化則通過細(xì)節(jié)(例如上面的字符)得到了很大程度的消除。,瓶子)維護(hù)得很好。,此外,我們的方法也解決了顏色失真問題。,表 2 提供了詳細(xì)的反射恢復(fù)網(wǎng)絡(luò)配置。
2.2.3 Illumination Adjustment Net
不失一般性,我們考慮兩種調(diào)整,包括一種調(diào)暗和一種調(diào)亮。,圖6(a)描繪了光源照明,(b)和(d)是通過伽馬校正調(diào)整的結(jié)果,而(c)和(e)是我們的結(jié)果。,為了更清楚地顯示差異,我們在 x = 100、200、400 處繪制一維強(qiáng)度曲線。對于光照情況,我們學(xué)習(xí)的方式在相對明亮的區(qū)域上強(qiáng)度比伽馬校正減少更多,而在,黑暗區(qū)域。,對于點亮的情況,出現(xiàn)相反的趨勢。,換句話說,我們的方法在相對黑暗的區(qū)域增加較少的光,而在明亮的區(qū)域增加更多或大致相同。,學(xué)到的方式更符合實際情況。,而且α方式比γ方式更方便用戶操作。,例如,將 α 設(shè)置為 2 意味著將燈光調(diào)亮 2 倍。,詳細(xì)的光照調(diào)節(jié)網(wǎng)絡(luò)配置如表3所示。
3 EXPERIMENTAL VALIDATION
3.1 Implementation Details
我們使用 LOL 數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù)集,其中包括 500 個低/正常光圖像對。,在訓(xùn)練中,我們僅使用 450 個圖像對,沒有使用合成圖像。,對于層分解網(wǎng)絡(luò),批量大小設(shè)置為 10,補(bǔ)丁大小設(shè)置為 48x48。,而對于反射率恢復(fù)網(wǎng)絡(luò)和照明調(diào)整網(wǎng)絡(luò),批量大小設(shè)置為4,補(bǔ)丁大小設(shè)置為384x384。,我們使用隨機(jī)梯度下降(SGD)技術(shù)進(jìn)行優(yōu)化。,整個網(wǎng)絡(luò)使用 Tensorflow 框架在 Nvidia GTX 2080Ti GPU 和 Intel Core i7-8700 3.20GHz CPU 上進(jìn)行訓(xùn)練。
3.2 Performance Evaluation
我們在廣泛采用的數(shù)據(jù)集上評估我們的方法,包括 LOL [21]、LIME [11]、NPE [9] 和 MEF [30]。,采用四個指標(biāo)進(jìn)行定量比較,即 PSNR、SSIM、LOE [9] 和 NIQE [31]。 ,PSNR 和 SSIM 的值越高表示質(zhì)量越好,而 LOE 和 NIQE 的值越低越好。 ,BIMEF [32]、SRIE [12]、CRM [33]、Dong [34]、LIME [11]、MF [35]、RRM [13]、Retinex-Net [21] 的最先進(jìn)方法,]、GLAD [36]、MSR [8] 和 NPE [9] 作為競爭對手參與其中。
4 CONCLUSION
在這項工作中,我們提出了一種名為 KinD 的深度網(wǎng)絡(luò),用于低光增強(qiáng)。,受 Retinex 理論的啟發(fā),所提出的網(wǎng)絡(luò)將圖像分解為反射層和照明層。,因此,分解將原始空間解耦為兩個較小的子空間。,由于地面真實反射率和照明信息很短,因此可以使用在不同光線/曝光條件下捕獲的成對圖像來訓(xùn)練網(wǎng)絡(luò)。,為了消除之前隱藏在黑暗中的退化,KinD 構(gòu)建了一個恢復(fù)模塊。 ,KinD中還學(xué)習(xí)了映射函數(shù),比傳統(tǒng)的gamma校正更貼合實際情況,靈活調(diào)節(jié)亮度。,大量的實驗證明了我們的設(shè)計相對于最先進(jìn)的替代方案具有明顯的優(yōu)勢。,在當(dāng)前版本中,KinD 在 Nvidia 2080Ti GPU 上處理 VGA 分辨率的圖像所需時間不到 50 毫秒。,通過應(yīng)用 MobileNet 或量化等技術(shù),我們的 KindD 可以進(jìn)一步加速。
代碼解釋
DecomNet_simple
def DecomNet_simple(input):with tf.variable_scope('DecomNet', reuse=tf.AUTO_REUSE):conv1=slim.conv2d(input,32,[3,3], rate=1, activation_fn=lrelu,scope='g_conv1_1')pool1=slim.max_pool2d(conv1, [2, 2], stride = 2, padding='SAME' )conv2=slim.conv2d(pool1,64,[3,3], rate=1, activation_fn=lrelu,scope='g_conv2_1')pool2=slim.max_pool2d(conv2, [2, 2], stride = 2, padding='SAME' )conv3=slim.conv2d(pool2,128,[3,3], rate=1, activation_fn=lrelu,scope='g_conv3_1')up8 = upsample_and_concat( conv3, conv2, 64, 128 , 'g_up_1')conv8=slim.conv2d(up8, 64,[3,3], rate=1, activation_fn=lrelu,scope='g_conv8_1')up9 = upsample_and_concat( conv8, conv1, 32, 64 , 'g_up_2')conv9=slim.conv2d(up9, 32,[3,3], rate=1, activation_fn=lrelu,scope='g_conv9_1')# Here, we use 1*1 kernel to replace the 3*3 ones in the paper to get better results.conv10=slim.conv2d(conv9,3,[1,1], rate=1, activation_fn=None, scope='g_conv10')R_out = tf.sigmoid(conv10)l_conv2=slim.conv2d(conv1,32,[3,3], rate=1, activation_fn=lrelu,scope='l_conv1_2')l_conv3=tf.concat([l_conv2, conv9],3)# Here, we use 1*1 kernel to replace the 3*3 ones in the paper to get better results.l_conv4=slim.conv2d(l_conv3,1,[1,1], rate=1, activation_fn=None,scope='l_conv1_4')L_out = tf.sigmoid(l_conv4)return R_out, L_out
R是UNet類型,輸出三通道,反射率,L是輸出單通道,光照估計。
Restoration_net
def Restoration_net(input_r, input_i):with tf.variable_scope('Restoration_net', reuse=tf.AUTO_REUSE):input_all = tf.concat([input_r,input_i], 3)conv1=slim.conv2d(input_all,32,[3,3], rate=1, activation_fn=lrelu,scope='de_conv1_1')conv1=slim.conv2d(conv1,32,[3,3], rate=1, activation_fn=lrelu,scope='de_conv1_2')pool1=slim.max_pool2d(conv1, [2, 2], padding='SAME' )conv2=slim.conv2d(pool1,64,[3,3], rate=1, activation_fn=lrelu,scope='de_conv2_1')conv2=slim.conv2d(conv2,64,[3,3], rate=1, activation_fn=lrelu,scope='de_conv2_2')pool2=slim.max_pool2d(conv2, [2, 2], padding='SAME' )conv3=slim.conv2d(pool2,128,[3,3], rate=1, activation_fn=lrelu,scope='de_conv3_1')conv3=slim.conv2d(conv3,128,[3,3], rate=1, activation_fn=lrelu,scope='de_conv3_2')pool3=slim.max_pool2d(conv3, [2, 2], padding='SAME' )conv4=slim.conv2d(pool3,256,[3,3], rate=1, activation_fn=lrelu,scope='de_conv4_1')conv4=slim.conv2d(conv4,256,[3,3], rate=1, activation_fn=lrelu,scope='de_conv4_2')pool4=slim.max_pool2d(conv4, [2, 2], padding='SAME' )conv5=slim.conv2d(pool4,512,[3,3], rate=1, activation_fn=lrelu,scope='de_conv5_1')conv5=slim.conv2d(conv5,512,[3,3], rate=1, activation_fn=lrelu,scope='de_conv5_2')up6 = upsample_and_concat( conv5, conv4, 256, 512, 'up_6')conv6=slim.conv2d(up6, 256,[3,3], rate=1, activation_fn=lrelu,scope='de_conv6_1')conv6=slim.conv2d(conv6,256,[3,3], rate=1, activation_fn=lrelu,scope='de_conv6_2')up7 = upsample_and_concat( conv6, conv3, 128, 256, 'up_7' )conv7=slim.conv2d(up7, 128,[3,3], rate=1, activation_fn=lrelu,scope='de_conv7_1')conv7=slim.conv2d(conv7,128,[3,3], rate=1, activation_fn=lrelu,scope='de_conv7_2')up8 = upsample_and_concat( conv7, conv2, 64, 128, 'up_8' )conv8=slim.conv2d(up8, 64,[3,3], rate=1, activation_fn=lrelu,scope='de_conv8_1')conv8=slim.conv2d(conv8,64,[3,3], rate=1, activation_fn=lrelu,scope='de_conv8_2')up9 = upsample_and_concat( conv8, conv1, 32, 64, 'up_9' )conv9=slim.conv2d(up9, 32,[3,3], rate=1, activation_fn=lrelu,scope='de_conv9_1')conv9=slim.conv2d(conv9,32,[3,3], rate=1, activation_fn=lrelu,scope='de_conv9_2')conv10=slim.conv2d(conv9,3,[3,3], rate=1, activation_fn=None, scope='de_conv10')out = tf.sigmoid(conv10)return out
光照和反射作為輸入,傳入恢復(fù)網(wǎng)絡(luò),輸出三通道
Illumination_adjust_net
def Illumination_adjust_net(input_i, input_ratio):with tf.variable_scope('Illumination_adjust_net', reuse=tf.AUTO_REUSE):input_all = tf.concat([input_i, input_ratio], 3)conv1=slim.conv2d(input_all,32,[3,3], rate=1, activation_fn=lrelu,scope='en_conv_1')conv2=slim.conv2d(conv1,32,[3,3], rate=1, activation_fn=lrelu,scope='en_conv_2')conv3=slim.conv2d(conv2,32,[3,3], rate=1, activation_fn=lrelu,scope='en_conv_3')conv4=slim.conv2d(conv3,1,[3,3], rate=1, activation_fn=lrelu,scope='en_conv_4')L_enhance = tf.sigmoid(conv4)
輸入是光照和比例值合并