CVPR20的文章,感覺想法挺棒的。
超分問題可以定義為$y=(x\otimes k)\downarrow_s+n$.他通常有兩大類解決方法,早期通常是使用model-based方法。基於一些模型,比如MAP(最大后驗概率)進行計算。在MAP的框架下,超分辨率重建是一個基於馬爾科夫隨機場先驗模型的統計推斷問題,即在給定低分辨率圖像序列的條件下,通過選取與設計合理的馬爾科夫隨機場先驗模型,使得超分辨率重建估計的高分辨率圖像的后驗概率達到最大。model-based方法不需要訓練,可以適應不同的縮放因子s、模糊核k和噪聲n,且具有比較好的可解釋性。但是他的問題在於計算很復雜,從而限制了model-based方法的發展。在深度學習出現后,自然而然出現了將深度學習應用於超分問題的方法。但這種learning-based的方法靈活性較差,雖然目前已經可以在一個模型中處理不同縮放因子或是可以針對不同模糊核的方法,但是同時針對不同縮放因子、模糊核和噪聲的工作較少。
本文的工作就是提出了一種方法結合model-based和learning-based,使得USRNet具有在一個模型中處理不同模糊核、縮放比和噪聲的靈活性,又可以像learning-based方法一樣以一種端到端的方式進行訓練從而保證有效性和效率。本文工作的前提是模糊核和噪聲是已知的。
目前實際上也有結合這兩種方法的工作,即deep plug-and-play方法。但他是將學到的CNN作為先驗plug進MAP框架中,因此他具有model-based方法的缺點。
而本文提出的方法作者稱為是deep unfolding方法,核心是用半二次分裂法將問題分解為兩個子問題。變量分裂法是解決目標函數是兩個函數之和的優化問題。其中半二次分裂法一般是將正則項中的原始變量進行變量替換,然后增加拉格朗日乘子項和二次懲罰項,這么做的目的是,去耦合的同時,簡化計算。對於超分問題目標就是要最小化$E(x)=\frac{1}{2\sigma^2}||y-(x\otimes k)\downarrow_s||^2+\lambda\Phi(x)$,其中$\lambda\Phi(x)$就是懲罰項或者叫prior term。再將懲罰項中的$x$替換為輔助變量$z$,$E_\mu(x, z)=\frac{1}{2\sigma^2}||y-(x\otimes k)\downarrow_s||^2+\lambda\Phi(x)+\frac{\mu}{2}||z-x||^2$,其中$\mu$為懲罰參數。
$z_k=argmin_z||y-(z\otimes k)\downarrow||^2+\mu\sigma^2||z-x_{k-1}||^2, x_k=argmin_x\frac{\mu}{2}||z_k-x||^2+\lambda\Phi(x)$。$z_k$可以用快速傅里葉變換計算得到(具體為什么不太明白...),對於$x_k$從貝葉斯角度來看他實際對應於一個噪聲為$\beta_k$的去噪問題。
下圖是作者提出的網絡模型結構,包含三個模塊:data module D用於計算$z_k$, prior module P用於計算$x_k$,計算時由於需要用到超參所以還引入了一個hyper-parameter module H用於計算每一次迭代時需要用到的$\alpha_k, \beta_k$,其中$\alpha_k$由$\sigma, \mu_k$決定,$\beta_k$由$\lambda, \mu_k$決定。作者指出,雖然可以去學到固定的$\lambda$和$\mu_k$,但讓$\lambda, \mu_k$在迭代過程中隨$\sigma, s$變化就足夠了。
data module不包含任何可學習參數,並且將輸入$y$與$s$進行最近鄰插值得到$x_0$。P模塊的結構為一個ResUNet,相當於一個denoiser,對$z_k$進行去噪得到cleaner的HR$x_k$。H的作用類似一個滑動條,$\alpha_k$增大會使$z_k$更接近於$x_{k-1}$,由3層全連接層組成。作者還指出,雖然這是針對SISR問題提出的,但是如果將縮放因子s設置為1,也可以將其應用於deblurring。
一些實驗結果,感覺表現還是很好的。