做者:Pierre-Yves Laffont,Jean-Charles Bazin,來自蘇黎世聯邦理工學院。html
這篇文章是基於圖像序列的本質圖像分解,採用基於優化的方法,主要特點是觀察隨着時間變化局部色彩的變化,經過構造這一約束來解決本質圖像分解這個病態的問題,另外,爲了保證全局連git
續,還使用了一個距離對的像素約束。github
假定輸入有\(T\)幀,定義\(M\)爲一幀的像素個數,\(I_t\)表明第t幀,\(t \in\{1, \ldots, T\}\). \(I(p, t)^{(c)}\)表明第t幀第c個顏色通道的第p個像素,假設場景是靜態的和朗伯的(Lambertian), 能夠構建以下等式:
\[ I(p, t)^{(c)}=R(p)^{(c)} S(p, t)^{(c)} \]
其中\(R\)表明反射率,\(S\)表明光照,下面能夠忽略上標\(c\), 由於每一個單獨通道是獨立的,能夠單獨處理。web
來自時間顏色變化的局部約束算法
首先要對\(T\)幀數據進行滑窗,獲得重疊的小塊區域,每一個小塊區域都是正方形,有N個像素,考慮這樣的小塊區域,能夠在局部區域構建平滑能量,在肯定條件下,光照在這一個小塊區域中,是一個常量。因此上述公式又能夠變爲:網絡
\[ I(p, t)=R(p) S(i, t) \]
因而對於每一個小塊區域,能夠構建以下局部能量:
\[ e_{\mathrm{local}}(i, t)=\sum_{p \in \mathcal{W}_{i}}\left(R(p)-\frac{1}{S(i, t)} I(p, t)\right)^{2} \]
而後不一樣幀的小塊區域可能某些會有陰影分界線以及深度不連續,因此對於這些小塊區域,不能徹底用平等地對待它們,有兩個處理方式,第一個是加入魯棒的損失函數,將上式變爲以下形式:
\[ e_{\text { local }}(i)=\sum_{t} \rho\left(e_{\text { local }}(i, t)\right) \]
這裏的\(\rho(x)\)是\(\sqrt{x}\)函數,對於那些有陰影分界線以及深度不連續的區域(外點),它們會構成很大的殘差,因此使用平方根函數對殘差進行縮小,減少外點的影響,另一點是使用了迭代重權重最小二乘法對局部能量進行約束,公式以下:
\[ \left(\mathbf{R}_{i}^{(k+1)}, \mathbf{S}_{i}^{(k+1)}\right)=\arg \min _{\mathbf{R}_{i}, \mathbf{S}_{i}} \sum_{t} w_{i t}^{(k)} e_{\mathrm{local}}(i, t) \]
這裏的\(e_{\text {local}}(i, t)\)是加上上面魯棒損失函數的,\(w_{i t}^{(k)}\)就是對不一樣幀的局部區域進行加權,方法是自適應的,因此會給那些影響局部能量大的外點更小的權重,減輕它們的影響。架構
公式5中仍是由兩個未知量\(R\)和\(S\),而後做者在文中中,區域的光照能夠表示爲區域反射值得累加並經過一個函數表示,具體說明在支撐材料中,然而並無找到那個材料。這裏給出公式:
\[ \frac{1}{S(i, t)}=\mathbf{I}_{i t}^{\top} \mathbf{R}_{i} /\left(\mathbf{I}_{i t}^{\top} \mathbf{I}_{i t}\right) \]
這裏的\(\mathbf{I}_{i t}^{\top}\)是\(Nx1\)的列向量,是對第\(t\)幀第\(i\)個局部區域\(W_i\)的像素進行縱向堆疊而成。因而公式4變爲了\(e_{\text {local}}(i, t)=\left\|\mathbf{M}_{i t} \mathbf{R}_{i}\right\|^{2}\),其中\(\mathbf{M}_{i t}=\mathbf{I} \mathbf{d}_{N}-\left(\mathbf{I}_{i t}^{\top} \mathbf{I}_{i t}\right)^{-1} \mathbf{I}_{i t} \mathbf{I}_{i t}^{\top}\),\(\mathbf{I} \mathrm{d}_{N}\)是一個\(NxN\)的單位矩陣。將這個關係帶入到公式5中,獲得迭代公式以下:
\[ \mathbf{R}_{i}^{(k+1)}=\arg \min _{\mathbf{R}_{i}} \sum_{t} w_{i t}^{(k)}\left\|\mathbf{M}_{i t} \mathbf{R}_{i}\right\|^{2} \]
上述公式7只有一個未知數\(\mathbf{R}_{i}\),能夠經過\(SVD\)算法求出最優解\(\mathbf{R}_{i}\)對應的與矩陣最小奇異值相關的奇異向量\(\mathbf{M}_{i}\)=\(\sum_{t} \sqrt{w_{i t}^{(k)}} \mathbf{M}_{i t}\),最後將全部區域和在的一塊兒的總局部能量\(E_{\text {local}}\)爲以下公式:
\[ E_{\text { local }}=\frac{1}{|\Gamma|} \sum_{\mathcal{W}_{i} \in \Gamma} e_{\text {local}}(i)=\frac{1}{|\Gamma|} \sum_{\mathcal{W}_{i} \in \Gamma}\left\|\mathbf{M}_{i} \mathbf{R}_{i}\right\|^{2} \]
陰影一致性的成對約束mvc
上述約束是針對於局部能量,然而只使用上面的能量會致使局部與局部之間發生不連續的做用。因此做者提出了一種基於距離的點對點的約束,這個約束是選取相同光照值的兩個點進行約束,對於第\(t\)幀擁有相同光照的兩個點\(p\)和\(q\),根據公式1,能夠寫出以下公式:
\[ R(p) I(q, t)=R(q) I(p, t) \]
而後相似能夠構建以下能量公式:
\[ e_{\text {pair}}(p, q)=\sum_{t}(R(p) I(q, t)-R(q) I(p, t))^{2} \]
依然,使用迭代重加權最小二乘法,給公式10加上權重項,自適應地分配權重,公式以下:
\[ \begin{array}{l}{\left(R(p)^{(k+1)}, R(q)^{(k+1)}\right)=} {\quad \underset{R(p), R(q)}{\operatorname{argmin}} \sum_{t} w_{p q t}^{(k)}(R(p) I(q, t)-R(q) I(p, t))^{2}}\end{array} \]
最後的總距離點對點能量以下:
\[ E_{\mathrm{pair}}=\frac{1}{|\Phi|} \sum_{(p, q) \in \Phi} e_{\mathrm{pair}}(p, q) \]
上面還沒介紹如何選擇這樣的點對,做者也沒有詳細介紹,只說了方法,對像素點的外觀輪廓進行聚類,在每一個聚類中心選擇點對集合。函數
總的能量約束性能
根據上面的兩個約束,總的約束爲:
\[ \underset{\mathbf{R}}{\operatorname{argmin}} E_{\text {local}}+\gamma_{\text {pair}} E_{\text {pair}} + \gamma_{\mathrm{reg}}E_{\mathrm{reg}} \]
其中\(E_{\mathrm{reg}}\)爲\(\sum_{p} \sum_{t}\left(R(p)-\frac{3 I(p, t)}{\sum_{c} I(p, t)^{(c)}}\right)^{2}\),是一個正則項,用於傾向於接近輸入圖像色度的反射率值。
做者:WuShi1, Chen Change Loy1,2, and XiaoouTang1,2 來自中國香港中文大學和中科院。
這篇論文不是本質圖像分解問題,但相似,這是一篇光照估計的論文,首先看看這個問題目的是啥,看下圖:
左邊的圖像是受到了光照的影響總體偏綠,須要還原出右邊的正常圖片,這個問題能夠歸爲以下等式問題:
\[ I_{c}=E_{c} \times R_{c}, \quad c \in\{r, g, b\} \]
其中\(I\)爲受光照影響造成的偏綠圖像,\(E\)爲RGB光照,R爲在白光條件下的RGB值(須要還原的圖像)。這篇文章設計了兩個網絡以及一個學習策略(HypNet + winner-take-all learning scheme + SelNet),來對這個問題來進行求解。
先貼出網絡結構圖:
輸入經過了紫外線轉換,變成了兩個通道,更加魯棒地學習,最後能夠經過反操做獲得RGB值。上面這個HypNet網絡是用來預測原圖的光照信息,輸入是原圖的一個小塊區域,這個網絡共享卷積層,但在全鏈接層分出了兩個分支,預測了兩個光照輸出,下面這個SelNet網絡跟上面網絡結構相似,不過只有一個分支,輸出是一個2維列向量,標籤由上面這個網絡獲得。
如何訓練?
HypNet網絡預測兩個光照輸出,哪一個分支產生的輸出與真實的標籤更接近,就更新哪一個分支的全鏈接層,另一個分支的全鏈接層固定不動,這是策略做者取了一個很好聽的名字,叫作贏者通吃策略
, 對於那個更接近真實標籤的輸出,設立它所在的分支爲1,另外一個分支爲0,這個將做爲下面SelNet網絡的標籤,使SelNet進行訓練。
如何測試?
測試的時候也是經過小塊區域,經過SelNet網絡選出採用哪一個分支的結果,而後根據結果恢復出當前區域,最後整合全部恢復的小塊區域獲得原圖。
思想仍是挺有趣的,PypNet至關因而一個集成網絡,不一樣分支學習到了不一樣的特徵,見下圖,能夠預測多種類型的輸出。而下面的SelNet則是自動篩選最優的估計。感受很完整優美。
這篇文章的主要特色在於首次將形狀先驗帶入到Retinex中,提出了Local Variation deviation(LVD)的概念,經過將LVD做爲形狀先驗來保護結構的完整性。而後聯合紋理先驗,光照先驗以及重建損失構成最終的優化函數,求解最優解,與以前的retinex方法相比,達到了SOTA。(論文中S表明觀測圖像,I表明Illumination,R表明Reflectance)
LVD能夠分紅兩個部分來看,第一個部分是LV,即局部變化,表明的是梯度特徵,而後第二部分是D,即誤差,指的是梯度的誤差。LVD能夠看做是對局域梯度進行一種規範化,去除均值的影響,獲得梯度變化的方差相關性,紋理是趨向於弱相關性的,而結構是趨向於強相關性的,LVD則正好對紋理和結構有很是強的鑑別能力。LVD的公式以下所示,這裏的沒有使用減去均值的絕對誤差,而採用的是相對誤差,相對誤差更能放大相關性差別。從下圖中人物中紋理(藍色方框)與結構(綠色方框)的在絕對誤差和相對誤差中數值能夠看出,紋理和結構確實在LVD中有明顯差異,並且使用相對誤差可以放大差別。
\[ \mathcal{D}_{x / y}=\left|\nabla_{x / y} I-\frac{1}{|\Omega|} \sum_{\Omega} \nabla_{x / y} I\right| ---> \mathcal{R}_{x / y}=\left|\frac{\nabla_{x / y} I}{\frac{1}{|\Omega|} \sum_{\Omega} \nabla_{x / y} I+\epsilon}\right| \]
另外,文章還給出了紋理先驗以及光照先驗,紋理先驗是保持反射圖間斷連續,則紋理先驗能夠造成以下公式:
\[ E_{t}(R)=\left\|\nabla_{x} R\right\|_{1}+\left\|\nabla_{y} R\right\|_{1} \]
做者對\(S=I \cdot R\)進行反轉,變換成了\((1-S)=1-I \cdot R=(1-R) \cdot I+(1-I)\), 經過讓\(\mathrm{H}=1-\mathrm{S}, \mathrm{J}=1-\mathrm{R}, \mathrm{T}=\mathrm{I}\)以及\(a=1\),原始變換成了\(\mathrm{H}=\mathrm{J} \cdot \mathrm{T}+\mathrm{a}(1-\mathrm{T})\),最後公式相似霧霾圖像的造成模型,H表明有霧霾的觀測圖像,J是須要還原出的圖像,T是媒介傳播,a是全球大氣光,做者引用了何凱明等人提出的去霧算法的暗通道先驗,暗通道先驗公式以下所示,更具體地推導能夠看原始論文
\[ T=1-\min _{\Omega}\left(\min _{c \in\{r, g, b\}} \frac{H^{c}}{a}\right) \]
暗通道先驗是說在絕大多數非天空的局部區域內,某一些像素至少一個顏色通道具備很低的值,這是何凱明等人基於5000多張天然圖像的統計獲得的定理。做者根據公式推導出了亮通道先驗,公式以下:
\[ I=1-\min _{\Omega}\left(\min _{c \in\{r, g, b\}}(1-S)^{c}\right)=\max _{\Omega}\left(\max _{c \in\{r, g, b\}} S^{c}\right) \]
而後令\(\mathrm{B}=\max _{\Omega}\left(\max _{c} S^{c}\right)\),最後使用L2距離損失最小化估計光照和亮通道先驗。
\[ E_{l}(I)=\|I-B\|_{2}^{2} \]
聯合優化的最後公式以下:
\[ E(I, R)=\|I \cdot R-S\|_{2}^{2}+\alpha E_{s}(I)+\beta E_{t}(R)+\lambda E_{l}(I) \]
而後因爲\(E_{s}(I)\)以及\(E_{t}(I)\)都是L1範數,非凸,因此做者這兩個先驗進行了改進,變成了L2範數,公式以下:
\[ \left\{\begin{array}{c}{E_{s}(I)=u_{x}\left\|\nabla_{x} I\right\|_{2}^{2}+u_{y}\left\|\nabla_{y} I\right\|_{2}^{2}} \\ {E_{t}(R)=v_{x}\left\|\nabla_{x} R\right\|_{2}^{2}+v_{y}\left\|\nabla_{y} R\right\|_{2}^{2}}\end{array}\right. \]
\[ \left\{\begin{array}{l}{u_{x / y}=\left(\left|\frac{1}{\Omega} \sum_{\Omega} \nabla_{x / y} I\right|\left|\nabla_{x / y} I\right|+\epsilon\right)^{-1}} \\ {v_{x / y}=\left(\left|\nabla_{x / y} R\right|+\epsilon\right)^{-1}}\end{array}\right. \]
項目主頁:https://caibolun.github.io/JieP/
代碼: https://github.com/caibolun/JieP
以前相關人臉本質圖像分解的工做都是在合成數據集中完成的, 但到真實的人臉,不一樣分佈使得泛化效果不好,這篇論文的特點是提出了一種新的訓練範式(SFS-supervision),從真實無標籤的真實人臉數據中學習形狀,反射以及光照,而且還提出了一種更強大的網絡模型(SFS-Net)。
SFS-supervision分爲如下三步:
a) 先使用3DMM中合成的數據集訓練SFS-Net;
b) 而後用訓練好的網絡對真實的人臉數據集生成僞標籤;
c) 最後共同訓練合成數據集以及帶有僞標籤的真實數據集。
直接對真實圖像使用重建損失進行反向傳播會使分解過程當中各個組件發生崩潰而產平生凡解,這裏的僞標籤是很大程度上緩解這種狀況的產生。
SFS-Net網絡結構以下:
網絡並無採用傳統的U-Net結構,做者指出了U-Net的缺點,因爲高頻特徵能夠直接經過遠跳躍鏈接從編碼器傳到解碼器,因此對於鬍鬚以及皺紋這種高頻特徵是不知道它來自於Normal仍是Albedo的,潛在空間所具備的信息性弱,因此做者提出了SFS-Net,經過一個共享Conv,而後分兩路經過Normal Residual Blocks和Albedo Residual Blocks(殘差塊能夠進行低頻與高頻的共同窗習),獲得Normal features和Albedo features,最後Normal features和Albedo features分別經過各自的Conv獲得形狀圖以及反射圖,生成光照信息則是將image features,Normal features和Albedo features三者進行concat,而後經過一個Light Estimator獲得SH light,最後形狀圖和光照信息聯合經過一個函數獲得光照圖,光照圖和反射圖相乘重建出原圖。網絡有四個LOSS,除了SH light是L2 loss,Normal,Albedo以及Recon都是L1 loss。網絡更多細節參考論文附錄以及代碼。
本質圖像分解按照圖片的數量能夠分爲single-image based和multi-image based,基於單張圖片的方法的缺點在於缺乏標籤,而基於多張圖片的算法雖然不須要標籤,但因爲須要多張圖像,這在現實狀況下很難應用。
本文提出了一種全新的思路,經過多張圖片進行無GT訓練,但在測試過程當中使用單張圖片進行預測,還能夠聯合帶標籤的數據進一步提高分解效果,實驗代表當使用50%的標籤圖像時就能夠達到SOTA。網絡結構圖以下:
將不一樣光照條件的同一物體的兩個圖像經過一個共享參數的孿生網絡(用的常規U-Net),獲得兩個圖像的反射圖,光照圖以及軟分配掩模,首先\(I_1\)經過孿生網絡獲得反射圖\(A_1\)以及光照圖\(S_1\), 反射圖\(A_1\)和光照圖\(S_1\)能夠相乘重建原圖\(I_1\),\(I_2\)經過孿生網絡一樣獲得反射圖\(A_2\)以及光照圖\(S_2\),因爲反射圖是光照不變性的,因此\(A_2\)和\(S_1\)一樣能夠重建原圖\(I_1\),兩個重建能夠與\(I_1\)構成兩個重建L1_loss, 軟分配掩模是預測圖片在每點像素值的梯度是屬於反射圖的機率,因此\(I_2\)的梯度與軟分配掩模\(M_2\)相乘表明的是反射圖\(A_2\)的梯度,與預測的\(A_2\)的梯度進行梯度L1_loss,反射圖和光照圖的機率和爲1,經過1減去軟分配掩模\(M_2\)的機率即便光照圖的梯度機率,剩下的操做與反射圖同樣。另外,反射圖可能會出現全白像素的圖像,這種圖像也是光照不變性的,爲了防止這種退化狀況的產生,做者加了一個額外的embedding loss \(L_{1}^{e b d}\)用來正則化,讓兩個反射圖儘量同樣,同時隨機採樣要保持兩個反射圖有差別。
這篇論文是本質圖像分解與語義分割的結合,本質圖像去除了光照的影響,會促進語義分割的準確度,而語義分割的標籤給圖像分塊,使得圖像具備像素塊的顏色信息,邊界導向的信息,同質反射值相同信息等等,因此語義分割應該也會促進本質圖像分解的性能。
因爲缺乏既有本質圖像以及語義分割的數據集,因此做者本身作了一個,場景級下的天然環境合成數據集,含有本質圖像GT以及語義分割GT。另外,做者提出了一個新的層級CNN架構用來聯合訓練本質圖像分解以及語義分割,最後用實驗分析了兩種問題聯合訓練所帶來的好處。
CNN層級架構以下:
網絡結構與U-Net有些不一樣,一個是多一個生成語義分割圖的decoder,另外光照圖的decoder和反射圖以及語義分割的decoder進行了互相層間級聯concat,這種網絡有一點比較有特點,經過這樣級聯以及共用一個編碼器,能夠是本質圖像分解以及語義分割互相影響,相互監督並促進性能提高。做者作了多個實驗驗證了兩個任務的確有促進做用,聯合訓練效果更佳。
損失函數以下圖,反射圖和光照圖使用的MSE以及帶尺度的MSE,語義分割圖用的則是交叉熵損失函數,\(p_{x}^{L}\)表明給定像素x屬於類別L的機率。
\[ \mathcal{L}_{M S E}(J, \hat{J})=\frac{1}{n} \sum_{\boldsymbol{x}, c}\|\hat{J}-J\|_{2}^{2} \]
\[ \mathcal{L}_{S M S E}(J, \hat{J})=\mathcal{L}_{M S E}(\alpha J, \hat{J}) \]
\[ \mathcal{L}_{C L}(J, \hat{J})=\gamma_{S M S E} \mathcal{L}_{S M S E}(J, \hat{J})+\gamma_{M S E} \mathcal{L}_{M S E}(J, \hat{J}) \]
\[ \mathcal{L}_{I L}(R, \hat{R}, S, \hat{S})=\gamma_{R} \mathcal{L}_{C L}(R, \hat{R})+\gamma_{S} \mathcal{L}_{C L}(S, \hat{S}) \]
\[ \mathcal{L}_{C E}=-\frac{1}{n} \sum_{x} \sum_{L \in O_{x}} \log \left(p_{x}^{L}\right) \]
\[ \mathcal{L}_{J L}(I, R, \hat{R}, S, \hat{S})=\gamma_{C E} \mathcal{L}_{C E}+\gamma_{I L} \mathcal{L}_{I L}(R, \hat{R}, S, \hat{S}) \]
項目主頁:https://ivi.fnwi.uva.nl/cv/intrinseg(數據集和模型還未公開)
這篇論文分析現有本質圖像數據集存在的一些問題,如合成數據集受限於單個物體(shapeNet),不真實的光照(CG Animation),缺乏細節以及低信噪比(SUNCG),而真實本質圖像數據集是稀疏的(IIW和SAW),而且難以收集富集標籤,做者在這篇論文中提出了一個高質量,高信噪比,真實的,仔細渲染的合成數據集CGI(基於SUNCG,擁有大於20000張圖片並帶有GT)。另外,做者用半監督學習方式來聯合訓練帶標籤的CGI以及無標籤的IIW和SAW,最後在IIW以及SAW兩種數據集下達到了SOTA。使用的網絡仍是基本的U-Net,以下圖。
損失函數以下圖,詳細公式能夠參考原論文。
\[ \mathcal{L}=\mathcal{L}_{\mathrm{CGl}}+\lambda_{\mathrm{IM}} \mathrm{L}_{\mathrm{IIW}}+\lambda_{\mathrm{SAW}} \mathcal{L}_{\mathrm{SAW}} \]
\[ \mathcal{L}_{\mathrm{CGl}}=\mathcal{L}_{\mathrm{sup}}+\lambda_{\mathrm{ord}} \mathcal{L}_{\mathrm{ord}}+\lambda_{\mathrm{rec}} \mathcal{L}_{\mathrm{reconstruct}} \]
\[ \mathcal{L}_{\mathrm{IIW}}=\lambda_{\mathrm{ord}} \mathcal{L}_{\mathrm{ord}}+\lambda_{\mathrm{rs}} \mathcal{L}_{\mathrm{rsmooth}}+\lambda_{\mathrm{ss}} \mathcal{L}_{\mathrm{ssmooth}}+\mathcal{L}_{\mathrm{reconstruct}} \]
\[ \mathcal{L}_{\mathrm{SAW}}=\lambda_{\mathrm{S} / \mathrm{NS}} \mathcal{L}_{\mathrm{S} / \mathrm{NS}}+\lambda_{\mathrm{rs}} \mathcal{L}_{\mathrm{rsmooth}}+\lambda_{\mathrm{ss}} \mathcal{L}_{\mathrm{ssmooth}}+\mathcal{L}_{\mathrm{reconstruct}} \]
這篇論文是將本質圖像分解應用在低光照加強上面的。做者收集了一個包含低/正常光圖像對的低光數據集(LOL),並提出了一個在該數據集上學習到的深層Retinex網絡,包括用於分解的Decom-Net和用於照明調節的Enhance-Net。在Decom-Net的訓練過程當中,沒有分解反射率和光照的地面真實值。Decom-Net只在關鍵約束條件下學習,包括匹配的低/常光圖像共享的一致反射率和光照的平滑度。在分解的基礎上,利用Enhance-Net加強光照進行後續亮度加強,聯合去噪時對反射率進行去噪操做。模型結構以下:
兩個輸入分別爲input_high和input_low,input_high在Decom-Net的輸出是R_high和I_high,input_low在Decom-Net的輸出是 R_low和I_low, Enhance-Net的輸出是I_delta。
Decom-Net loss:
Enhance-Net loss: