時間:2023-04-09 19:08:44 來源: 機器之心
以下文章來源于機器之心SOTA模型 ,作者機器之心SOTA模型
機器之心專欄
(相關資料圖)
本專欄由機器之心SOTA!模型資源站出品,每周日于機器之心公眾號持續更新。
本專欄將逐一盤點自然語言處理、計算機視覺等領域下的常見任務,并對在這些任務上取得過 SOTA 的經典模型逐一詳解。前往 SOTA!模型資源站(sota.jiqizhixin.com)即可獲取本文中包含的模型實現代碼、預訓練模型及 API 等資源。
本文將分 3 期進行連載,共介紹 16個在語音識別任務上曾取得 SOTA 的經典模型。
第 1 期:SRCNN、DRCN、FSRCNN、ESPCN、SRGAN、RED
第 2 期:VDSR、DRRN、LapSRN、RCAN、DSRN
第 3 期:SFT-GAN、CSRCNN、CSNLN、HAN+、Config (f)
您正在閱讀的是其中的第 1 期。前往 SOTA!模型資源站(sota.jiqizhixin.com)即可獲取本文中包含的模型實現代碼、預訓練模型及 API 等資源。
本期收錄模型速覽
模型 | SOTA!模型資源站收錄情況 | 模型來源論文 |
---|---|---|
SRCNN | https://sota.jiqizhixin.com/project/srcnn收錄實現數量:57支持框架:PyTorch、TensorFlow、MindSpore | Image Super-Resolution Using Deep Convolutional Networks |
DRCN | https://sota.jiqizhixin.com/project/drcn收錄實現數量:1支持框架:TensorFlow | Deeply-Recursive Convolutional Network for Image Super-Resolution |
FSRCNN | https://sota.jiqizhixin.com/project/fsrcnn收錄實現數量:8支持框架:PyTorch、TensorFlow | Accelerating the Super-Resolution Convolutional Neural Network |
ESPCN | https://sota.jiqizhixin.com/project/espcn收錄實現數量:14支持框架:PyTorch、TensorFlow | Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network |
SRGAN | https://sota.jiqizhixin.com/project/srgan收錄實現數量:4支持框架:PyTorch、TensorFlow | Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network |
RED | https://sota.jiqizhixin.com/project/red30-2收錄實現數量:13 支持框架:TensorFlow | Image Restoration Using Convolutional Auto-encoders with Symmetric Skip Connections |
圖像超分辨率(Super Resolution,SR)是指從低分辨率(Low Resolution,LR)圖像中恢復高分辨率(High Resolution, HR)圖像的過程,是計算機視覺和圖像處理中一類重要的圖像處理技術。SR在現實世界中有著廣泛的應用,如醫療成像、監控和安全等。除了提高圖像感知質量外,SR還有助于改善其他計算機視覺任務。一般來說,超分辨率分析是非常具有挑戰性的,而且本身就是一個難題,因為總是有多個HR圖像對應于一個LR圖像。在已有文獻中,研究人員提出了各種經典的SR方法,包括基于預測的方法、基于邊緣的方法、統計方法、基于patch的方法和稀疏表示方法等。
近年來,隨著深度學習技術的快速發展,基于深度學習的SR模型得到了快速發展,并在SR的各種基準上取得了最先進的性能。各種各樣的深度學習方法已經被應用于SR任務,從早期的基于卷積神經網絡(CNN)的方法到最近使用的生成對抗網絡的SR方法。一般來說,使用深度學習技術的SR方法在以下主要方面有所不同:不同類型的網絡架構、不同類型的損失函數、不同類型的學習原理和策略等。
超分辨率分析可以分為視頻超分辨率VSR(Video Super Resolution) 和單幀超分辨率SISR(Single Image Super Resolution),本文重點關注單幀超分辨率分析方法。本文聚焦于深度學習技術,回顧SISR中必備的TOP模型。
1、 SRCNN
本文首次提出將深度學習技術應用于SR,得到經典的SRCNN(Super-Resolution CNN)模型。SRCNN結構很簡單,但是效果很好。計算效率高,速度快。對于一個LR圖像,首先使用bicubic 插值到所需的尺寸得到圖像Y,然后學習一個映射F,使得F(Y)盡可能和ground-truth接近。該方法的完整學習過程包含三步:1)Patch extraction and representation,從Y中提取patches并表示為高維向量;Non-linear mapping,將高維向量映射到另一高維向量;reconstruction,整合上述的high-resolution patch-wise representation。上述三個步驟組成了一個卷積網絡。如圖1所示:
圖1 給定一個低分辨率的圖像Y,SRCNN的第一個卷積層提取一組特征圖。第二層將這些特征圖非線性地映射到高分辨率的patch表示上。最后一層結合空間鄰域內的預測,生成最終的高分辨率圖像F (Y)
Patch extraction and representation。在圖像恢復中有一個常用的策略就是從圖像密集提取圖像塊,然后用一組預先訓練好的基(PCA、DCT、Haar等)來表示。這等同于用一組濾波器對圖像進行卷積,每個濾波器對應一個基。SRCNN的第一層可以如下表示:
其中,W1對應 n1個濾波器,每個濾波器大小為 c×f_1 ×f_1 ,其中,c是圖像通道數,RGB就是3通道,灰度圖像是單通道。f_1是濾波器尺寸。卷積之后就得到n1個特征圖。接著對濾波器響應應用 ReLU,即 max(0,x)。
Non-linear mapping。經過上一步卷積,我們得到一個n1維特征向量,對應一個圖像塊,這一步,將一個n1維特征向量映射到一個n2維向量。對于大的濾波器,非線性映射不是對應圖像塊,而是對應特征圖中的 "塊"。這一步可以看做如下卷積:
Reconstruction。這一步就是對高分辨率圖像塊的權值平均,這個平均可以看做對一組特征圖的一個預先定義的濾波器,使用下面的卷積表示:
在SRCNN中,上述三個步驟作為一個卷積網絡共同訓練。
當前SOTA!平臺收錄SRCNN共57個模型實現。
項目SOTA!平臺項目詳情頁SRCNN前往 SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/srcnn
2、 DRCN
SRCNN的層數較少,同時感受野也較小(13x13)。本文提出的DRCN (Deeply-Recursive Convolutional Network for Image Super-Resolution)使用更多的卷積層增加網絡感受野(41x41),同時為了避免過多網絡參數,使用遞歸神經網絡(RNN)。網絡的基本結構如圖2,輸入圖像是原始LR圖像經過插值上采樣后的圖像。
圖2 DRCN架構
與SRCNN類似,DRCN分為三個模塊,第一個是Embedding network,相當于特征提取;第二個是Inference network, 相當于特征的非線性變換;第三個是Reconstruction network,即從特征圖像得到最后的重建結果。其中的Inference network是一個遞歸網絡,即數據循環地通過該層多次。將這個循環展開,就等效于使用同一組參數的多個串聯的卷積層。DRCN將每一層的卷積結果都通過同一個Reconstruction Net得到一個重建結果,從而共得到D個重建結果,再把它們加權平均得到最終的輸出。另外,受到ResNet的啟發,DRCN通過skip connection將輸入圖像與H_d的輸出相加后再作為Reconstruction Net的輸入(如圖2所示),相當于使Inference Net去學習高分辨率圖像與低分辨率圖像的差,即恢復圖像的高頻部分。
以上得到的Basic Model 雖然簡單且功能強大,但作者發現訓練深度遞歸網絡非常困難(最多訓練三個循環層)。作者分析有以下幾點原因:1)梯度的消失和爆炸。梯度爆炸是由鏈式梯度的乘法性質造成的。對于深度遞歸,可以呈指數增長。梯度消失問題正好與梯度爆炸相反。梯度呈指數級的速度到零向量。因此,梯度爆炸和消失的存在使深度遞歸網絡掌握遠距離像素信息間的關系非常困難。2)經過多次遞歸想要保留原始LR信息并不容易。在SR任務中,輸出與輸入非常相似,所以LR圖像的信息非常重要,需要為后續更深的遞歸層保留輸入圖像的精確信息。3)存在一個尋找最優遞歸次數的問題。如果遞歸對于給定的任務來說太深,就需要減少遞歸的次數。尋找最優數需要訓練許多具有不同遞歸深度的網絡。
由此,作者提出了如下改進技術:1)Recursive-Supervision:監督每層遞歸,以減輕梯度消失/爆炸的影響。假設在推理層中卷積過程反復使用相同的卷積核,使用相同的重建層來預測每一次遞歸重建的SR圖像。重建層輸出D個預測圖像,所有預測都在訓練期間同時受到監督。將所有D個預測圖像通過加權求和來計算最終輸出(權重由網絡學習得到)。通過遞歸減輕了訓練遞歸網絡的困難,通過反向傳播將不同預測損失產生的反傳梯度求和提供平滑效果,能夠有效緩解梯度爆炸或消失。此外,由于監督能夠利用所有中間層的預測信息,因此,對最佳遞歸次數選擇的重要性降低了。2)Skip-Connection:對于圖像重建任務,輸入和輸出圖像高度相關,所以可以直接通過skip層連接將LR信息直接傳輸到SR重建層。改進后的Advanced Model如圖3所示。
圖3 (a): Advanced Model,帶有遞歸監督和skip connection。重建網絡是共享的,用于遞歸預測。使用中間遞歸的所有預測來獲得最終的輸出。(b): 將深度監督應用于Basic Model。與(a)不同的是,(b)中的模型使用不同的重建網絡進行遞歸,并且使用了更多的參數。(c): (a)的擴展結構示例,沒有參數共享(沒有遞歸)。權重參數的數量與深度的平方成正比
當前SOTA!平臺收錄DRCN共1個模型實現。
項目SOTA!平臺項目詳情頁DRCN前往 SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/drcn
3、FSRCNN
本文旨在加速SRCNN,提出了一個compact hourglass-shape 的CNN結構--FSRCNN,主要在三個方面進行了改進:1)在整個模型的最后使用了一個反卷積層放大尺寸,因此可以直接將原始的低分辨率圖像直接輸入到網絡中,而不需要像SRCNN一樣先通過bicubic方法放大尺寸。2)改變特征維數,使用更小的卷積核和使用更多的映射層。3)可以共享其中的映射層,如果需要訓練不同上采樣倍率的模型,只需要fine-tuning最后的反卷積層。
由于FSRCNN不需要在網絡外部進行放大圖像尺寸的操作,同時通過添加收縮層和擴張層,將一個大層用一些小層來代替,因此FSRCNN與SRCNN相比有較大的速度提升。FSRCNN在訓練時也可以只fine-tuning最后的反卷積層,因此訓練速度也更快。FSRCNN與SCRNN的結構對比如圖4所示。
圖4 該圖顯示了SRCNN和FSRCNN的網絡結構。FSRCNN主要在三個方面與SRCNN不同。首先,FSRCNN采用原始的低分辨率圖像作為輸入,沒有進行雙三次插值。在網絡的末端引入了一個解卷積層來進行上采樣。第二,SRCNN中的非線性映射步驟被FSRCNN中的三個步驟所取代,即收縮、映射和擴展步驟。第三,FSRCNN采用了更小的濾波器尺寸和更深的網絡結構
FSRCNN的結構如圖4下半部分所示。整個網絡可以被分解為5個部分:特征提取、壓縮、映射、擴展、反卷積。其中前四部分都是卷積層conv(fi,ni,ci),第五部分是反卷積層deconv(fi,ni,ci),其中,fi,ni,ci分別為核尺寸、核數量、核通道。作者將網絡中的變量分為敏感變量和不敏感變量(敏感是指微小改變即可對網絡結果造成很大影響),其中不敏感變量可以預設,而敏感變量則需根據實驗比較得出其值。
特征提取:這部分是和SRCNN相似的,不同點在于FSRCNN不經過對LR圖像的插值,而是直接從LR圖像提取子圖塊信息。若輸入圖像為灰度圖像,則核深度為1,而核的數量決定了該層卷積輸出的特征圖的維度d。后續會將特征圖送入真正的SR過程,所以維度d至關重要,d是第一個敏感變量,需要實驗對比得出。該層可記為conv(5,d,1)。
壓縮:這部分主要考慮到SRCNN中直接在高維特征圖上對LR做SR,先對LR圖像通道數進行減小,然后在低維LR特征圖進行SR操作,這樣會減少運算參數,最后再對生成的SR圖像進行升維操作。使用s個1 X 1 大小的濾波核,對來自特征提取層的d維圖像進行降維處理(從d降到s),s是第二個敏感變量,這可以為后續的SR操作減少參數量。該層可記為conv(1,s,d)。
非線性映射:這部分最重要的兩個參數為特征圖的通道數(d,即核的數量)和深度(卷積層的層數m,m是第三個敏感變量),深度m決定了SR的精度和復雜度。卷積核的尺寸為3X3,因此該部分可記為mXconv(3,s,s)。
擴展:擴展部分使用d個1X1大小的核,以期恢復到壓縮前的圖像形狀。壓縮、非線性映射、擴展這三部分是對稱的。擴展部分可記為conv(1,d,s)。
反卷積:可視為卷積的逆操作,可以將小尺寸的圖像恢復成大尺寸的圖像。參照圖5,通過在deconv前移動一個步長,得到deconv后移動的兩個步長的區域,這樣就可以實現對圖像放大2倍的操作了。為了保持對稱結構,需要采用9X9大小的濾波器。該層可記為deconv(9,1,d)。反卷積不同于傳統的插值方法,傳統的方法對所有的重建像素都有一套共同的重建公式,而反卷積的核需要學習得到,它能夠針對具體的任務得出更精確的結果。
圖5 FSRCNN由卷積層和反卷積層組成
PReLU:直接給出公式f(xi) = max(xi,0) + ai*min(0,xi),在原來relu 的基礎上,對負半軸的梯度也能激活(即使很?。瞬糠痔荻葻o法激活的情況。
全局結構:Conv(5, d, 1) - PReLU - Conv(1, s, d)-PReLU - m×Conv(3, s, s) - PReLU-Conv(1, d, s) - PReLU - DeConv(9, 1, d)。從全局來看,有三個參數d、s、m影響著網絡的性能和速度,所以將網絡記為FSRCNN(d,s,m),計算復雜度可由下式表示:
當前SOTA!平臺收錄FSRCNN共8個模型實現。
項目SOTA!平臺項目詳情頁
FSRCNN
前往 SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/fsrcnn4、ESPCN
在SRCNN和DRCN中,低分辨率圖像都是先通過上采樣插值得到與高分辨率圖像同樣的大小,再作為網絡輸入,意味著卷積操作在較高的分辨率上進行,相比于在低分辨率的圖像上計算卷積,會降低效率。本文提出一種在低分辨率圖像上直接計算卷積得到高分辨率圖像的高效率亞像素卷積神經網絡(efficient sub-pixel convolutional neural network,ESPN)。
圖6. ESPN有兩個卷積層用于提取特征圖,還有一個亞像素卷積層將LR空間的特征圖聚合起來,并在一個步驟中建立SR圖像
ESPN的核心概念是亞像素卷積層(sub-pixel convolutional layer)。如上圖所示,網絡的輸入是原始低分辨率圖像,通過兩個卷積層以后,得到的特征圖像大小與輸入圖像一樣,但是特征通道數量為r^2(r是圖像的目標放大倍數)。將每個像素的r^2個通道重新排列成一個r x r的區域,對應于高分辨率圖像中的一個r x r大小的子塊,從而將大小為r^2 x H x W的特征圖像重新排列成1 x rH x rW大小的高分辨率圖像。這個變換雖然被稱作sub-pixel convolution, 但實際上并沒有卷積操作。通過使用sub-pixel convolution, 在將圖像從低分辨率到高分辨率放大的過程中,插值函數被隱含地包含在前面的卷積層中,可以自動學習而得到。只在最后一層對圖像大小做變換,前面的卷積運算由于在低分辨率圖像上進行,因此效率會較高。
首先將一個l層卷積神經網絡直接應用于LR圖像,然后利用一個子像素卷積層將LR特征圖放大,生成SR圖像I^。對于一個由L層組成的網絡,前L-1層可以描述如下:
在LR空間中,一個跨度為1/r的卷積與一個大小為ks、權重間隔為1/r的濾波器Ws進行卷積,能夠激活Ws的不同部分。落在像素之間的權重沒有被激活,不需要計算。激活模式的數量正好是r^2。每個激活模式,根據其位置,最多有[ks/r]^2個權重被激活。在整個圖像的濾波卷積過程中,根據不同的子像素位置,這些模式被周期性地激活:mod (x,r)、 mod (y,r) w,其中x,y是HR空間中的輸出像素坐標。本文提出了一種有效的方法來實現上述操作,當mod(ks,r)=0時:
因此卷積算子W_L具有n_L-1×r^2C×k_L×k_L的形狀。請注意,我們不對最后一層的卷積的輸出施加非線性約束。當k_L = k_s/r和mod (k_s, r) = 0時,它等同于LR空間中的子像素卷積。將新層稱為亞像素卷積層,由此,網絡稱為高效亞像素卷積神經網絡(ESPN)。最后一層從LR特征圖中直接生成HR圖像,每個特征圖都有一個放大的濾波器。
最終ESPN網絡目標函數為:
當前SOTA!平臺收錄ESPCN共14個模型實現。
項目SOTA!平臺項目詳情頁ESPCN前往 SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/espcn
5、 SRGAN
深度卷積神經網絡在單個圖像實現超分辨率在速度和精度上取得了突破,但是仍然存在一個核心問題:當在放大因子下的超分辨率時,如何恢復細小的紋理細節?基于這些問題:本文提出了一種用于圖像SR的生成對抗網絡SRGAN(Super-Resolution Using a Generative Adversarial Network),并且根據GAN網絡結構提出了一種新的視覺損失( perceptual loss),其中包含對抗損失(adversarial loss)和內容損失(content loss)。
圖7. SRGAN的生成器和鑒別器網絡結構,每個卷積層都有相應的核大?。╧)、特征圖數量(n)和步長(s)
如圖7所示網絡結構,在訓練SRGAN的生成器網絡過程中需要提供HR圖像。首先對HR圖像進行下采樣得到相應的LR圖像,然后將LR圖像作為生成器的輸入,訓練生成器,使之輸出對應的HR圖像。作者提出用深度殘差網絡(ResNet)作為生成器的生成對抗網絡,網絡結構中存在很多的skip connection。為了區分真實的HR圖像和生成的HR圖像,還訓練了一個鑒別器,使用了LeakeyReLU作為激活函數,網絡層數從64到512,后面連接兩個全連接層和一個sigmoid層,用來判斷是否為同一圖像的概率。
文章將代價函數改進為:
第一部分是基于內容的代價函數,第二部分是基于對抗學習的代價函數?;趦热莸拇鷥r函數除了像素空間的最小均方差以外,又包含了一個基于特征空間的最小均方差,該特征是利用VGG網絡提取的圖像高層次特征:
對抗學習的代價函數是基于鑒別器輸出的概率:
當前SOTA!平臺收錄SRGAN共5個模型實現。
項目SOTA!平臺項目詳情頁SRGAN前往 SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/srgan
6、 Red
本文提出了一個由對稱的卷積層——反卷積層構成的網絡結構,稱為Red-Net(Residual Encoder-Decoder Networks)。如圖8所示,其網絡結構是對稱的,每個卷積層都對應有反卷積層,卷積層將輸入圖像尺寸減小后,再通過反卷積層上采樣變大,使得輸入輸出的尺寸一樣。卷積層用于提取圖像的特征,相當于編碼的作用。而反卷積層用于放大特征的尺寸并恢復圖像細節。每一組鏡像對應的卷積和反卷積都由skip connection將兩部分具有同樣尺寸的特征進行相加操作后再輸入到下一個反卷積層。這樣的結構能夠讓反向傳播信號能夠直接傳遞到底層,解決了梯度消失問題,同時能將卷積層的細節傳遞給反卷積層,從而恢復出更干凈的圖像。與此同時,網絡中有一條線是將輸入的圖像連接到后面與最后的一層反卷積層的輸出相加,因此,整個模型架構中間的卷積層和反卷積層學習的特征是目標圖像和低質圖像之間的殘差。
圖8.網絡整體結構。該網絡包含對稱卷積(編碼器)和反卷積(去編碼器)層。每隔幾層(在本文實驗中是兩層)就有一個skip shortcuts,從卷積特征圖到其鏡像的反卷積特征圖。卷積層的響應被直接傳播到相應的鏡像反卷積層,包括前向和后向傳播
具體來說,各個組成部分的作用如下:
卷積:特征提取,隨卷積進行,提取圖像特征同時抑制噪聲,經過多層卷積后,提取圖像特征,同時降低噪聲的影響。
反卷積:針對特征的上采樣,完成由圖像特征到圖像的轉換,由于利用的是過濾噪聲后的圖像特征,因此達到了降噪、圖像修復的目的。
Skip connections:保留更多的圖像細節,協助反卷積層完成圖像的恢復工作;反向傳播過程中的梯度反向,減少梯度消失,加快模型訓練。
當前SOTA!平臺收錄RED共16個模型實現。
項目SOTA!平臺項目詳情頁RED前往 SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/red30-2
前往 SOTA!模型資源站(sota.jiqizhixin.com)即可獲取本文中包含的模型實現代碼、預訓練模型及API等資源。
網頁端訪問:在瀏覽器地址欄輸入新版站點地址sota.jiqizhixin.com,即可前往「SOTA!模型」平臺,查看關注的模型是否有新資源收錄。
移動端訪問:在微信移動端中搜索服務號名稱「機器之心SOTA模型」或 ID「sotaai」,關注 SOTA!模型服務號,即可通過服務號底部菜單欄使用平臺功能,更有最新AI技術、開發資源及社區動態定期推送。
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-09
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-08
頭條 23-04-07
頭條 23-04-07
頭條 23-04-07
頭條 23-04-07
頭條 23-04-07
頭條 23-04-07
頭條 23-04-07
頭條 23-04-07
頭條 23-04-07
頭條 23-04-07
頭條 23-04-07
頭條 23-04-07