總結一些超分領域的基礎知識
圖像超分 (Image Super-Resolution) 是在計算機視覺圖像進行中用于增強圖檔和視訊的分辨率的技術。Super-Resolution (SR) 主要是指将低分辨率 (Low-Resolution LR) 圖檔複原到高分辨率 (High-Resolution HR) 圖。其在現實生活中應用廣泛,包括醫療圖像、監控和幫助改善一些其他的計算機視覺任務。
一般來說,超分問題是具有挑戰性和病态 (ill-posed) 的,因為一張 LR 的圖檔對應着多種 HR 圖檔。傳統的方法主要包括基于預測的方法、基于邊緣的方法、基于統計的方法和稀疏表達的方法等。然而随着近年深度學習的飛速發展,基于深度學習的 SR 方法已經在 SR 的各類 benchmark 達到了 the state of the art 水準。
SR 問題常常被定義為一系列圖像的退化問題,常常用下述表達式來進行 model SR 問題的圖像退化過程。
\[\mathcal{D}(I_y;\delta) = (I_y \otimes k) \downarrow_{s} + \eta
\]
其中 \(I_y \otimes k\) 表示一個模糊核 (blur kernel) \(k\) 和 HR 圖 \(I_y\) 之間的卷積,\(\eta\) 則是圖像中的噪聲,一般為高斯白噪聲。
而 SR 的目标則變成一個優化問題,由下式定義:
\[\hat{\theta} = \underset{\theta}{argmin} \mathcal{L}(\hat{I}_y, I_y) + \lambda \Phi(\theta)
其中 \(\mathcal{L}(\hat{I}_y, I_y)\) 表示生成的 SR 圖 \(\hat{I}_y\) 和真值圖 \(I_y\) 之間的 loss 函數,\(\Phi(\theta)\) 是正則化項,\(\lambda\) 是超參數。
在常用的公開資料集中,一部分是有 LR-HR 圖檔對的,一部分是隻提供 HR 圖檔,然後常常再使用 MATLAB 中的 imresize 來獲得 LR 圖。
圖像品質指的是圖像的視覺屬性和觀看者的感受評價。一般來說,IQA 一般包括主觀的方法(基于人類的感受)與客觀計算的方法。前者是我們更需要的,但是耗時和成本都是昂貴的,是以後者是主流的。但是客觀計算的方法往往不能達成一緻,以緻于在 IQA 評價結果上可能差别較大。
峰值信噪比(PSNR) 是最普遍的重建品質的衡量标準。對于超分來說,通過最大像素值 \(L\) 和兩張圖檔的均方誤差 \(MSE\) 來定義 PSNR。考慮有 \(N\) 個像素的真值圖檔 \(I\) 與重建圖檔 \(\hat{I}\),PSNR 定義如下:
\[\mathrm{PSNR} = 10 \cdot \log_{10}(\frac{L^2}{\frac{1}{N}\sum_{i=1}^N (I(i)-\hat{I}(i))^2})
一般來說,\(L=255\)。因為 PSNR 是關注了像素級的 MSE,使用對應像素的差異來替代視覺感受,是以用 PSNR 來表示重建品質常常在更關注人類感受的實際場景表現不好。
由于人類視覺系統(Human Visual System HVS)更關注圖像的結構,是以基于獨立比較亮度(luminance)、對比度(contrast)和 structures 而提出結構相似性指數,其主要用于衡量圖像間的結構相似性。考慮有 \(N\) 個像素亮度為 \(\mu_I\) 、對比度為 \(\sigma_I\) 的真值圖檔 \(I\) (其中亮度和對比度定義為圖像強度的均值和标準差),于是真值圖 \(I\) 和重建圖檔 \(\hat{I}\) 關于亮度和對比度的定義如下:
\[\begin{aligned}
\mathcal{C}_l (I,\hat{I}) &= \frac{2\mu_I \mu_{\hat{I}}+C_1}{\mu_I^2+\mu_{\hat{I}}^2+C_1} \\
\mathcal{C}_c (I,\hat{I}) &= \frac{2\sigma_I \sigma_{\hat{I}}+C_1}{\sigma_I^2+\sigma_{\hat{I}}^2+C_1}
\end{aligned}
其中 \(C_1=(k_1L)^2,C_2=(k_2L)^2,k_1 \ll 1,k_2 \ll 1\) 用以防數值溢出。此外,圖檔的結構用标準化的像素值,其相關性可以用來衡量結構相似性,一般用 \(I\) 和 \(\hat{I}\) 的協方差來計算。結構對比函數定義如下:
\sigma_{I\hat{I}} &= \frac{1}{N-1}\sum^N_{i=1}(I(i)-\mu_I)(\hat{I}(i)-\mu_{\hat{I}}) \\
\mathcal{C}_s(I,\hat{I}) &= \frac{\sigma_{I\hat{I}}+C_3}{\sigma_I\sigma_{\hat{I}}+C_3}
最後定義 \(\mathrm{SSIM}\) 定義如下:
\[\mathrm{SSIM}(I,\hat{I}) = [\mathcal{C}_l(I,\hat{I})]^{\alpha}[\mathcal{C}_c(I,\hat{I})]^{\beta}[\mathcal{C}_s(I,\hat{I})]^{\gamma}
因為結構相似指數是從 HVS 的角度來評價重建品質,是以它更接近人類感受的評價。
因為圖像的超分是一個病态問題,是以如何進行 upsampling 是一個關鍵的問題。現有的模型種類非常多,但根據所應用的 upsampling 運算和它們在模型中的位置主要分為 4 種。
考慮到直接學習從低維空間到高維空間映射的難度,是以使用傳統上采樣算法獲得高分辨圖像,然後通過深度神經網絡是一個直接的解法。SRCNN 是前置上采樣 SR 架構的開山之作,其先通過傳統的方法将 LR 圖像通過傳統的方法進行上采樣到粗糙的 HR,再用神經網絡進行填充細節。這類模型(如上圖 (a))常常可以将輸入進行任意倍數任意 size 的上采樣進而輸出任意尺寸的圖像。
然而,前置上采樣經常引入副作用,比如噪聲和模糊效果也同步放大,又因為是在高維空間進行計算,是以時間和空間的代價都遠遠高于其他模型。
顯然對比前置上采樣,後置上采樣的好處當然就是計算的高效與更充分使用深度學習了。這類模型(如上圖 (b))常常在模型的尾部嵌入了一個預定義且可端到端學習的上采樣層。因為占用的計算資源較少,是以成為了主流的結構。
後置上采樣 SR 并非全無缺點,因為隻在末端進行一次上采樣,常常在面對較大倍數上采樣時出現學習困難的情況,另外,每個上采樣倍數都需要重新訓練一個模型。Laplacian pyramid SR network (LapSRN) 即為一個逐漸上采樣的網絡結構(如上圖 (c)),它是一個級聯的 CNN 結構,在每一個階段都會被上采樣到更高分辨率,然後被作為後面的 CNN 的輸入進行細節的填充。
雖然這種模型很好解決了較大尺寸上采樣和多尺度 SR的問題,但是其複雜的模型結構設計、訓練的穩定性,以及需要更先進的訓練政策給設計者和使用者造成了困擾。
為了更好的擷取 LR-HR 圖像對的依賴性,一個有效的可疊代稱之為 back-projection 的過程融合進入了 SR。這種結構被命名為可疊代上下采樣 SR(如上圖 (d)),其通過應用 back-projection refinement 計算重建的誤差,然後将其融合來即時調整 HR,如:DBPN、SRFBN、RBPN 等。然而關于 back-projection 子產品的設計準則依然不清晰,這種結構擁有巨大潛力還需要繼續探索。
轉置卷積也就是反卷積 (deconvolution) ,其通過 size 如同普通卷積輸出的特征圖來預測跟普通卷積輸入一樣的 tensor。如上圖,其通過插零和卷積的方式來提升圖像的分辨率。以 3*3 的 kernel 進行 2 倍的超分為例,首先如圖 (b) 進行插零使其成為原圖尺寸的二倍,然後通過 padding 後進行卷積得到上采樣後的圖。轉置卷積不好的地方在于容易在每一個軸導緻 uneven overlapping 的問題,而且兩個軸相乘的結果進一步創造棋盤式的 varying magnitudes ,進而影響 SR 效果。
Sub-pixel Layer 通過卷積層生成大量的通道,然後再重新 reshape 以到達上采樣的效果。如上圖所示,圖像首先通過卷積層生成通道為原通道的 s * s 倍的 tensor (其中 s 為 scaling factor)比如如果輸入的 size 是 c * w * h,那麼輸出的 size 便為 (s * s * c) * w * h。然後通過 reshape 運算得到最後的輸出 size 為 c * sw * sh。對比轉置卷積 Sub-pixel Layer 通過語義更強的資訊來生成更真實地細節(沒有 padding 和 插零)。因為 blocky 區域共享同樣地卷積核,是以可能再不同地 blocks 邊界造成 artifacts。另一方面,獨立預測一個 blocky 區域中的相鄰像素可能會導緻不平滑地輸出。是以有人提出了 PixelTCL 來解決這個問題。
之前的方法都會預定義 scaling factors,訓練不同得上采樣 module 來進行不同 factor 的上采樣。meta upscale module 第一次基于元學習解決了任意 scaling factors 的上采樣。對于 HR 圖像的每一個目标位置,這個 module 都将其 project 回 LR 圖像中的一個小 patch。然後根據 projection 的 offsets 與 scaling factors 來用卷積進行預測卷積的權重。然後通過用預測的卷積權重來對 LR 的 patch 進行卷積得到 HR。雖然說這種方法需要在推理階段預測權重,但所占時間并不多。可是,由于這種方法對 HR 每一個像素都會去預測權重,當面臨較大 magnification 時,會顯得效率低下。
在何凱明在 ResNet 大量使用殘差學習之前,其早已在超分模型廣泛應用了(如上圖(a))。并且殘差學習的政策可以别分為全局和局部的殘差學習。
全局殘差學習。因為圖像 SR 是一個圖像到圖像轉換的任務,其中輸入圖像是與輸出圖像高相關的,而隻學習它們之間的殘差被稱之為全局殘差學習。因為殘差的大部分區域趨近于 0,模型的複雜性和學習的難度被大幅度降低,進而被廣泛應用于超分模型。
局部殘差學習。這與 ResNet 中的應用相似,而且也被用于緩解因網絡層數加深而導緻的梯度消失問題。跟全局殘差學習一樣,都是應用了 shortcut connection 然後再點加。
為了在不引入過多參數的情況下學習 higher-level features,循環學習就是循環的使用一個子產品(如圖(b))。例如 the 16-recursive DRCN 應用了單層卷積層作為循環單元最終獲得 4141 的感受野,其比 SRCNN 的 1313 大得多,并且沒有引入過多的參數。雖然這種方法不會引入過多的參數,但是也是無法避免高計算代價的。
多路徑學習指的是通過多條路徑來傳輸 features,不同路徑有不同的運算和不同的融合。
全局多路徑學習。其主要利用多路徑進行不同 aspects 圖檔的特征提取,這些路徑在傳播的過程互相交叉,是以極大的增強了學習能力。
局部多路徑學習。如圖(e),受到 Inception 使用一個子產品來提取不同 scale 的特征影響,其用兩種不同的卷積層一種卷積核是 33,另外一種卷積核是 55,來同時提取特征,最後将輸出進行 concat。其是在網絡結構内部進行了多路徑學習,顧名思義為局部多路徑學習。
特定尺寸多路徑學習。其會共享模型的主要部分,在網絡開始或者結束的地方會有特定 scale 的預處理(如圖(f))。在訓練階段,隻有所選 scale 分支會被更新。MDSR 通過這種方式大大降低了模型的容量,并且表現出與單
scale 模型相同的水準。
自從 Huang 基于 dense blocks 提出了 DenseNet,dense connections 在視覺任務中是越來越普遍了。對于 dense block 中的每一層,之前所有層的特征圖都是其輸入,當然它自己的特征圖也會被當作輸入送入到之後的所有層。dense connections 不僅減輕了梯度消失的問題,增強了信号傳播與特征的融合。
為了更好的融合 high-level 與 low-level 的特征,進而給重建高品質的細節提供豐富的資訊,dense connection 被引入至 SR 領域(如圖(d))。MemNet、CARN、RDN、DBPN 和 ESRGAN 都使用了 dense connections。
Channel Attention。考慮到不同通道之間特征表達的内在聯系(如圖(c)),Hu 提出了以 squeeze-and-excitation 的方式來改善學習能力。這種方式,輸入(B * C * W * H)的通道被使用全局平均池化 (GAP) squeeze 到稱之為 channel descriptor 的狀态(B * C * 1 * 1),然後再通過全連接配接後輸出通道相關的權重(B * C * 1 * 1)并分别和輸入(B * C * W * H)進行點乘。RCAN 使用了通道注意力使得 SR 模型表達能力和表現大大提升。
Non-local Attention。大多數的 SR 模型感受野都是局限的,可是往往相隔甚遠的兩個 patch 是有關聯的。是以 Zhang 提出了局部和非局部注意力來擷取像素之間的長程依賴。他們使用一個分支來提取特征,一個 mask 分支來自适應 rescaling 特征。在它們之中,local 分支使用 encoder-decoder 的結構來學習局部注意力,然而 non-local 分支 embed 高斯函數來評估特征圖中每兩個位置的關系,進而預測 scaling 權重。
多數的超分模型将 SR 看作一個像素獨立的任務,不能将生成的像素之間的内在聯系合理的利用。受到 PixelCNN 啟發,Dahl 第一次提出了像素循環來進行像素間的生成,其通過使用兩個網絡來擷取全局語義資訊和連續生成的聯系。這種方法可以用非常低像素的圖檔來生成真實的頭發和皮膚細節。但是這種方法的缺陷在于更長的傳播增加了計算的成本和訓練的難度。
在超分早期,研究者常常使用像素之間的 L2 loss 來衡量重建的誤差與引導模型優化。但後來發現這不能很準确的衡量重建的品質(而且容易使圖像變得平滑),是以許多 loss 函數應運而生。
Pixel Loss 常常用于衡量兩張圖像之間像素與像素的差異。主要包括 L1 loss 和 L2 loss。
\mathcal{L}_{pixel\_l1}(\hat{I},I) &= \frac{1}{hwc} \sum_{i,j,k} \lvert \hat{I}_{i,j,k} - I_{i,j,k} \rvert \\
\mathcal{L}_{pixel\_l2}(\hat{I},I) &= \frac{1}{hwc} \sum_{i,j,k} ( \hat{I}_{i,j,k} - I_{i,j,k} )^2
另有一種 L1 loss 的變種稱之為 Charbonnier loss:
\[\mathcal{L}_{pixel\_Cha}(\hat{I},I) = \frac{1}{hwc} \sqrt{\sum_{i,j,k} ( \hat{I}_{i,j,k} - I_{i,j,k} )^2+\epsilon^2}
Pixel loss 旨在使得 SR 和真值在像素值上足夠的接近。相比于 L1 loss,L2 loss 對小誤差的容忍性更強(小于 1 的小數的平方更小),是以會産生更平滑的結果。Pixel loss 實際上是沒有考慮圖像品質的,其結果缺乏高頻細節,而且常常會帶有過度平滑的效果。
Content Loss 是用于評估圖檔的感覺品質 (perceptual quality)。主要的做法是使用一個預訓練的分類網絡,這個網絡一般用 \(\phi\) 表示,那麼網絡第 \(l\) 層提取的高層特征圖用 \(\phi^{(l)}\) 表示,定義 loss 如下:
\[\mathcal{L}_{content}(\hat{I},I;\phi,l) = \frac{1}{h_lw_lc_l} \sqrt{\sum_{i,j,k} ( \phi^{(l)}_{i,j,k}(\hat{I}) - \phi^{(l)}_{i,j,k}(I) )^2+\epsilon^2}
比起 Pixel loss,Content Loss 使 SR 在人類感覺上與真值圖更加接近,而不是一味追求對應的像素值相近。常常使用 VGG 或者 ResNet 作為 \(\phi\)。
Texture Loss 是在考慮重建圖像應該有與目标圖像相同的風格,同時受到 Gatys 提出的風格表達的啟發,texture loss 被引入 SR。圖像的 texture 被看作是不同特征通道之間的聯系,并定義為 Gram 矩陣 \(G^{(l)} \in \mathbb{R}^{c_l \times c_l}\)。其中:
\[G^{(l)}_{ij}(I) = vec(\phi^{(l)}_{i}(I))\cdot (\phi^{(l)}_{j}(I))
上述下标均代表的不同通道。最後 loss 定義如下:
\[\mathcal{L}_{texture}(\hat{I},I;\phi,l) = \frac{1}{c_l^2} \sqrt{\sum_{i,j,k} (G^{(l)}_{ij}(\hat{I}) - G^{(l)}_{ij}(I) )^2+\epsilon^2}
Adversarial Loss 是 GAN 領域的東西。在超分領域,SR 模型被看作生成器,然後另外再定義一個判别器。基于交叉熵 SRGAN 使用了對抗 loss:
\mathcal{L}_{gan\_ce\_g}(\hat{I};D) &= -\log D(\hat{I}) \\
\mathcal{L}_{gan\_ce\_d}(\hat{I},I_s;D) &= -\log D(I_s) - \log (1-D(\hat{I}))
以上分别代表生成器和判别器的對抗 loss,\(D(I)\) 代表圖像經過判别器後的結果,結果越接近 1,表示判别器覺得它越是真的。\(I_s\) 代表從真值上随機采樣的結果。MOS 實驗表示盡管使用 Adversarial Loss 和 Content Loss 的 SR 模型在 PSNR 的名額上評價相對低一些,但在感覺品質上是很不錯的。
Cycle Consistency Loss 是受到 CycleGAN 啟發,将其引入至超分領域。總體而言,其不僅考慮如何将 LR \(I\) 變換到 HR \(\hat{I}\),同時使用另外一個 CNN 将 \(\hat{I}\) 變換回另外一張 LR \(I^{\prime}\)。這兩張 LR 需要保持一緻,因而有:
\[\mathcal{L}_{cycle}(I^{\prime},I) = \frac{1}{hwc} \sqrt{\sum_{i,j,k} ( I^{\prime}_{i,j,k} - I_{i,j,k} )^2+\epsilon^2}
Lim 指出 BN 層會使得每張圖像的 scale 資訊缺失并且使網絡變化失去靈活性,而且當去除 BN 時,會節約 40% 的記憶體。
其主要思想為 使用多個 SR 網絡進行預測,得到預測結果後将其全部送入獨立的卷積層,最後将輸出進行求和得到最後的預測結果。
多任務學習主要通過使用類似目标檢測、語義分割等任務來獲得特定領域的資訊來改善泛化能力。在超分領域,Wang 使用語義分割網絡來提供語義先驗知識,然後生成生成特定的語義細節(SFT-GAN)。此外,考慮到直接超分含有噪聲的圖檔可能會導緻噪聲的放大,DNSR 分别訓練了噪聲網絡和超分網絡,然後将其 concat 到一起,最後進行 fine-tune。
首先将 LR 圖檔進行不同角度 \((0^{\circ},90^{\circ},180^{\circ},270^{\circ})\) 和水準翻轉的 8 種變換。然後将這些圖檔喂入 SR 模型中得到最後的輸出後取它們的均值或者中位數。