pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)
1. SRCNN
1.1. Contribution
end-to-end深度學習應用在超分辨領域的開山之作(非 end-to-end 見 Story.3 )。
指出了超分辨方向上傳統(tǒng)方法( sparse-coding-based SR methods )與深度學習方法的關系,insightful 。
SRCNN網(wǎng)絡非常簡單,PSNR、SSIM 等卻有小幅提升(< 1dB)。
應用(測試)時是完全 feed-forward ,因此網(wǎng)絡速度比傳統(tǒng)方法快。
1.2. Inspiration
SR 的本質(zhì) & 可行性
This problem (SR) is inherently ill-posed since a multiplicity of solutions exist for any given low-resolution pixel.
Such a problem is typically mitigated by constraining the solution space by strong prior information.
用樣本訓練 CNN ,就是在利用先驗知識。
CNN 為什么比傳統(tǒng)方法更簡單還更好用
傳統(tǒng)方法中,各個組件是分離的,比如圖像預處理和字典學習。
傳統(tǒng)方法著重于學習和優(yōu)化 dictionaries ,但對其他部分鮮有優(yōu)化。
但 SRCNN 是一個 LR 和 HR 之間的端到端網(wǎng)絡。
其訓練過程中的優(yōu)化是一體的,比如,其卷積層負責 patch extraction and aggregation ,隱藏層充當 dictionaries ,統(tǒng)一被優(yōu)化。
因此,我們只需要極少的 pre/post-processing ,同時能實現(xiàn)對整體框架的全面優(yōu)化。
特征表示方法的不同
過去,我們用 a set of pre-trained bases such as PCA, DCT, Haar 來表示 patches 。
現(xiàn)在,我們用不同的卷積核,就實現(xiàn)了多樣化的表示。
更簡單:由于 overlapping ,因此卷積使用的像素信息比簡單的字典映射更多。
1.3. Network
1.3.1. Pre-processing
將低分辨率的圖片,通過 Bicubic interpolation 得到 \(\mathbf Y\) 。
注意我們?nèi)匀环Q之為 low-resolution image 。
1.3.2. Patch extraction and representation
從 \(\mathbf Y\) 提取出 overlapping patches ,每一個 patch 都代表一個 high-dimensional vector 。
這些向量共同組成 a set of feature maps 。
每一個 vector 的維數(shù),既是總特征數(shù),也是 feature map 的總數(shù)。
\[
F_1(\mathbf Y) = max(0, W_1 * \mathbf Y + B_1)
\]
1.3.3. Non-linear mapping
通過一個非線性變換,由原 high-dimensional vector 變換到另一個 high-dimensional vector 。
該 high-dimensional vector 又組成了一個 set of feature maps ,在概念上代表著 high-resolution patch 。
\[
F_2(\mathbf Y) = max(0, W_2 * F_1(\mathbf Y) + B_2)
\]
1.3.4. Reconstruction
生成接近 ground truth: \(\mathbf X\) 的 output 。
過去常用取平均的方法。實際上,平均也是一個特殊的卷積。
因此我們不妨直接用一個卷積。
此時,輸出patch不再是簡單的平均,還可以是頻域上的平均等(取決于 high-dimensional vector 的性質(zhì))。
\[
F_3(\mathbf Y) = W_2 * F_2(\mathbf Y) + B_3
\]
注意不要再非線性處理。
1.4. Story
深度CNN日益受歡迎的3大誘因:
更強大的GPU;
更多的數(shù)據(jù)(如ImageNet);
ReLU的提出,加快收斂的同時保持良好質(zhì)量。
CNN此前被用于 natural image denoising and removing noisy patterns (dirt/rain) ,用于 SR 是頭一回。
這就是講好故事的重要性,無非是映射 pairs 不同。
auto-encoder 也曾被用于超分辨網(wǎng)絡,但仍沒有擺脫 separated framework 的弊端。
1.5. Further Learning
Traditional sparse-coding-based SR methods.
從低分辨率圖像到 \(\mathbf Y\) 采用的是 Bicubic interpolation ,實際上也是卷積。但為什么不當作卷積層呢?
文中解釋,因為輸出比輸入還大,為了有效利用 well-optimized implementations sucha as cuda-convnet ,就暫且不當作一個“層”。
事實上,當輸出大于輸入時,CNN的效率會很低。可以繼續(xù)往下學,后面就會逐漸體會。
2. FSRCNN
2.1. 亮點
將單個 wide mapping layer 分解成多個 layers with fixed filter size \(3 \times 3\) 。
復雜的非線性映射是最消耗運算資源的。減小尺寸,加大層數(shù),極大提高了運算速度。
取消了 SRCNN 前端的雙三次插值,將 LR 直接輸入網(wǎng)絡。
進一步減小了參數(shù)數(shù)量,進而提高了運算速度。
在 FSRCNN 末端采用反卷積層,而不是簡單的插值升采樣。
反卷積層從 high-dimensional feature maps 和真實 HR 中學習多個卷積核,實現(xiàn)了超越一般插值的恢復效果。
由于放在網(wǎng)絡末端,因此網(wǎng)絡運算速度與 HR 尺寸無關。
HR 尺寸可調(diào),并且只需要重新訓練利用特征的反卷積層,而不需要重新訓練提取特征的CNN網(wǎng)絡。
用PReLU替換ReLU,可以避免由 0 梯度帶來的 dead features 現(xiàn)象。實驗證明它更穩(wěn)定。
2.2. Improvement
與SRCNN相比,速度提升了17到40倍(小型FSRCNN),在一般的CPU上實現(xiàn)了實時性。
原SRCNN在3倍 upsample \(240 \times 240\) 圖像時,幀率只有1.32。但實時性要求24fps,差17倍。
恢復質(zhì)量不減反升。
2.3. Analysis
限制原SRCNN運算速度的兩大主謀:
升采樣。設升采樣因子為 \(n\) ,則運算時間增長至 \(n^2\) 倍。
非線性映射。該層越大,恢復質(zhì)量越高,但時間越長。
對應的解決方法:
取消網(wǎng)絡前端的升采樣,在網(wǎng)絡末端采用反卷積 deconvolution 。
此時,由于輸入網(wǎng)絡的是 LR ,因此運算時間只和 LR 圖像的尺寸成比例。
把單個大的非線性映射層,分解為多個小的固定大小的濾波器。
2.4. Network
整體形狀像一個前端小,后端大的沙漏:
我們著重理解一下最后的反卷積。
先回顧卷積:
假設輸出維數(shù)為 \(d\) ,則對于每一維,都有一個特定的卷積核(相當于一個匹配模板)。
同一個卷積核,要對輸入的每一個通道的每一個patch進行相同系數(shù)的卷積運算。
這樣,輸出的每一維都是一個 feature map ,組成一個有厚度的 feature maps 。
而反卷積恰好相反。
對于輸入的 feature maps ,網(wǎng)絡需要找到最佳的卷積核,使得輸出經(jīng)卷積運算后逼近 feature maps 。
前面的CNN,在大小固定,計算量受限的情況下,盡全力讓 feature maps 承載足夠的信息;
后面的反卷積層,即根據(jù) \(d\) 種不同的特征,盡全力恢復 HR 圖像。
由于每一個 map 的含義都不盡相同,因此如果將反卷積替換成一般的插值,PSNR將劇烈下降。
這是實驗得到的反卷積圖像,顯然都學到了不同的特征:
反卷積還有一個好處:
當我們希望輸出不同大小的 HR 圖片時,我們只需要對該層進行調(diào)整,而不需要重新訓練前面的CNN網(wǎng)絡。
實驗結果表明,PSNR基本沒有變化。
理論解釋是,前面的CNN只起到抽象特征的作用,如何從有限的特征恢復圖像,基本上屬于反卷積的任務。
2.5. Inspiration
通過減小單個層的體積,可以有效減小運算復雜度。
后面的 expanding 的表面作用是輔助升采樣,本質(zhì)作用是提高恢復質(zhì)量(提高學習復雜度)。
實驗證明,如果取消這一環(huán)節(jié),PSNR會有0.3dB左右的下降。
理解:把一個相對 low-dimensional 的 feature maps 直接交給反卷積層學習,是困難的。
2.6. Further Learning
De-convolution.
下一節(jié)介紹。
CNNs acceleration.
PReLU.
3. ESPCN
3.1. Similarity & Network
作者的觀點與FSRCNN有許多相似之處。在論文中提到:
Additionally, as noted by Dong et al. [6], there are no efficient implementations of a convolution layer whose output size is larger than the input size and well-optimized implementations such as convnet [21] do not trivially allow such behaviour.
因此,本文作者同樣沒有將 upscaling 放到CNN網(wǎng)絡之中,并且也是在網(wǎng)絡的最末端設置了一個額外的 upscaling 層: sub-pixel convolution layer ,以增強網(wǎng)絡的實時性。
總而言之,卷積層不能在 HR space 上運作,否則計算成本就會很高。
3.2. The Drawback of Transposed Convolution ( Deconvolution )
本文也提到了轉(zhuǎn)置卷積操作,同時指出:
However, any reduction (summing) after convolution is expensive.
關于轉(zhuǎn)置卷積及其低效的解釋,有以下推薦參考(點擊超鏈接):
圖解:
在原像素點周圍補零;
將 kernel 轉(zhuǎn)置(為什么?首先卷積可以看作一個稀疏矩陣乘法,則為了從相同尺寸的輸出得到相同尺寸的“輸入”,乘法矩陣就要轉(zhuǎn)置);
然后進行正常卷積即可。
注意,我們是將kernel轉(zhuǎn)置而不是求逆,因此轉(zhuǎn)置卷積準確來說不應該稱為逆卷積。
轉(zhuǎn)置卷積可以用于 feature maps 可視化,但在運算速度上存在致命缺點:
首先,卷積是 highly parallelizable 的,原因在于卷積核對于某一維特征而言是固定的,因此可以并行計算各個patch。相比之下,轉(zhuǎn)置卷積卻很復雜。
We should add zero values to the upscale the image, that have to be later filled in with meaningful values.
Maybe even worse, these zero values have no gradient information that can be backpropagated through.
3.3. Efficient Sub-pixel Convolution Layer
為此,作者提出了新的 upscaling 結構:Efficient subpixel convolution layer 。
雖然名字帶“卷積”,但具體實現(xiàn)居然只是一個簡簡單單的“PS”(重排)!!
重排方式見 Network 。其中要求通道數(shù)為 \(r^2\) ,這樣才能實現(xiàn)重排。
為什么高效?
CNN仍然是在 LR space 上進行。
upscaling 是簡單的重排,沒有卷積運算。
為什么精度不降反升?
盡管重排是線性的,但前面的CNN是非線性的。
CNN的訓練不再注重于簡單的特征提取,而是注重于組合規(guī)則下的特征提取,并且速度更快的同時層數(shù)還能更多。
3.4. 亮點
A key assumption that underlies many SR techniques is that much of the high-frequency data is redundant and thus can be accurately reconstructed from low frequency components.
4. VDSR
學習這個網(wǎng)絡前,要了解殘差學習網(wǎng)絡:我的另一篇博客
關于 SR 問題,作者指出3大限制因素:
It relies on the context of small image regions;
Training converges too slowly;
The network only works for a single scale.
為此,本文提出以下措施:
不再只從 LR 的小 patch 中獲取信息,而利用 very big image regions ;
不再用重排和轉(zhuǎn)置卷積,而是和 SRCNN 一樣用插值法,一開始就得到同輸出尺寸的圖片。
采用殘差學習;
作者認為,LR 圖片中的低頻信息被保留到 HR 圖片中,需要重構的只有高頻信息。
因此,低頻映射沒有必要學習,而是直接遷移即可。這是殘差學習的一個比較好的解釋。
采用較高的學習率( SRCNN 的 \(10^4\) 倍)以及 Adjustable gradient clipping ;
讓梯度保持在一個較好的范圍內(nèi)。
Scale factor 可調(diào),可以包含分數(shù)。比如需要縮放圖片觀看時很有用。
不需要重復訓練網(wǎng)絡,網(wǎng)絡適應性非常好。
方法:訓練集中包含多種尺寸的圖片,同時訓練。
其他特別之處:
由于深度的貢獻非常明顯,因此采用20層網(wǎng)絡結構。
雖然濾波器尺寸固定為 \(3 \times 3\) ,但感受野仍然很大。
在圖片邊緣,由于卷積不能很好地執(zhí)行,因此傳統(tǒng)方法往往會裁掉邊緣區(qū)域再輸出。
而 VDSR 在每一層卷積前都填充 0 ,包括最后的輸出也填充0。
這樣做的效果非常好,圖像邊緣也被很好的預測了。
當圖像信息被充分挖掘后,0 位置再填上有意義的數(shù)。
springcloud-netflix組件學習-未完待續(xù)!!!
SpringCloud學習 Spring Cloud是什么鬼? Spring Cloud是一系列框架的有序集合.它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎設施的開發(fā),如服務發(fā)現(xiàn) ...
淺析Oracle PL/SQL 學習--未完待續(xù)
這是一篇關于Oracle Pl/SQL數(shù)據(jù)庫編程的課程學習分享... 首先說明幾點: 學習這門課程之前,已經(jīng)學過并且掌握一些基礎的SQL語句.數(shù)據(jù)庫結構分析.ER圖設計等知識: 這里也只是較為大概地將 ...
【tomcat】sessionId學習(未完待續(xù))
這里主要研究tomcat中session的管理方式以及sessionId的原理,下文將研究sessionid存到redis中以及基于redis實現(xiàn)session共享. 平時也就是了解session是基 ...
可持久化Treap(fhq Treap,非旋轉(zhuǎn)式Treap)學習(未完待續(xù))
簡介: ? ? Treap,一種表現(xiàn)優(yōu)異的BST 優(yōu)勢: ? ? 其較于AVL.紅黑樹實現(xiàn)簡單,淺顯易懂 ? ? 較于Splay常數(shù)小,通常用于樹套BST表現(xiàn)遠遠優(yōu)于Splay ? ? 或許有人想說S ...
jmeter 工具學習 未完待續(xù)
about Apache JMeter是Apache組織的開源項目,是 一個純Java桌面應用,用于壓力測試和性能測試,它最初被設計用于 web應用測試,后來逐漸的擴展到其他領域 jmeter可以用于 ...
Go web編程學習筆記——未完待續(xù)
1. 1).GOPATH設置 先設置自己的GOPATH,可以在本機中運行$PATH進行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...
Java開發(fā)中的23+2種設計模式學習個人筆記(未完待續(xù))
注:個人筆記 一.設計模式分三大類: 創(chuàng)建型模式,共五種:工廠方法模式.抽象工廠模式.單例模式.建造者模式.原型模式. 結構型模式,共七種:適配器模式.裝飾器模式.代理模式.外觀模式.橋接模式.組合模 ...
CC2530學習路線-基礎實驗-串口通訊發(fā)送字符串(4 未完待續(xù))
目錄 1. 前期預備知識 1.1 串口通訊電路圖 1.2 實驗相關寄存器 1.2 常用波特率設置 本章未完待續(xù)..... 原來寫的文章已經(jīng)丟失了,只能找到這一小部分,看什么時候有時間再補上. 1. 前 ...
堆學習筆記(未完待續(xù))(洛谷p1090合并果子)
上次講了堆,別人都說極其簡單,我卻沒學過,今天又聽dalao們講圖論,最短路又用堆優(yōu)化,問懂了沒,底下全說懂了,我???,感覺全世界都會了堆,就我不會,于是我決定補一補: ——————來自百度百科 所 ...
隨機推薦
jquery 使用方法
jQuery是目前使用最廣泛的javascript函數(shù)庫.據(jù)統(tǒng)計,全世界排名前100萬的網(wǎng)站,有46%使用jQuery,遠遠超過其他庫.微軟公司甚至把jQuery作為他們的官方庫.對于網(wǎng)頁開發(fā)者來 ...
ASP.NET 5探險(5):利用AzureAD實現(xiàn)單點登錄
題記:在ASP.NET 5中雖然繼續(xù)可以沿用ASP.NET Identity來做驗證授權,不過也可以很容易集成支持標準協(xié)議的第三方服務,比如Azure Active Directory. 其實,在AS ...
Unity中制作游戲的快照游戲支持玩家拍快照
Unity中制作游戲的快照游戲支持玩家拍快照 有些游戲支持玩家“拍快照”,也就是將游戲的精彩瞬間以圖片的形式記錄下來的功能.這個功能比較有趣,而且以后的用途也會很廣,為此本節(jié)打算介紹:截取矩形區(qū)域內(nèi)游 ...
POJ3254Corn Fields(狀壓DP)
題意: John 有一個豪華的M*N個格子組成的新牧場 他想種美味的玉米 但是有些位置不能種 而且他種地不選擇相鄰的格子 求所有可能的種地方法 (不種也算一種選擇)輸入:第一行M和N, 第二行M*N地 ...
mysql創(chuàng)建新用戶及新用戶不能本地登陸的問題
最近在搭建hadoop集群,主節(jié)點上面安裝的MySQL數(shù)據(jù)庫,對著方面不熟悉,為hive.Ooize等服務統(tǒng)一使用的root賬號和密碼,為了安全一些庫對于某些用戶是不可見的,所以需要針對不同的服務設置 ...
SpringBoot和druid數(shù)據(jù)源集成Jpa
1.pom文件 <?xml version="1.0" encoding="UTF-8"?>
總結
以上是生活随笔為你收集整理的pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: i3wm i3status状态栏实时显示
- 下一篇: Python实现直角坐标系求两点间距离