今日來談談 NN 在 ISP 功能上個人粗淺的認識以及應用的可能
個人在剛投入影像處理對於 ISP 懵懵懂懂的時候看到了 FlexISP 這篇 paper
要了解其論述必須先了解在晶片中處理照相功能的 ISP 為一個 multiple-stages 的硬體
在 FlexISP 中最重要的觀念是相當基本的: 每一級的處理程序在過程中都會產生數值偏差
因此 FlexISP 的核心思想是去建構自 Source 到 Bayer 間最後結果每一階段的數理 Model, 合併後透過線性條件限制的方式取得反向計算的解, 即可將 ISP 中多級的計算, 一次性地套用在輸入的影像上, 產生較少誤差的結果:
而甚至在 Google HDR+ 的論文中亦有與其的比較(而也算有趣的是, 因為 Google HDR+ 演算與硬體架構不搭, 所以後處理上實作了 Software ISP, 這點可以閱讀其論文內容), 儘管 FlexISP 的計算量驚人, 然而結果也的確相當出色 (請注意第二行衣服的細節, FlexISP 是與 Ground Truth 最接近的):
FlexISP 證明了一件事情 - 傳統的多級 ISP 處理方式依然有著相當大的進步空間, 而這空間即是傳統 ISP 多級的處理方式自己所產生的, 因而原則上處理的步驟要儘可能地減少.
在近日個人又注意到 CVPR 2018 的一篇論文 - Learning to See In the Dark
其使用了 Convolution Network 來作為 ISP 的角色, 並且在極端的暗景下與 DSLR 比較各自的輸出結果, 其運作的方式如下:
而 RAW, DSLR 輸出與其結果比較如下:
結果相當吸引人, 而這只是論文中提供的一組, 另外建議去提供的聯結點看 "Additional material" 來看更多的比較圖.
在將 FlexISP 與上圖的比較圖相較後, 應能夠將該 ConvNet Model 視為一暗景所特製的 ISP, 而其數理意義上該 Model 做的事等同於去近似在 FlexISP 中欲以各級數理模型疊加影響所反推的函數.
儘管目前有著相當多的 Deep Learning Accelerator (DLA), 然而或許該探究的是, 這樣的 Network 是否可能真的硬體化成為 NN-based ISP?
在 Learning to see in the dark 該論文中, 其預設使用的 NN 為 U-Net , 下圖為 U-Net 的架構:
U-Net 官方的 model size 為 89MB, 其所使用的 Convolution 最大為 3x3, 而對於 tile-based 來說, 應需要 3 條 line buffer (ring buffer), 其他會需要的是擺放各階段的 kernel, 若以 16b 計, 以上述的最 critical 的 stage 需要 1024*3x3*1024 * 2 = 18 MB, 因此事實上不做一些特別處理還是不容易硬體化.
然而若延遲性許可, frame-based 的處理, 那麼一般 DLA 即可套用在這樣的應用情境上(畢竟使用者為了極端的情況得到較佳的照片是願意等的), 當然這僅只是以 U-Net 作舉例, 設計上還能搭配不同場景適用的 Model 或是 network, 甚至 cascade/parallel network 來達到不同的目的, 而或許當這些針對 ISP 功能的所設計的 NN 有著顯著的優勢(其實 ISP 的 tuning 很花時間), 儘管以 Network 方式實作 ISP 特定功能的論文近年不少(eg: DeepISP , 這並不是創新的想法, 而且愈來愈多), 然而單純以單一 network/model 來取代, 而缺乏系統化與參數調整的考量都不會是 ISP 實務上會考量的架構, 然而手機/監視應用/汽車產業在急遽追求影像成像品質的今日, 基於 NN 的處理方法或許是個不可避免必然的趨勢, 然而這仰賴 ISP 相關工作者與 ML/DL 工作者高度的合作, 那麼在 ISP 中內嵌 DLA 或許是未來可以預見的事?