【超分辨率】—基於深度學習的圖像超分辨率最新進展與趨勢


 1、簡介

圖像超分辨率是計算機視覺和圖像處理領域一個非常重要的研究問題,在醫療圖像分析、生物特征識別、視頻監控與安全等實際場景中有着廣泛的應用。隨着深度學習技術的發展,基於深度學習的圖像超分方法在多個測試任務上,取得了目前最優的性能和效果。本文介紹的一篇綜述(Deep Learning for Image Super-resolution:A Survey)給出了一個統一的深度學習視角,來回顧最近的超分技術進展,主要包括三個方面:

  1. 給出了綜合性的基於深度學習的圖像超分技術綜述,包括問題設置、數據集、性能度量、一組基於深度學習的圖像超分方法集合,特定領域的圖像超分方法應用等等。
  2. 為最近基於深度學習的圖像超分算法提供了系統性、結構化的視角,並總結了高效圖像超分解決方案中的優勢與劣勢。
  3. 討論了這個領域的挑戰與開放問題,並總結了最近的新趨勢與未來的發展方向。

 

2、最新進展

2.1 超分網絡的升采樣結構

根據升采樣(upsampling)在網絡結構中的位置和使用方式,可以把超分網絡結構設計分為四大類:前端升采樣(pre-upsampling)超分網絡、后端(post-upsampling)升采樣超分網絡、漸進式升采樣(progressive upsampling)超分網絡、升降采樣迭代式(iterativeup-and-down sampling)超分網絡。

  • 前端升采樣網絡,一般使用雙三次(bicubic)插值直接將低分辨率圖像插值到目標分辨率,然后深度卷積網絡等模型重建高質量細節信息,這類方法顯著降低了學習的難度,但是預先設定的升采樣方法會引入模糊(noise)、噪聲放大(noise amplification)等問題,同時因為網絡在前端即進行插值到高分辨率空間,所需的存儲空間和耗時都遠高於其他類型超分網絡。
  • 后端升采樣網絡,一般在網絡結構的最后一層或幾層,使用端到端可學習的升采樣層,絕大部分映射變換都在低分辨率空間進行,計算復雜度和空間復雜度都明顯降低,同時訓練和測試速度也都明顯提高,被多前主流超分網絡框架所使用。
  • 漸進式升采樣網絡,主要是解決多個超分倍增系數(scaling factor)和大的超分倍增系數,升采樣不是一步完成的,而是采用拉普拉斯金字塔或者級聯CNN等方式,產生一些中間(intermediate)的重建圖像作為后續模塊的輸入圖像(“base images”),另外諸如課程學習(curriculum learning)和多級監督(multi-supervision)等學習策略也可以被引入進來,這類方法可以降低學習難度,特別是在大的超分倍增系數時。另外,在多尺度超分問題上也可以減少參數量和耗時。
  • 升降采樣迭代式超分網絡,借鑒了反向投影(back-projection)的思想,通常會交替地使用升采樣和降采樣層,最終重建的高分辨率結果會用到之前全部中間層得到高分辨率特征圖,這類方法的思想剛被引入圖像超分問題不久,已經取得了非常好的性能和效果,有很大的潛力,值得關注和探索。

2.2 可學習的升采樣方法

  • 轉置卷積(transposed convolution),也就是所謂的反卷積(deconvolution),相當於正常卷積的反向操作,可以嵌入到端到端的網絡結構中,但是容易產生棋盤格效應。
  • 亞像素(sub-pixel)卷積,同樣可以嵌入到端到端的網絡結構中,使用正常的卷積結構,但是輸出的通道數(channel)與目標分辨率有關,隨后對這些通道進行“洗牌”(shuffle)操作,類似於像素重排,得到與目標分辨率相同的輸出。亞像素卷積與轉置卷積相比,最大的優勢在於神經元的感受野較大,可以為超分辨率重建提供更多上下文信息,但是這些神經元感受野的分布是不均勻的,像素“洗牌”操作中同一個小塊狀區域(blocky region)的感受野相同,容易在一些邊緣區域產生偽影現象。

2.3 全局和局部網絡結構設計

  • 殘差學習(residual learning),在ResNet被提出之前,在超分領域對殘差進行學習的思想已經在很多研究工作中出現。其中,全局殘差學習(global residual learning)只是學習插值后得到的圖像和高分辨率圖像之間的殘差,通過學習一張殘差圖來恢復高頻細節;而局部殘差學習(local residual learning)則類似於ResNet中的短連接(shortcut connection)。
  • 遞歸學習(recursive learning)可以不引入額外參數的同時,大大增加網絡的感受野,做法就是遞歸地多次使用同個模塊,例如對同一卷積層遞歸使用多次,還有將大的超分倍增系數的問題,分解成多個子問題,使用遞歸的網絡子結構來解決等等。但是,遞歸學習容易出現梯度消失和爆炸的問題,需要將殘差學習和多級監督等策略融入進來以減輕這些問題。
  • 多支路學習(multi-path learning)主要思路是為網絡設計多條支路來提升模型的容量和表達能力,分為全局多支路學習(global multi-path learning)、局部多支路學習(localmulti-path learning)、尺度相關的多支路學習(scale-specificmulti-path learning)等
  • 稠密連接(dense connections),是與DenseNet緊密聯系的,稠密連接被引入圖像超分問題,不僅可以減輕梯度消失的問題,還可以對特征進行重用,提升效果,在使用小的增長率(growth rate)時,可以很好地控制參數量,目前越來越受到關注和使用。
  • 通道重縮放(channel attention)是考慮特征表達中不同通道之間的關系,通常是引入一些額外的小結構來按通道(channel-wise)進行重縮放(rescale)。
  • 高級卷積結構(advanced convolution),近來受到關注的主要是空洞卷積(dilated convolution)和成組卷積(group convolution)兩種。
  • 像素遞歸學習(pixel recursive learning),這類方法是逐像素生成(pixel-by-pixel generation)高分辨率圖像的,可以更好地捕獲全局上下文信息和像素序列生成時的相關性,但是計算代價很高,同時訓練也比較復雜。
  • 金字塔池化(pyramid pooling)通常使用多個不同的尺度參數,來聚合全局和局部上下文信息。
  • 小波域變換(wavelet transformation)分別對高分辨圖像和低分辨率圖像進行小波變換,在不同的子頻帶(sub-bands)進行映射學習。

2.4 損失函數設計

  • 像素級(pixel loss),主要比較兩幅圖像像素級的差別,包括L1損失(i.e., mean absolute error)和L2損失(i.e., mean square error),不過與L1損失相比,L2損失可以懲罰較大的誤差,但對較小的誤差具有較強的容忍度。近來研究表明L1損失可以取得更好的性能和收斂速度。這類損失沒有對圖像內容和語義進行評價,通常會產生過於平滑的超分結果。
  • 內容損失(content loss),主要是從圖像內容理解和感知層面對圖像質量進行評價,通常使用預訓練好的圖像識別(如VGG和ResNet等)網絡,比較中間某些層的特征圖之間的歐式空間距離。
  • 紋理損失(texture loss),想法來源於風格遷移工作中,重建圖像應該與原始圖像有相同的風格(顏色、紋理、對比度等)。因此,紋理損失又稱為風格重建損失(style reconstruction loss),一般使用不同特征通道的相關性來度量。通過使用紋理損失,SR模型可以創建真實的紋理,並產生更令人滿意的視覺效果。盡管如此,確定補丁的大小(patch size)以匹配紋理仍然是經驗之談。太小的patch會導致紋理區域中的人工制品,而太大的補丁會導致整個圖像中的人工制品(artefacts),因為紋理統計數據是不同紋理區域的平均值。
  • 對抗生成損失(adversial loss),隨着GAN的興起,對抗生成網絡中生成器和判別器的思路被引入超分問題,超分網絡即是生成器(generator),另外定義一個判別器來判斷輸入的圖像是否為生成的。在這種損失函數中,也可以借鑒內容損失的想法,判別器使用圖像的高層表達來進行判斷。
  • 往復一致性保持損失(cycle consistency loss),受CycleGAN的啟發,通常是在兩階段生成時,保持再次生成的圖像和原始輸入相同。
  • 全變分損失(total variation loss),主要是為了抑制生成圖像中的噪聲,一般定義是相鄰像素之間差的絕對值,引入全變分損失可以使圖像變得平滑。
  • 基於先驗知識的損失(prior-based loss),通過一些外部已知的先驗,作為一些約束放入損失函數,例如人臉超分對關鍵點的約束等。

2.5 批歸一化

批歸一化(BatchNormalization,BN)層在很多視覺任務中被驗證有效,但是在最近關於超分中使用BN層存在一些爭議,部分研究者指出使用BN層會丟失圖像的尺度信息和網絡參數的自由范圍變化,導致超分效果下降。

2.6 課程學習

課程學習(curriculumlearning)從簡單的子任務開始逐漸增加難度,因為圖像超分問題存在很多困難情形,如大的超分倍增系數,噪聲,模糊等,這種從易到難的策略可以起到很大幫助。例如,可以將8x的超分問題分解成三個子問題,1x到2x,2x到4x,4x到8x,為每個子問題單獨學習一個網絡。

2.7 多級監督

多級監督(multi-supervision)為網絡的學習增加多個額外的監督信號,可以有效減輕梯度消失和爆炸問題,例如在遞歸式結構中就可以使用多級監督策略,對每一級遞歸產生的結果進行監督,通常多級監督的表現形式是在損失函數里添加了若干相關項。

2.8 其他網絡設計和學習策略

  • 上下文融合網絡(context-wise network fusion,CNF),將多個超分網絡模型的結果使用stacking的策略融合起來。
  • 數據增強(data augmentation),常見的隨機裁剪、翻轉、縮放、旋轉、顏色微小抖動等,最近也出現了隨機打亂RGB三個通道的方法。
  • 多任務學習(multi-task learning),通過訓練數據中和超分相關聯的任務蘊含的專有領域的信息來提升模型的泛化性能。例如可以分別訓練一個去噪網絡和一個超分網絡,或者嵌入預訓練好的語義分割網絡來提供語義信息等。
  • 網絡插值(network interpolation),為了平衡視覺質量和圖像保真度,可以對兩個網絡相應參數進行插值,來生成中間模型,不需要重訓練就可以得到折中的超分結果。
  • 圖像自融合(self ensemble),又稱預測增強(enhanced prediction),將一張圖像多種旋轉角度后,得到一組圖像,分別得到超分辨圖像,然后逆旋轉回到原始角度,將所有這組超分辨率圖像進行加權平均或者取中值,得到最終的超分結果。

2.9 無監督圖像超分辨率

監督學習的圖像超分辨率,基本上是學習了人為設計的圖像降質過程的逆過程,需要LR-HR的圖像對(image pairs),與實際場景中的圖像超分問題不太符合。實際中的超分問題,只有不成對(unpaired)的低分辨率和高分辨圖像可以用來進行訓練。無監督的圖像超分辨率也受到越來越多關注。

  • 零樣本學習的圖像超分

考慮到圖像自身內容就可以為超分提供統計信息,因此,可以不用在大數據集上訓練一個普適超分模型,而是在測試階段訓練一個專有圖像的超分網絡,比如可以使用核估計(kernel estimation)的方法在單張測試圖像中估計降質過程,但是這類方法每張圖像測試時都需要學習一個網絡,非常耗時。

  • 弱監督學習的圖像超分

近來弱監督學習的圖像超分主要有兩類方法,一類是學習HR到LR的降質過程,一類是同時學習LR到HR,HR到LR這種往復的映射(cycle-in-cycle)關系。

  • 深度圖像先驗

深度圖像先驗(DeepImage Prior)目前主要是使用隨機初始化的CNN作為手工設計的先驗去進行超分。

2.10 超分在專有領域的應用

目前圖像在專有領域的超分,主要有深度圖像超分、人臉圖像超分、高光譜圖像超分、視頻圖像超分、檢測分割中的小物體超分等。

 

3、發展趨勢

下面從超分網絡結構設計、學習策略、評價指標、無監督學習、實際場景等幾個方面,來闡述一下圖像超分領域的發展趨勢。

3.1 網絡結構設計

  • 融合局部和全局信息
  • 融合底層和高層信息
  • 不同上下文信息區別對待的注意力機制
  • 輕量化網絡結構
  • 升采樣層的改進

3.2 學習策略

  • 精確表達圖像差異的損失函數設計
  • 適合圖像超分的歸一化方法

3.3 評價指標

  • 全面評價超分圖像質量的主客觀統一指標
  • 無參考圖像的圖像質量評價

3.4 無監督的圖像超分

  • 不成對的低分辨率和高分辨圖像之間的降質過程進行學習,而不再使用人工設計好的降質過程去生成低分辨率和高分辨率圖像對。

3.5 實際場景中的圖像超分

 -------------------------------------------------------------------------

注:由於論文的實效性,每時每刻都有新的思路出現,在本篇論文中,相應補充了一些更新的研究成果!

--------------------------------------------------------------------------

另外總結一些對當前頂會SR等圖像復原文章的一些看法:

(1)灌水的很多,因為很好灌水。問題很難,有價值的研究少但是一直有。

  • 用深度方法或者說是用基於學習的方法做圖像復原本身就比較好理解。深度方法天生就是搭積木的工具,你搭建一個 工作的模型並不困難,而且可以非常直觀地看到成果。此外,不像大規模的圖像理解和視頻理解那樣費算力,圖像復原需要多卡訓練的都少。低門檻就導致做的人多,新進來的人要發文章想要發不是灌水的也少。
  • 該領域的idea相對廉價。很容易在別的視覺任務中找一個 網絡結構或者訓練策略用在圖像復原里。就算超分辨和去噪這種刷榜的任務得不到好的 performance,去反射,去摩爾紋,圖像 defect 這么多,隨便找一個別人沒做過的都能寫出一篇文章來。然后根據講故事的水平不同,這些文章就被發在各類會議上(從 A 會到 C 會)。
  • 最重要的一點是,大多數做圖像復原的人都沒有什么圖像需要復原。大多數的 idea 都在實驗室里,用幾張圖搭一個 實驗應用場景,改一下網絡結構,講一個好聽的故事,寫一篇沒什么用的論文。真正做圖像復原的內行,他們是清楚用戶需要什么的。圖像復原是復原給人看的不是為了刷榜,各種 metric 只是為了推動領域更好的發展。但是在實驗室里,大多數人沒接觸過用戶,寫論文的意義就在於刷榜,刷引用,導致外行看這個領域就是一堆灌水的。
(2) 灌水雖然容易,但是解決問題很難。
  • 圖像復原領域灌水多,但是這個不意味着這個領域水。另一個側面就是,圖像復原領域遇到的問題也是真的難。大多數人只看到刷榜這一個問題而看不到真正的用戶需求。總所周知,超分辨 SRCNN 出來之后,涌出一大批在網絡結構上做文章的工作,例如 ESPCN,FSRCNN,VDSR,SRResNet,這些文章都有可取之處,在刷榜的同時帶給了領域新的認識。比如說 ESPCN 之后大家都開始用 Pixel Shuffle 上采樣,FSRCNN 之后大家都開始在最后再做上采樣,VDSR 開始殘差被引入,到 SRResNet 引入殘差 Block。這些工作雖然是在刷榜,但並覺得他們是在灌水,只是當時的領域的認知停留在刷 PSNR 而已。然后 SRGAN 提出,學術界尤其是工業界開始發現刷 PSNR 其實沒什么用,因為 PSNR 高的超分圖像看起來非常的不真實,根本沒法用在產品上,有一部分人開始宣傳做基於感知的超分辨,到去年 ECCV PIRM SR 比賽,一批做感知的論文出來,繼續在這個方向持續的做努力。
    超分辨再發展,工業界和學術界都發現做基於感知的也不解決產品的問題。現有的模型用在現實生活中的效果都很差。一部分學者先知先覺,開始思考現實場景中的盲超分問題。從 CVPR2018 的 SRMD,到 CVPR2019 的 IKC,還有基於真實圖像對的超分辨 (NTIRE 2019 超分辨比賽)。有一批學者開始轉移到更現實的問題里,這些文章雖然有瑕疵,比如說 SRMD 的故事有些生硬,PSNR 的測試也有爭議;IKC 論文里有筆誤,但是筆者同樣不認為這些論文是在灌水。相反,這些論文都對整個領域做出了巨大的 contribution。而 CVPR2019 中已經很少見繼續做網絡結構的超分文章了。
    就當前來看,所有的文章都未能解決工業界的問題。在現實場景中應用這些算法,還是沒能達到工業界的預期,算法真正落地確實是需要一個或長或短的過程吧。
    (PS:手機端的超分應用還算比較多(典型的如華為P30 pro的數碼變焦拍月亮),出發點在於省流量,但需要解決這樣的問題:1.算力有限,網絡大小一裁再裁;2.應用場景的數據分布和開源數據集相差甚遠。如何針對現實場景構建有效的訓練數據集也是一個問題。)
     

參考:如何評價近幾年頂會的超分,去噪,去模糊等圖像復原文章?


免責聲明!

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



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