Zero-Shot Restoration of Back-lit Images Using Deep Internal Learning

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曲線可以簡單地用兩個參數來參數化,即陰影量 \phi _{s}和高光量 \phi _{h}?,因此它可以表示為:

3 EXCNET: AN UNSUPERVISED CNN-BASED APPROACH TO ESTIMATE THE S-CURVE

這里詳細介紹了我們提出的背光圖像恢復方法 ExCNet。 ExCNet實際上是一個CNN,旨在從輸入圖像I的亮度通道I_{l}估計最佳S曲線。利用估計的S曲線,可以相應地恢復I。 ExCNet的結構如圖3所示。為了更好地理解它,ExCNet的每次訓練迭代在概念上可以被認為有兩個階段,使用中間S曲線調整I_{l}并導出損失。這兩個階段的詳細內容將在 3.1 和3.2節給出。實施細節將在3.3給出。

3.1 Adjusting I_{l} 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 的無監督背光圖像恢復方法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161883.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161883.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161883.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

孟德爾隨機化 MR入門基礎-簡明教程-工具變量-暴露

孟德爾隨機化(MR)入門介紹和分章分享(暫時不解讀) 大家好,孟德爾隨機化大火,但是什么是孟德爾隨機化,具體怎么實操呢 這沒有其他教程的繁冗,我這篇講最基礎的孟德爾隨機化的核心步…

Selenium瀏覽器自動化測試框架

介紹 Selenium [1] 是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome&#xff…

STM32_3(GPIO)

GPIO簡介 GPIO(General Purpose Input Output)通用輸入輸出口8種輸入輸出模式輸出模式可控制端口輸出高電平,驅動LED、蜂鳴器、模擬通信協議輸出時許等輸入模式可讀取端口的高低電平或電壓,用于讀取按鍵輸入、外接模塊電平信號輸…

【VRTK】【VR開發】【Unity】8-可交互對象

【概述】 之前我們只是用了一個簡單方塊作為可交互對象。其實可交互對象可以有許多細節設置,包括具體抓握物體的哪個點,指定抓握的方向,指定Secondary Action允許兩手互換抓握,雙手抓握,用兩手改變物體大小等。 【拾取物體】 要讓一個物體能夠被拾取,必須設置它為可互…

mysql解壓版安裝步驟linux

1. MySQL下載就不說了,以5.7版本舉例 2. 解壓安裝包 tar -zxvf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz 3. 重命名目錄 mv mysql-5.7.41-linux-glibc2.12-x86_64 /usr/local/mysql 4. 創建mysql用戶組和用戶 groupadd mysql useradd -r -g mysql mysql …

十多位老鐵在公司搭建好了測試平臺

保守估計,目前有十多位小伙伴在公司搭建好了。 現在稍微詳細的講一下其中測試計劃的使用說明: (圖片有點小,可以點擊擴大查看) 1、進入測試計劃模塊,點擊“添加”,如下圖5.1: ▲圖 5…

NX二次開發UF_CAM_set_cam_preferences 函數介紹

文章作者:里海 來源網站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_cam_preferences Defined in: uf_cam.h int UF_CAM_set_cam_preferences(UF_CAM_preferences_p_t prefs ) overview 概述 This function sets the current settings of…

PTA-6-44 水果接口-工廠設計模式

用工廠設計模式編寫程序代碼。已知有如下Fruit接口,請編寫其子類Apple類與Orange類,另外再編寫一個Factory工廠類,具體要求如下。 需要編寫Fruit接口的子類: 兩個子類Apple和Orange,實現接口Fruit,并覆寫ea…

若依框架導出下載pdf/excel以及導入打印等

一、打印文件 // 報表打印 handlePdf(row) {wayAPI(row.billcode).then((res) > {var binaryData [];binaryData.push(res);let url window.URL.createObjectURL(new Blob(binaryData, {type: "application/pdf"})); window.open("/static/pdf/web/v…

【鴻蒙應用ArkTS開發系列】- 云開發入門實戰二 實現城市多級聯動Demo(上)

目錄 概述 云數據庫開發 一、創建云數據庫的對象類型。 二、預置數據(為對象類型添加數據條目)。 三、部署云數據庫 云函數實現業務邏輯 一、創建云函數 二、云函數目錄講解 三、創建resources目錄 四、獲取云端憑據 五、導出之前創建的元數據…

算法設計與分析復習

分支法 算法設計與分析復習–遞歸與分治(一) 算法設計與分析復習–遞歸與分治(二) 動態規劃 算法設計與分析復習–動態規劃 貪心 算法設計與分析復習–貪心(一) 算法設計與分析復習–貪心(二) 回溯法 算法設計與…

鴻蒙原生應用/元服務開發-AGC分發如何配置版本信息(下)

12.根據《工業和信息化部關于開展移動互聯網應用程序備案工作的通知》,自2023年9月初起,在中國大陸地區提供互聯網信息服務的APP開發者,需要依法履行APP備案手續,并通過APP分發平臺的備案信息核驗。 對于2023年9月7日后在AGC新上…

【C++入門到精通】 Lambda表達式 C++11 [ C++入門 ]

閱讀導航 引言一、C98中的一個例子二、Lambda表達式1. Lambda表達式語法(1)Lambda表達式各部分說明(2)捕獲列表說明 三、Lambda表達式的底層原理溫馨提示 引言 當今軟件開發行業的快速發展和日益復雜的需求,要求程序員…

基于openwrt創建應用程序教程

背景 之前在做路由器工作時,搞過一段時間openwrt,最近看到之前寫的筆記。整理一下,希望能幫助一些朋友入坑。 熟悉openwrt openwrt之前并沒有接觸過,其目錄結構和linux也有所不同。先大致了解一下openwrt文件系統中各個目錄的作用…

C運算符與表達式

跟著肯哥(不是我)學運算符與表達式 運算符 在C語言中,運算符是一種用來執行特定操作的符號或關鍵字。它們用于對變量、常量和表達進行計算、邏輯判斷和位操作等。 定義一般都當耳旁風了 運算符分類 算術運算符 -*/%加減乘除取模,…

浮點數運算精度丟失,如何解決

為什么浮點數運算的時候會有精度丟失的風險? 浮點數運算精度丟失代碼演示: float a 2.0f - 1.9f; float b 1.8f - 1.7f; System.out.println(a);// 0.100000024 System.out.println(b);// 0.099999905 System.out.println(a b);// false為什么會出現…

everything排除目錄

everything默認搜索所有文件,自己把沒啥必要的目錄都屏蔽掉,記錄如下

ChatGPT/GPT4丨編程助手;AI畫圖;數據分析;科研/項目實現;提示詞工程技巧;論文寫作等

ChatGPT 在論文寫作與編程方面也具備強大的能力。無論是進行代碼生成、錯誤調試還是解決編程難題,ChatGPT都能為您提供實用且高質量的建議和指導,提高編程效率和準確性。此外,ChatGPT是一位出色的合作伙伴,可以為您提供論文寫作的…

【微軟技術棧】使用新的C#功能減少內存分配

本文內容 通過引用傳遞和返回引用安全上下文安全的上下文和 ref 結構統一內存類型通過參考安全提高性能 本節中介紹的技術可提高應用于代碼中的熱路徑時的性能。熱路徑是代碼庫中在正常操作中經常重復執行的部分。將這些技術應用于不經常執行的代碼將產生最小的影響。在進行任何…

[數據結構]-AVL樹

前言 作者:小蝸牛向前沖 名言:我可以接受失敗,但我不能接受放棄 如果覺的博主的文章還不錯的話,還請點贊,收藏,關注👀支持博主。如果發現有問題的地方歡迎?大家在評論區指正 目錄 一、AVL樹基…