Learning to See in the Dark論文閱讀筆記


這是一篇圖像增強的論文,作者創建了一個數據集合,和以往的問題不同,作者的創建的see in the dark(SID)數據集合是在極其暗的光照下拍攝的,這個點可以作為一個很大的contribution
實際上我認為作者實際上是做了三個工作,以及圖像去馬賽克(demosaic),圖像增強(enhancement)和圖像去噪(denoise)

denoise

作者在introduction中回顧了以前的工作,包括圖像去噪,圖像去馬賽克的工作,以及圖像增強,在圖像去噪方面,作者有提及之前的深度學習相關的方法,並且也說有些工作是圖像demosaic和denoise同時做的,缺陷就是他們只在合成的數據幾何上進行了實驗,並沒有在真實的數據集合上進行實驗

low-light image enhancement

在回顧enhancement作者說,直方圖均衡化是一種比較經典的方法,用於圖像增強。另外一個比較經典的方法是gamma校正,gamma校正能夠補償暗區域,抑制比較亮的區域
還有一些其他的方法 用於圖像增強,比如inverse暗通道,小波變換,視網膜模型,以及亮度圖估計
但是現有的圖像增強的方法並沒有顯式的建立圖像的噪聲模型,並且只是在后處理階段應用一些現成的去噪算法(圖像增強自己paper看的太少,給自己挖個坑)

noise image dataset

作者說,SID是第一個建立的有gt的低光數據集合,所以,contribution還是挺大的

數據集合建立

如下圖,

有兩種成像陣列,一個是bayer的陣列,一個是X-trans的陣列,總共5094張圖片
作者在拍攝每一張暗的圖片的時候,都h經過長時間曝光得到一個比較亮的圖片,由此構成圖片對
作者還說,長時間曝光得到的圖片實際上是包含噪聲的,我們的target是得到perceptual quality足夠高就行,而不是得到高對比度的圖片
其實我覺得這種方式采集得到的圖像,肯定是包含很多噪聲的,但是對於這種任務而言,應該是無關緊要,這種任務的落地場景是黑天拍到的圖像想要有黑夜的感覺,這種feeling就是perceptual quality,其實也真不一定需要的是看得清,而是feeling
兩個相機拍攝的到的尺寸不一樣,並且還挺大的,一個是60004000,一個是42402832

method

在講坐着的方法之前,作者回顧了之前的是那種方法,一個是traditional的方法,一個是L3的方法,還有就是Burst方法

傳統的方法是有一系列的step,比如先白平衡,然后demosaicing,之后denoise,sharpening,color space conversion,gamma correction還有一些其他的東西,最后得到輸出的圖片,這種方法大概是不同的相機有自己的一套處理算法,isp那種
L3算法則不同,L3算法是用一種large collection of local,linear and learned filters 來近似復雜的非線性piplines
但是作者說,無論是傳統的pipline或者是L3 pipline,都不能處理快速的low-light圖像,以你為他們不能夠處理很大的峰值信噪比
除了上面說的兩種方法之外,還有一種burst imageing pipline,這種方法常用在智能手機上,盡管這種方法通過aligning 和blending多張圖片,但是這個過程非常的復雜,比如需要密集匹配,可能不能獲取一段視頻序列,或者會用到lucky imageing

作者的method,從網絡結構上來說沒啥創新,如下圖

輸入一個原始的bayer陣列圖,作者對像素進行重新排列得到channel為4的數據,
關於重新排列,bayer arrays和X-Trans array不太一樣,如下圖

bayer用44的blocks重排,X-Trans用66的blocks重排,channel是9因為交換了相鄰的元素(不太懂)
輸出都是12channel的尺寸為圖像一半的image

因為處理的是全分辨率的圖像(后面訓練的過程貌似crop了),所以需要的網絡不能太大,作者這里用了兩種網絡,一種是CAN,另外一種是Unet

訓練

在訓練的過程中,作者用了L1 loss,和adam optimizer,
輸入的是short-exposed image,輸出的是long-exposure的圖片,這里的gt,作者用libraw已經處理過,色彩空間是sRGB空間
因為兩張圖片的尺寸不一樣,作者在這里用了兩個網絡去訓練,注意到在訓練的時候有一個amplification ratio,作者將這個設置為輸入和輸出之間的曝光時間比例
同時,對於圖像隨機crop512*512的尺寸,以及做了一個隨機的flip以及rotation
lr一開始設置為1e-4之后減為1e-5
訓練4000epoch

實驗結果

作者首先展現了一些質量評估的結果,

可以看出,traditional method不能handlenoise以及color bias
所以傳統的圖像增強方法(如果不對噪聲進行建模)的話,produce的圖像噪聲會非常的嚴重,因此作者采用了
一種圖像去噪的方法BM3D,BM3D是一種非blind的去噪方法,需要指定noise-level的等級,如果指定太小的噪聲的話,那么可能會去不干凈,如果指定太大的噪聲的話,可能會over-smooth,如下圖所示

兩種噪聲是同時存在的,所以BM3D並不能locally adapt to the data,相反,作者的方法顯得整體比較和諧

作者還說,如果和BM3D以及burst processing方法比較PSNR/SSIM是不公平的,因為,這些baseline不得不需要一些處理,為了更加公平的比較不同的方法,作者對於這一部分陳述的比較復雜,如何是一個公平的比較法呢,作者用reference image的白平衡參數來減少色彩的偏差(應該是不同方法輸出的圖片),同時,他們逐個channel的scale圖像使得不同方法輸出的圖像和reference image有相同的mean values

盡管這樣,作者並沒有用兩個指標來評價校正圖像的好壞,而是用A/B test
結果如下

在比較難得Sony x300 set上,作者的結果碾壓BM3D,在比較簡單的Sony x100 set數據集合上,作者的結果與之相當,
作者自己拍攝了一些圖片,並且進行了測試,也能夠得到良好的實驗結果

ablation study

作者的ablation study實驗結果如下,這個時候作者用了PSNR和SSIM兩個指標

Unet換成CAN的話,略有下降,但是Fuji上升了不少在ssim上升了不少
同時,如果輸入的色彩空間是sRGB,會香江很多店,感覺Sony對於色彩空間更加敏感,而Fuji並不是,如果將L1換成SSIMloss的話,指標會波動一些
換成L2loss的話,也差不多把
作者還對比了不同的data arrangement對於實驗結果的影響,另外一種數據arrangement不是特別懂,這里就忽略了
下面一個是作者對比了一下,如果將gt進行直方圖均衡化,看看會得到什么結果
如果將gt進行直方圖均衡化的話,實際上是讓網絡學習到一種直方圖均衡化的能力,實際上作者發現,好像並沒有讓網絡學習到這種東西,而且點掉的非常厲害,因此作者通過分析實驗得到的結論是,不用把直方圖均衡化納入到網絡的pipline中,可以作為一個postprocess的過程

結論

在結果中,作者討論了很多,快速低光圖像增強非常具有挑戰性,因為其含有很少的光子,以及很低的snr,
作者提出的方法的limitation是,必須要手動輸入amplification ratio,選取一個amplification ratio是非常的有用的,同時,作者說他們的不同的ccd有不同的網絡,實際上通用性不強,我感覺這個如果以后有用的話,也應該是針對不同的相機,所以問題不大
另外作者說網絡跑的比較慢,基本上需要0.38-0.66s,來處理一張full-resolution的圖片
以及,作者說他希望未來的工作可以集中在圖像質量的改善上,以及完善和集成訓練步驟

后續工作

搜了一下谷歌學術的引用,感覺引這篇文章的人並不多,而且在此工作上做的我好像一篇都沒看到
相反,github上star非常多,不說了,我先下載代碼跑跑,看看有沒有靈感


作者說他嘗試了一下gan的loss,並不能夠改變實驗結果,文章中有一句話提及到了這個事情(准備親自試一試這個)
關於討論部分,作者說了三點
第一個是,算法並沒有特別好的結果,有很大提升的空間
第二個是,現有的網絡需要輸入iso,能夠做一個不需要iso的pipline是很有必要的
第三個是,網絡的速度可以繼續優化


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM