各領(lǐng)域中采樣方式研究 (持續(xù)更新)

一、圖像的上采樣(upsampling)與下采樣(downsampling)

1、概述

縮小圖像(或稱為下采樣(subsampling)或降采樣(downsampling))的主要目的有兩個:1、使得圖像符合顯示區(qū)域的大??;2、生成對應(yīng)圖像的縮略圖。

放大圖像(或稱為上采樣(upsampling)或圖像插值(interpolating))的主要目的是放大原圖像,從而可以顯示在更高分辨率的顯示設(shè)備上。對圖像的縮放操作并不能帶來更多關(guān)于該圖像的信息,因此圖像的質(zhì)量將不可避免地受到影響。然而,確實有一些縮放方法能夠增加圖像的信息,從而使得縮放后的圖像質(zhì)量超過原圖質(zhì)量的。

下采樣原理:對于一幅圖像I尺寸為M x N,對其進行s倍下采樣,即得到(M/s)x(N/s)尺寸的得分辨率圖像,當然s應(yīng)該是M和N的公約數(shù)才行,如果考慮的是矩陣形式的圖像,就是把原始圖像s*s窗口內(nèi)的圖像變成一個像素,這個像素點的值就是窗口內(nèi)所有像素的均值:

下采樣.jpeg

上采樣原理:圖像放大幾乎都是采用內(nèi)插值方法,即在原有圖像像素的基礎(chǔ)上在像素點之間采用合適的插值算法插入新的元素。

無論縮放圖像(下采樣)還是放大圖像(上采樣),采樣方式有很多種。如最近鄰插值,雙線性插值,均值插值,中值插值等方法。

2、深度學習中的上采樣

在深度學習框架中,上采樣可以簡單的理解為任何可以讓圖像變成更高分辨率的技術(shù)。
上采樣(upsampling)的三種方式:插值法 (Interpolation) 、反卷積 (Deconvolution) 和 反池化 (unPooling) 。

1. 插值法

最簡單的方式是重采樣和插值:將輸入圖片input image進行rescale到一個想要的尺寸,而且計算每個點的像素點,使用如雙線性插值 (Bilinear-Interpolation) 等插值方法對其余點進行插值。在AlexNet中就使用了較合適的插值方法。各種插值方法都有各自的優(yōu)缺點。插值就是在不生成像素的情況下增加圖像像素大小的一種方法,在周圍像素色彩的基礎(chǔ)上用數(shù)學公式計算丟失像素的色彩(也有的有些相機使用插值,人為地增加圖像的分辨率)。所以在放大圖像時,圖像看上去會比較平滑、干凈。但必須注意的是插值并不能增加圖像信息。

2. 反卷積

反卷積,是卷積的逆過程,實現(xiàn)上采用轉(zhuǎn)置卷積核的方法,又稱作轉(zhuǎn)置卷積 (transposed convolution)。為實現(xiàn)deconvolution,直接使deconv的前向傳播模擬conv的反向傳播。如何理解深度學習中的deconvolution networks
FCN的upsampling過程,就是把feature map,abcd進行一個反卷積,得到的新的feature map和之前對應(yīng)的encoder feature map 相加。參考 FCN全卷積網(wǎng)絡(luò)。

3. 反池化

反池化,在池化過程中,記錄下max-pooling在對應(yīng)kernel中的坐標,在反池化過程中,將一個元素根據(jù)kernel進行放大,根據(jù)之前的坐標將元素填寫進去,其他位置補0。 unPooling是在CNN中常用的來表示max pooling的逆操作。實現(xiàn)代碼可以看SegNet的實現(xiàn),TF-SegNet代碼實現(xiàn),參考 卷積神經(jīng)網(wǎng)絡(luò)CNN——SegNet。

訓練GAN的16 tricks 參考ICCV 2017 slides

ICCV 2017 slides.png

4. 上采樣三種方法對比

上采樣三種方法對比.png

圖(a)表示反池化(unPooling)的過程,特點是在Maxpooling的時候保留最大值的位置信息,之后在unpooling階段使用該信息擴充feature Map,除最大值位置以外,其余補0。
圖(b)表示unSampling的過程,與圖(a)對應(yīng),兩者的區(qū)別在于unSampling階段沒有使用MaxPooling時的位置信息,而是直接將內(nèi)容復(fù)制來擴充feature Map。從圖中即可看到兩者結(jié)果的不同。
圖(c)為反卷積(Deconvolution)的過程,最大的區(qū)別在于反卷積過程是有參數(shù)要進行學習的(類似卷積過程),理論是反卷積可以實現(xiàn)UnPooling和unSampling,只要卷積核的參數(shù)設(shè)置的合理。

5. 常用的插值方法

(1). 最鄰近元法(Nearest Neighbour Interpolation)

這是最簡單的一種插值方法,不需要計算,在待求象素的四鄰象素中,將距離待求象素最近的鄰象素灰度賦給待求象素。設(shè)i+u, j+v(i, j為正整數(shù), u, v為大于零小于1的小數(shù),下同)為待求象素坐標,則待求象素灰度的值 f(i+u, j+v) 如下圖所示:

最鄰近元法.png

如果(i+u, j+v)落在A區(qū),即u<0.5, v<0.5,則將左上角象素的灰度值賦給待求象素,同理,落在B區(qū)則賦予右上角的象素灰度值,落在C區(qū)則賦予左下角象素的灰度值,落在D區(qū)則賦予右下角象素的灰度值。

最鄰近元法計算量較小,但可能會造成插值生成的圖像灰度上的不連續(xù),在灰度變化的地方可能出現(xiàn)明顯的鋸齒狀。當圖片放大時,缺少的像素通過直接使用與之最接近的原有的像素的顏色生成,也就是說照搬旁邊的像素,這樣做的結(jié)果是產(chǎn)生了明顯可見的鋸齒。

(2). 雙線性內(nèi)插法(Bilinear Interpolation)

雙線性插值是通過周邊的四個點,計算權(quán)值,然后決定插入后的圖像的像素值。新生成的圖像中每個點都會計算一遍,是利用待求象素四個鄰象素的灰度在兩個方向上作線性內(nèi)插,如下圖所示:


雙線性內(nèi)插法.png

對于 (i, j+v),f(i, j) 到 f(i, j+1) 的灰度變化為線性關(guān)系,則有:
f(i, j+v) = [f(i, j+1) - f(i, j)] * v + f(i, j)

同理對于 (i+1, j+v) 則有:
f(i+1, j+v) = [f(i+1, j+1) - f(i+1, j)] * v + f(i+1, j)

從f(i, j+v) 到 f(i+1, j+v) 的灰度變化也為線性關(guān)系,由此可推導出待求象素灰度的計算式如下:
f(i+u, j+v) = (1-u) * (1-v) * f(i, j) + (1-u) * v * f(i, j+1) + u * (1-v) * f(i+1, j) + u * v * f(i+1, j+1)

雙線性內(nèi)插法的計算比最鄰近點法復(fù)雜,計算量較大,但沒有灰度不連續(xù)的缺點,結(jié)果基本令人滿意。雙線性插值算法(Bilinear Interpolation)輸出的圖像的每個像素都是原圖中四個像素(2×2)運算的結(jié)果,這種算法極大地消除了鋸齒現(xiàn)象它具有低通濾波性質(zhì),使高頻分量受損,圖像輪廓可能會有一點模糊。

(3). 雙三次插值算法(Bicubic Interpolation)

是雙線性內(nèi)插法算法的改進算法,它輸出圖像的每個像素都是原圖16個像素(16×16)運算的結(jié)果。該方法利用三次多項式S(x)求逼近理論上最佳插值函數(shù)sin(x)/x, 其數(shù)學表達式為:

待求像素(x, y)的灰度值由其周圍16個灰度值加權(quán)內(nèi)插得到,如下圖:


三次內(nèi)插法示意圖.png

待求像素的灰度計算式如下:f(x, y) = f(i+u, j+v) = ABC

其中:
公式.png

三次曲線插值方法計算量較大,但插值后的圖像效果最好。

(4). 分形插值算法(Fractal Interpolation)

分形算法(Fractal Interpolation)是Altamira Group提出的一種算法,這種算法得到的圖像跟其他算法相比更清晰銳利。
Fractal Interpolation
github fractal_interpolation
tensorflow-fractal-playground
分形與混沌
Curve fitting by fractal interpolation
Python生成簡單分形
經(jīng)典的分形算法

(5). 插值方法總結(jié):

“Inverse Distance to a Power(反距離加權(quán)插值法)”、
“Kriging(克里金插值法)”、
“Minimum Curvature(最小曲率)”、
“Modified Shepard's Method(改進謝別德法)”、
“Natural Neighbor(自然鄰點插值法)”、
“Nearest Neighbor(最近鄰點插值法)”、
“Polynomial Regression(多元回歸法)”、
“Radial Basis Function(徑向基函數(shù)法)”、
“Triangulation with Linear Interpolation(線性插值三角網(wǎng)法)”、
“Moving Average(移動平均法)”、
“Local Polynomial(局部多項式法)”

a. 距離倒數(shù)乘方法

距離倒數(shù)乘方格網(wǎng)化方法是一個加權(quán)平均插值法,可以進行確切的或者圓滑的方式插值。方次參數(shù)控制著權(quán)系數(shù)如何隨著離開一個格網(wǎng)結(jié)點距離的增加而下降。對于一個較大的方次,較近的數(shù)據(jù)點被給定一個較高的權(quán)重份額,對于一個較小的方次,權(quán)重比較均勻地分配給各數(shù)據(jù)點。
計算一個格網(wǎng)結(jié)點時給予一個特定數(shù)據(jù)點的權(quán)值與指定方次的從結(jié)點到觀測點的該結(jié)點被賦予距離倒數(shù)成比例。當計算一個格網(wǎng)結(jié)點時,配給的權(quán)重是一個分數(shù),所 有權(quán)重的總和等于1.0。當一個觀測點與一個格網(wǎng)結(jié)點重合時,該觀測點被給予一個實際為 1.0 的權(quán)重,所有其它觀測點被給予一個幾乎為 0.0 的權(quán)重。換言之,該結(jié)點被賦給與觀測點一致的值。這就是一個準確插值。
距離倒數(shù)法的特征之一是要在格網(wǎng)區(qū)域內(nèi)產(chǎn)生圍繞觀測點位置的"牛眼"。用距離倒數(shù)格網(wǎng)化時可以指定一個圓滑參數(shù)。大于零的圓滑參數(shù)保證,對于一個特定的結(jié) 點,沒有哪個觀測點被賦予全部的權(quán)值,即使觀測點與該結(jié)點重合也是如此。圓滑參數(shù)通過修勻已被插值的格網(wǎng)來降低"牛眼"影響。

b. 克里金法

克里金法是一種在許多領(lǐng)域都很有用的地質(zhì)統(tǒng)計格網(wǎng)化方法??死锝鸱ㄔ噲D那樣表示隱含在你的數(shù)據(jù)中的趨勢,例如,高點會是沿一個脊連接,而不是被牛眼形等值線所孤立。
克里金法中包含了幾個因子:變化圖模型,漂移類型 和礦塊效應(yīng)。

c. 最小曲率法

最小曲率法廣泛用于地球科學。用最小曲率法生成的插值面類似于一個通過各個數(shù)據(jù)值的,具有最小彎曲量的長條形薄彈性片。最小曲率法,試圖在盡可能嚴格地尊重數(shù)據(jù)的同時,生成盡可能圓滑的曲面。
使用最小曲率法時要涉及到兩個參數(shù):最大殘差參數(shù)和最大循環(huán)次數(shù)參數(shù)來控制最小曲率的收斂標準。

d. 多元回歸法

多元回歸被用來確定你的數(shù)據(jù)的大規(guī)模的趨勢和圖案。你可以用幾個選項來確定你需要的趨勢面類型。多元回歸實際上不是插值器,因為它并不試圖預(yù)測未知的 Z 值。它實際上是一個趨勢面分析作圖程序。
使用多元回歸法時要涉及到曲面定義和指定XY的最高方次設(shè)置,曲面定義是選擇采用的數(shù)據(jù)的多項式類型,這些類型分別是簡單平面、雙線性鞍、二次曲面、三次曲面和用戶定義的多項式。參數(shù)設(shè)置是指定多項式方程中 X 和 Y組元的最高方次 。

e. 徑向基本函數(shù)法

徑向基本函數(shù)法是多個數(shù)據(jù)插值方法的組合。根據(jù)適應(yīng)你的數(shù)據(jù)和生成一個圓滑曲面的能力,其中的復(fù)二次函數(shù)被許多人認為是最好的方法。所有徑向基本函數(shù)法都 是準確的插值器,它們都要為尊重你的數(shù)據(jù)而努力。為了試圖生成一個更圓滑的曲面,對所有這些方法你都可以引入一個圓滑系數(shù)。你可以指定的函數(shù)類似于克里金 中的變化圖。當對一個格網(wǎng)結(jié)點插值時,這些個函數(shù)給數(shù)據(jù)點規(guī)定了一套最佳權(quán)重。

f. 謝別德法

謝別德法使用距離倒數(shù)加權(quán)的最小二乘方的方法。因此,它與距離倒數(shù)乘方插值器相似,但它利用了局部最小二乘方來消除或減少所生成等值線的"牛眼"外觀。謝別德法可以是一個準確或圓滑插值器。
在用謝別德法作為格網(wǎng)化方法時要涉及到圓滑參數(shù)的設(shè)置。圓滑參數(shù)是使謝別德法能夠象一個圓滑插值器那樣工作。當你增加圓滑參數(shù)的值時,圓滑的效果越好。

g. 三角網(wǎng)/線形插值法

三角網(wǎng)插值器是一種嚴密的插值器,它的工作路線與手工繪制等值線相近。這種方法是通過在數(shù)據(jù)點之間連線以建立起若干個三角形來工作的。原始數(shù)據(jù)點的連結(jié)方法是這樣:所有三角形的邊都不能與另外的三角形相交。其結(jié)果構(gòu)成了一張覆蓋格網(wǎng)范圍的,由三角形拼接起來的網(wǎng)。
每一個三角形定義了一個覆蓋該三角形內(nèi)格網(wǎng)結(jié)點的面。三角形的傾斜和標高由定義這個三角形的三個原始數(shù)據(jù)點確定。給定三角形內(nèi)的全部結(jié)點都要受到該三角形的表面的限制。因為原始數(shù)據(jù)點被用來定義各個三角形,所以你的數(shù)據(jù)是很受到尊重的。

h. 自然鄰點插值法

自然鄰點插值法(NaturalNeighbor)是Surfer7.0才有的網(wǎng)格化新方法。自然鄰點插值法廣泛應(yīng)用于一些研究領(lǐng)域中。其基本原理是對于 一組泰森(Thiessen)多邊形,當在數(shù)據(jù)集中加入一個新的數(shù)據(jù)點(目標)時,就會修改這些泰森多邊形,而使用鄰點的權(quán)重平均值將決定待插點的權(quán)重, 待插點的權(quán)重和目標泰森多邊形成比例。實際上,在這些多邊形中,有一些多邊形的尺寸將縮小,并且沒有一個多邊形的大小會增加。同時,自然鄰點插值法在數(shù)據(jù)點凸起的位置并不外推等值線(如泰森多邊形的輪廓線)。

i. 最近鄰點插值法

最近鄰點插值法(NearestNeighbor)又稱泰森多邊形方法,泰森多邊形(Thiesen,又叫Dirichlet或Voronoi多邊形)分析法是荷蘭氣象學家A.H.Thiessen提出的一種分析方法。最初用于從離散分布氣象站的降雨量數(shù)據(jù)中計算平均降雨量,現(xiàn)在GIS和地理分析中經(jīng)常采 用泰森多邊形進行快速的賦值。實際上,最近鄰點插值的一個隱含的假設(shè)條件是任一網(wǎng)格點p(x,y)的屬性值都使用距它最近的位置點的屬性值,用每一 個網(wǎng)格節(jié)點的最鄰點值作為待的節(jié)點值。當數(shù)據(jù)已經(jīng)是均勻間隔分布,要先將數(shù)據(jù)轉(zhuǎn)換為SURFER的網(wǎng)格文件,可以應(yīng)用最近鄰點插值法;或者在一個文 件中,數(shù)據(jù)緊密完整,只有少數(shù)點沒有取值,可用最近鄰點插值法來填充無值的數(shù)據(jù)點。有時需要排除網(wǎng)格文件中的無值數(shù)據(jù)的區(qū)域,在搜索橢圓 (SearchEllipse)設(shè)置一個值,對無數(shù)據(jù)區(qū)域賦予該網(wǎng)格文件里的空白值。設(shè)置的搜索半徑的大小要小于該網(wǎng)格文件數(shù)據(jù)值之間的距離,所有的無數(shù) 據(jù)網(wǎng)格節(jié)點都被賦予空白值。在使用最近鄰點插值網(wǎng)格化法,將一個規(guī)則間隔的XYZ數(shù)據(jù)轉(zhuǎn)換為一個網(wǎng)格文件時,可設(shè)置網(wǎng)格間隔和XYZ數(shù)據(jù)的數(shù)據(jù)點之間的間距相等。最近鄰點插值網(wǎng)格化法沒有選項,它是均質(zhì)且無變化的,對均勻間隔的數(shù)據(jù)進行插值很有用,同時它對填充無值數(shù)據(jù)的區(qū)域很有效。

j. 插值算法分類 補充

對插值算法分類比較混亂,各人有各人的分類算法。文獻《圖像插值技術(shù)綜述》中簡略的將插值算法分為傳統(tǒng)插值、 基于邊緣的插值和基于區(qū)域的插值3類,作為初學者入門明晰插值算法還是有幫助。
1.傳統(tǒng)差值原理和評價
在傳統(tǒng)圖像插值算法中,鄰插值較簡單,容易實現(xiàn),早期的時候應(yīng)用比較普遍。但是,該方法會在新圖像中產(chǎn)生明顯的鋸齒邊緣和馬賽克現(xiàn)象。雙線性插值法具有平滑功能,能有效地克服鄰法的不足,但會退化圖像的高頻部分,使圖像細節(jié)變模糊。在放大倍數(shù)比較高時,高階插值,如雙三次和三次樣條插值等比低階插值效果好。這些插值算法可以使插值生成的像素灰度值延續(xù)原圖像灰度變化的連續(xù)性,從而使放大圖像濃淡變化自然平滑。但是在圖像中,有些像素與相鄰像素間灰度值存在突變,即存在灰度不連續(xù)性。這些具有灰度值突變的像素就是圖像中描述對象的輪廓或紋理圖像的邊緣像素。在圖像放大中,對這些具有不連續(xù)灰度特性的像素,如果采用常規(guī)的插值算法生成新增加的像素,勢必會使放大圖像的輪廓和紋理模糊,降低圖像質(zhì)量。
2.基于邊緣的圖像插值算法
為了克服傳統(tǒng)方法的不足, 提出了許多邊緣保護的插值方法,對插值圖像的邊緣有一定的增強, 使得圖像的視覺效果更好, 邊緣保護的插值方法可以分為兩類: 基于原始低分辨圖像邊緣的方法和基于插值后高分辨率圖像邊緣的方法?;谠嫉头直媛蕡D像邊緣的方法:( 1)首先檢測低分辨率圖像的邊緣, 然后根據(jù)檢測的邊緣將像素分類處理, 對于平坦區(qū)域的像素,采用傳統(tǒng)方法插值;對于邊緣區(qū)域的像素, 設(shè)計特殊插值方法, 以達到保持邊緣細節(jié)的目的。(2)基于插值后高分辨率圖像邊緣的方法這類插值方法:首先采用傳統(tǒng)方法插值低分辨率圖像,然后檢測高分辨率圖像的邊緣,最后對邊緣及附近像素進行特殊處理, 以去除模糊, 增強圖像的邊緣。
3.基于區(qū)域的圖像插值算法
首先將原始低分辨率圖像分割成不同區(qū)域,然后將插值點映射到低分辨率圖像, 判斷其所屬區(qū)域, 最后根據(jù)插值點的鄰域像素設(shè)計不同的插值公式, 計算插值點的值。

3、 深度學習中的下采樣

采樣層是使用池化 (pooling) 的相關(guān)技術(shù)來實現(xiàn)的,目的就是用來降低特征的維度并保留有效信息,一定程度上避免過擬合。但是池化的目的不僅僅是這些,還有保持旋轉(zhuǎn)、平移、伸縮不變形等。
采樣有最大值采樣,平均值采樣,求和區(qū)域采樣和隨機區(qū)域采樣等。池化也是這樣的,比如最大值池化,平均值池化,隨機池化,求和區(qū)域池化等。

池化操作是在卷積神經(jīng)網(wǎng)絡(luò)中經(jīng)常采用過的一個基本操作,一般在卷積層后面都會接一個池化操作,但是近些年比較主流的ImageNet上的分類算法模型都是使用的max-pooling,很少使用average-pooling,這對我們平時設(shè)計模型時確實有比較重要的參考作用。

通常來講,max-pooling的效果更好,雖然max-pooling和average-pooling都對數(shù)據(jù)做了下采樣,但是max-pooling感覺更像是做了特征選擇,選出了分類辨識度更好的特征,提供了非線性,根據(jù)相關(guān)理論,特征提取的誤差主要來自兩個方面:(1)鄰域大小受限造成的估計值方差增大;(2)卷積層參數(shù)誤差造成估計均值的偏移。一般來說,average-pooling能減小第一種誤差,更多的保留圖像的背景信息,max-pooling能減小第二種誤差,更多的保留紋理信息。average-pooling更強調(diào)對整體特征信息進行一層下采樣,在減少參數(shù)維度的貢獻上更大一點,更多的體現(xiàn)在信息的完整傳遞這個維度上,在一個很大很有代表性的模型中,比如說DenseNet中的模塊之間的連接大多采用average-pooling,在減少維度的同時,更有利信息傳遞到下一個模塊進行特征提取。

但是average-pooling在全局平均池化操作中應(yīng)用也比較廣,在ResNet和Inception結(jié)構(gòu)中最后一層都使用了平均池化。有的時候在模型接近分類器的末端使用全局平均池化還可以代替Flatten操作,使輸入數(shù)據(jù)變成一位向量。
可以參考max-pooling和average-pooling之間的異同

視頻的采樣方式

1、視頻的基本參數(shù)

視頻分辨率

指每一幀畫面的大小,寬乘高等于若干像素。例如某一液晶顯示屏的最大分辨率為1440 × 900,而視頻文件的分辨率為1024 × 567,那么此視頻文件在播放時每個像素點就得經(jīng)過放大處理,如果放大倍數(shù)過多則出現(xiàn)馬賽克。

目前主流的高清格式通常為:720p(1280×720)和1080p(1920×1080)還有一種為非主流格式的1080i(1920×1080),1080i和720p對電腦硬件的要求差不多。

實際上720p(1280×720)在分辨率為1440 × 900的顯示器的播放時,橫向像素的放大人眼根本就看不出來的。所以在選擇格式時要視自己終端顯示器的最大分辨率到底支持為多高。

碼率

即比特率,指單位時間傳輸?shù)幕蚪獯a的位數(shù),當然也可以換算成字節(jié),數(shù)值越大越好,但是體積會變大的。

碼率越高,影像的質(zhì)量越高,對電腦硬件的要求也越高。藍光的碼率能達到30多M/秒,有的極端的場面達到60M/秒(75930.83 kbs) 。而有的BDre的1080P的碼率和720P的碼率一樣才10多M左右/秒(E.G: 14445.04 kbs)甚至更低。你就發(fā)覺質(zhì)量反而不如720P的(大屏幕上一目了然)。

壓制時得在質(zhì)量與速度兩者之間找到一個平衡點,要不配置低的機器播放高碼率時就會來不及解析而卡住從而使播放不流暢甚至出現(xiàn)卡死現(xiàn)象。

幀率

指播放時每秒移動多少幀。一般NTSC①是30,PAL②是25,幀速太低則畫面不連續(xù)播放的流暢性就差.所以要恰到好處才行。

  1. NTSC制式,又簡稱為N制,是1952年12月由美國國家電視標準委員會(National Television System Committee,縮寫為NTSC)制定的彩色電視廣播標準,兩大主要分支是NTSC-J與NTSC-US(又名NTSC-U/C)。
  2. PAL制式是電視廣播中色彩調(diào)頻的一種方法,全名為逐行倒相 (Phase Alternating Line)。除了北美,東亞部分地區(qū)使用 NTSC制式 ,中東、法國及東歐采用 SECAM制式 以外,世界上大部份地區(qū)都是采用 PAL。

視頻在時間上的采樣,意味著景物快照的獲取足夠快,那么當回放時,就會給人連續(xù)運動的視頻印象。在視頻系統(tǒng)中,較為普遍的是使用每秒25~30幅圖像,并且廣泛被許多觀眾所接受(在隔行掃描視頻中,這個數(shù)將加倍)。
音視頻圖像信號采集卡的采樣率

2、深度學習中視頻相關(guān)采樣

動態(tài)上采樣濾波器

CVPR2018提出,用于視頻超分辨率網(wǎng)絡(luò)。
閱讀筆記鏈接

動態(tài)上采樣濾波器Dynamic Upsampling Filters.png

VSR動態(tài)上采樣過程的概述如上圖所示。首先,將一組輸入LR幀{ X_{t-N:t+N}} (在網(wǎng)絡(luò)中的7幀:N = 3) 送入動態(tài)濾波器生成網(wǎng)絡(luò)。訓練網(wǎng)絡(luò)輸出一組r^2 HW 確定大小(在網(wǎng)絡(luò)中5\times5)的上采樣upsampling過濾器F_t,將用于生成經(jīng)過濾波器的HR 幀的?t_1新的像素。最后,對輸入幀X_t中的LR像素進行局部濾波,得到每個輸出HR像素值,對應(yīng)的濾波器F_t^{y,x,v,u}如下:
\tilde{Y}_t(yr+v,xr+u)=\sum_{j=-2}^2\sum_{i=-2}^2F_t^{y,x,v,u}(j+2,i+2)X_t(y + j, x + i)
其中,x,y是LR是柵格的坐標,v和u是每個 r\times r 輸出塊的坐標 (0 ≤ v, u ≤r ? 1),這種操作類似于反卷積(或轉(zhuǎn)置卷積),因此網(wǎng)絡(luò)可以進行端到端訓練。

Frame recurrent video super-resolution (FRVSR) 模型

CVPR2018提出,用于視頻超分辨率網(wǎng)絡(luò)。
在文中作者提出一個端到端可訓練的遞歸幀視頻超分辨率(FRVSR)框架。
論文鏈接Frame-Recurrent Video Super-Resolution

FRVSR framework.png

所提出的框架在上圖中表示。可訓練組件(紅色顯示)包括光流估計網(wǎng)絡(luò)FNet和超分辨率網(wǎng)絡(luò)SRNet。為了產(chǎn)生HR估計I_t^{est},模型利用當前LR輸入幀I_t^{LR}、前一LR輸入幀I_{t-1}^{LR}和前一HR估計I_{t-1}^{est}。利用FNet計算了LR空間中的 F^{LR},并將其上采樣得到 F^{HR}。

作為第一步,F(xiàn)Net用于估計低分辨率輸入I_{t-1}^{LR}I_{t}^{LR}之間的流,從而產(chǎn)生歸一化的低分辨率流圖F^{LR}。將流圖F^{LR}看作一幅圖像,使用具有縮放因子s的雙線性插值將其放大,從而得到HR流圖。使用高分辨率的流程圖F^{HR}根據(jù)從前一幀到當前幀的光學流對先前估計的圖像I_{t-1}^{est}進行變形。使用空間到深度的轉(zhuǎn)換將變形的先前輸出I_{t-1}^{est}映射到LR空間。在最后一步中,我們將變形前一輸出I_{t-1}^{est}的LR映射與信道維度中的當前低分辨率輸入幀I_t^{LR}連接起來,并將結(jié)果I_t^{LR}\oplus S_s(I_{t-1}^{est})饋送到超分辨率網(wǎng)絡(luò)SRNet。該框架的最終估計I_t^{est}是超分辨率網(wǎng)絡(luò)SRNet的輸出。

FNet.png

除了SRNet中使用步長為2進行空間上采樣的轉(zhuǎn)置卷積外,這兩個網(wǎng)絡(luò)中的所有卷積都使用帶有步長為1的3\times 3卷積核。

Sub-pixel motion compensation (SPMC)

ICCV2017提出,用于視頻超分辨率網(wǎng)絡(luò)。視頻超分辨關(guān)注的主要問題有兩個:一是如何充分利用多幀關(guān)聯(lián)信息,而是如何有效地融合圖像細節(jié)到高分辨率圖像中。
論文鏈接Detail-revealing Deep Video Super-resolution
在動作補償方面,backward warping到參考幀的方法其實并不是最優(yōu)的。多幀融合方面,雖然很多CNN方法可以產(chǎn)生豐富的細節(jié),但不能確定圖像細節(jié)是來自內(nèi)部的幀,還是外部的數(shù)據(jù)。在可縮放性方面,ESPCN、VSRnet、VESPCN對多尺度超分辨都不太靈活。
基于此,作者提出了一種基于深度學習的視頻SR方法,該方法包括亞像素運動補償sub-pixel motion compensation(SPMC)層,用來有效處理動作補償和特征圖縮放。另外,用一個基于LSTM的框架來處理多幀輸入。

SPMC框架結(jié)構(gòu).png

作者提出的框架如上圖所示。這個網(wǎng)絡(luò)主要分成三個部分:motion estimation, motion compensation和detail fusion。
動作補償motion compensation用的就是SPMC層,是一種利用運動中的亞像素信息,同時實現(xiàn)亞像素運動補償(SPMC)和分辨率增強的新方法。
J^H=Layer_{SPMC}(J^L,F; \alpha),
其中J^LJ^H是輸入LR和輸出HR圖像,F(xiàn)是用于轉(zhuǎn)置翹曲的光流,α是縮放因子。該層包含兩個子模塊——采樣網(wǎng)格生成器和可微的圖像采樣器,根據(jù)X^S_PY^S_P,在放大圖像空間中構(gòu)造輸出圖像。SPMC層以一個LR圖像J^L和一個光流F = (u, v)作為輸入,可以同時實現(xiàn)運動補償和分辨率增強。在大多數(shù)以前的工作中,它們是分開的步驟(例如,反向翹曲+雙三次插值)。

與U-net結(jié)構(gòu)思想有相似之處,但是作者并沒有引用。


U-net結(jié)構(gòu).png

U-Net為了能精準的定位,收縮路徑上提取出來的高像素特征會在升采樣(upsampling)過程中與新的特征圖(feature map)進行結(jié)合,以最大程度的保留前面降采樣(downsampling)過程一些重要的特征信息。而為了能使網(wǎng)絡(luò)結(jié)構(gòu)能更高效的運行,結(jié)構(gòu)中是沒有全連接層(fully connected layers),這樣子可以很大程度上減少需要訓練的參數(shù),并得益于特殊的U形結(jié)構(gòu)可以很好的保留圖片中的所有信息。
收縮路徑上是每兩個3\times 3的卷積層(unpadded convolutional layers)后會跟一個2\times 2的最大池化層(Maxpooling layer: 步長為2),并且每個卷積層后面采用relu激活函數(shù)來對原始圖片進行降采樣操作,除此之外,每一次降采樣都會增加一杯通道數(shù)(double the number of feature channel)。
在擴展路徑的向上采樣(deconvolution)中,每一步會有一個 2\times 2的卷積層(激活函數(shù)也是relu)和一個兩個3\times 3的卷積層,于此同時,每一步的升采樣都會加入來自相對應(yīng)收縮路徑的特征圖(經(jīng)裁剪以保持相同的形狀shape)。
在網(wǎng)絡(luò)的最后一層是一個1\times 1的卷積層,通過這一操作可以將64通道的特征向量轉(zhuǎn)換為所需要的分類結(jié)果的數(shù)量,最終U-Net的整個網(wǎng)絡(luò)一共有23層卷積層。U-Net有一個很重要的有點是其基本可以對任意形狀大小的圖片進行卷積操作,特別是任意大的圖片。

Temporal Generative Adversarial Nets (TGAN) 時間生成對抗網(wǎng)絡(luò)

ICCV2017提出,用于
論文鏈接Temporal Generative Adversarial Nets with Singular Value Clipping

TGAN網(wǎng)絡(luò)結(jié)構(gòu).png

不同于典型CNN在空間方向上執(zhí)行二維卷積的,時序生成器 temporal generator中的反卷積層在時間方向上執(zhí)行一維反卷積。接下來應(yīng)用反卷積層,擴展它的長度同時減少通道的數(shù)量。除通道數(shù)和一維反卷積外,反卷積層的設(shè)置與圖像生成器 image enerator的設(shè)置相同。像原始圖像生成器一樣,在反卷積之后插入一個批歸一化(BN)層[13],并使用修正線性單元(ReLU)[23]作為激活函數(shù)。


生成器網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置圖.png

[13] S. Ioffe and C. Szegedy. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. arXiv preprint arXiv:1502.03167, 2015.
[23] V. Nair and G. E. Hinton. Rectified Linear Units Improve Restricted Boltzmann Machines.ICML, (3):807–814, 2010.

貝葉斯模型

2014 IEEE TPAMI論文,用于視頻超分辨率,是一種估計HR視頻序列的貝葉斯方法,該方法同時對運動場和模糊核進行融合。
論文鏈接A Bayesian Approach to Adaptive Video Super Resolution

Bayesian Model.png

香港科技大學Qi Shan在2008年提出一種簡單而有效的上采樣方法來自動增強圖像/視頻的分辨率,同時保留必要的結(jié)構(gòu)信息。該方法的主要優(yōu)點在于反饋控制框架,能夠從輸入數(shù)據(jù)中忠實地恢復(fù)高分辨率圖像信息,而不需要附加從其他例子中學習到的局部結(jié)構(gòu)約束。這使得我們的方法獨立于所選例子的質(zhì)量和數(shù)量,這是基于學習的算法的典型問題,同時產(chǎn)生高質(zhì)量的結(jié)果,沒有可見的難看的工件。另一個優(yōu)點是,這個方法自然地擴展到視頻上采樣,其中時間一致性是自動維護,方法運行快。通過對不同圖像/視頻數(shù)據(jù)的實驗,驗證了算法的有效性。


Fast Image/Video Upsampling.png

系統(tǒng)框架。輸入圖像L最初向上采樣,如粉紅色框中所示。中間的綠色框和灰色框分別代表反褶積和反饋控制上采樣的步驟。

論文鏈接Fast Image/Video Upsampling

三、語音的采樣方式

1、語音采樣和量化概述

采樣定理又名抽樣定理、取樣定理、奈奎斯特定理。它是連續(xù)時間信號和離散時間信號之間的橋梁,說明了采樣頻率和信號頻譜之間的關(guān)系。定理內(nèi)容:當采樣頻率fs.max大于信號中最高頻率fmax的2倍時(fs.max>2fmax),采樣之后的數(shù)字信號完整地保留了原始信號中的信息,一般實際應(yīng)用中保證采樣頻率為信號最高頻率的2.56~4倍。

該定理由奈奎斯特推出,而后信息論的創(chuàng)始人香農(nóng)又對此加以明確的說明并正式作為定理引用,因此又被稱為香農(nóng)采樣定理。

語音信號是一種連續(xù)變化的模擬信號,而計算機只能處理和記錄二進制的數(shù)字信號,因此,由自然音而得的音頻信號必須用計算機的聲音編輯工具,先進行語音采樣,然后利用了計算機上的D轉(zhuǎn)換器,將模擬的聲音信號變成離散的量化了的數(shù)字信號量化和編碼,變成二進制數(shù)據(jù)后才能送到計算機進行再編輯和存儲。語音信號輸出時,量化了的數(shù)字信號又通過A轉(zhuǎn)換器,把保存起來的數(shù)字數(shù)據(jù)恢復(fù)成原來的模擬的語音信號。

當采樣頻率是原采樣頻率時,聽到的聲音是未失真的聲音;當降低采樣頻率時,聽到的聲音顯得比原語音信號要悶(低沉);當增加采樣頻率時,聲音會變得更加尖銳。

每秒從連續(xù)信號中提取并組成離散信號的采樣個數(shù),也就是計算機每秒鐘采集多少個信號樣本。采樣頻率越高,即采樣的間隔時間越短,則在單位時間內(nèi)計算機得到的樣本數(shù)據(jù)就越多,對信號波形的表示也越精確。

下面列舉了幾個常見的采樣率

8000Hz (8KHz)電話所用采樣率,對于人的說話已經(jīng)足夠

11025Hz (11.025KHz)獲得的聲音稱為電話音質(zhì),基本上能讓你分辨出通話人的聲音

22050Hz (22.050KHz)無線電廣播所用采樣率,廣播音質(zhì)

32000Hz (32KHz)miniDV數(shù)碼視頻camcorder、DAT(LPmode)所用采樣率

44100Hz (44.1KHz)音頻CD,也常用于MPEG-1音頻(VCD,SVCD,MP3)所用采樣率

48000Hz (48KHz)miniDV、數(shù)字電視、DVD、DAT、電影和專業(yè)音頻所用的數(shù)字聲音所用采樣率

當前聲卡常用的采樣頻率一般為44.1KHz、1KHz、22KHz和48KHz,采樣頻率越高,獲得的聲音文件質(zhì)量越好,占用存儲空間也就越大。一首CD音質(zhì)的歌曲會占去45M左右的存儲空間。

2、深度學習中語音采樣方式

NLP上應(yīng)用的經(jīng)典采樣方法有 Inverse Sampling、Rejective Sampling以及Importance Sampling等。
NLP采樣方法
機器學習和自然語言處理
從隨機過程到馬爾科夫鏈蒙特卡洛方法

Sampling(采樣):
Inverse Sampling(反向采樣)
Simple Random Sampling(簡單隨機采樣)
Offline Sampling(離線等可能K采樣)
Online Sampling(在線等可能K采樣)
Ratio-based Sampling(等比例隨機采樣)
Acceptance-rejection Sampling(接受-拒絕采樣)
Importance Sampling(重要性采樣)
MCMC(Markov Chain Monte Carlo 馬爾科夫蒙特卡羅采樣算法:Metropolis-Hasting& Gibbs)

反向采樣 Inverse Sampling

在反向采樣(有時稱為標準反向采樣)中,指的是一直從樣本中選取直到事件發(fā)生指定次數(shù)為止。不知道從多大的樣本中采樣時,經(jīng)常使用這個方法。例如,假設(shè)正在進行一項野生動物管理調(diào)查,想要捕捉20只帶狀鳥。隨機捕捉鳥類,直到收集了20只帶狀鳥類(還有未知數(shù)量的非帶狀鳥類)。樣品的大小可以是100只鳥,也可以是88只鳥,或者203只鳥等。

Paul Lavrakas 在“調(diào)查研究方法百科全書”中概述了兩種類型的反向抽樣

  • 一次矢量采樣涉及同時繪制兩個觀測值(兩個觀測值中的每一個)。當從其中一個群體獲得x成功時,采樣停止。
  • 獲勝者抽樣是一次從一個(隨機選擇的)人群中抽取一個項目。當故障發(fā)生時采樣停止,然后在第二個人口中繼續(xù)采樣,直到發(fā)生故障。此時,采樣繼續(xù)進行,在兩個群體之間來回切換,直到發(fā)生預(yù)定數(shù)量的成功。

反向采樣的兩種基本方法是多反向采樣(MIS)一般反向采樣(GIS)。

  • 當已知亞種群大小時,使用MIS(最初由Chang及其同事提出)。它的主要優(yōu)點是避免了后分層中的空層問題。在分層中,選擇樣本,然后分成層(例如,按性別,年齡或其他特征)。一些選定的階層最終可能沒有條目,特別是如果類別很少。MIS確保每個層中至少有n個項目結(jié)束(對每個層次的指定數(shù)量的觀測值繼續(xù)采樣)。
  • GIS避免采樣“不可行的單位”(Salehi&Seber)。執(zhí)行采樣,直到分層包含預(yù)定數(shù)量的單位直到達到最大樣本量。

當特定特征很少時,通常執(zhí)行反向采樣 Inverse sampling。例如,它是檢測兩種不同治療罕見疾病之間差異的好方法;避免了由于疾病的罕見而導致數(shù)據(jù)稀疏的問題。一般而言,只要獲得n個體所需的樣本大小 n種群大小N 相比較小,反向采樣將為提供比直接采樣更精確的估計(Scheaffer等,2011)。但是,因為樣本大小是未知的,理論上可能是無限的(在某些情況下),這種技術(shù)成本高,勞動強度大,而且耗時。與隨機抽樣相比,估計的方差通常要大得多。

參考鏈接 Inverse Sampling

拒絕抽樣 Rejective Sampling

數(shù)值分析中,拒絕采樣是用于從分布中生成觀測值的基本技術(shù)。它通常也被稱為接受拒絕方法或“接受拒絕算法”,是一種精確的模擬方法。該方法適用于任何分布\Bbb{R}^m密度。

拒絕采樣基于以下觀察:對于隨機變量的采樣,可以對2D笛卡爾圖執(zhí)行均勻隨機采樣,并且將樣本保持在其密度函數(shù)的圖的區(qū)域中。此屬性可以擴展為N維函數(shù)。

在學習隨機模擬的時候通常會講到用采樣的方法來計算π值,也就是在一個1\times1的范圍內(nèi)隨機采樣一個點,如果它到原點的距離小于1,則說明它在1/4圓內(nèi),則接受它,最后通過接受的占比來計算1/4圓形的面積,從而根據(jù)公式反算出預(yù)估的π值,隨著采樣點的增多,最后的結(jié)果\hat{π}會越精準。

上面這個例子里說明一個問題,想求一個空間里均勻分布的集合面積,可以嘗試在更大范圍內(nèi)按照均勻分布隨機采樣,如果采樣點在集合中,則接受,否則拒絕。最后的接受概率就是集合在更大范圍的面積占比。

# -*- coding=utf8 -*-

# Code from Chapter 14 of Machine Learning: An Algorithmic Perspective
# The basic rejection sampling algorithm

from pylab import *
from numpy import *

def qsample():
    return random.rand()*4.

def p(x):
    return 0.3*exp(-(x-0.3)**2) + 0.7* exp(-(x-2.)**2/0.3) 

def rejection(nsamples):
    
    M = 0.72#0.8
    samples = zeros(nsamples,dtype=float)
    count = 0
    for i in range(nsamples):
        accept = False
        while not accept:
            x = qsample()
            u = random.rand()*M
            if u<p(x):
                accept = True
                samples[i] = x
            else: 
                count += 1
    print count   
    return samples

x = arange(0,4,0.01)
x2 = arange(-0.5,4.5,0.1)
realdata = 0.3*exp(-(x-0.3)**2) + 0.7* exp(-(x-2.)**2/0.3) 
box = ones(len(x2))*0.75#0.8
box[:5] = 0
box[-5:] = 0
plot(x,realdata,'k',lw=6)
plot(x2,box,'k--',lw=6)

import time
t0=time.time()
samples = rejection(10000)
t1=time.time()
print "Time ",t1-t0

hist(samples,15,normed=1,fc='k')
xlabel('x',fontsize=24)
ylabel('p(x)',fontsize=24)
axis([-0.5,4.5,0,1])
show()

重要性抽樣 Importance Sampling

Importance Sample 解決的問題 在深度學習特別是NLP的Language Model中,訓練的時候最后一層往往會使用softmax函數(shù)并計算相應(yīng)的梯度。要知道在LM中m的大小是詞匯的數(shù)量決定的,在一些巨大的模型里可能有幾十萬個詞,也就意味著計算Z的代價十分巨大。softmax函數(shù)的表達式是:
p(y_i) = softmax(x^Tw_i)=\frac{e^{x^Tw_i}}{Z},

Z= \sum_{j=1}^{|V|} e^{x^Tw_i}

Language Model中的softmax.png

而在訓練的時候無非是想對softmax的結(jié)果進行求導,也就是說
\Delta_\theta (\log P(y_i))=\Delta_\theta(x^Tw_i)-\sum_{\acute{y^{\prime}\in V}} P(y^{\prime})\Delta_\theta(x^Tw_i)
后面這個形式就是與采樣相關(guān):
\sum_{\acute{y^{\prime}\in V}} P(y^{\prime})\Delta_\theta(x^Tw_i)=E_p[\Delta_\theta(x^Tw_i)]
典的蒙特卡洛方法就可以派上用途了,與其枚舉所有的詞,我們只需要從V里sample出一些樣本詞,就可以近似地逼近結(jié)果了。

同時直接從P中sample也不可取的,而且計算P是非常耗時的事情(因為需要計算Z),我們一般只能計算\tilde{P}(y),而且直接從P中sample也不可取,所以選擇另一個分布Q進行Importance Sample即可。一般來說可能選擇的Q分布是簡單一些的n?gram模型。

一般來說可能選擇的Q
分布是簡單一些的N元(N-Gram)模型。下面是論文中的算法偽代碼,基本上是比較標準的流程。


算法偽代碼.png

ClariNet:首個端到端并行音頻波形生成模型

論文鏈接 ClariNet: Parallel Wave Generation in End-to-End Text-to-Speech
代碼 github
合成示例Audio samples

ClariNet 還是語音合成領(lǐng)域第一個完全端到端的系統(tǒng),可以通過單個神經(jīng)網(wǎng)絡(luò),直接將文本轉(zhuǎn)換為原始的音頻波形。先前為業(yè)界所熟知的端到端音合成系統(tǒng)(比如 Google 提出的 Tacotron ,百度之前提出的 Deep Voice 3 ),實際是先將文本轉(zhuǎn)換為頻譜(spectrogram),然后通過波形生成模型WaveNet 或者 Griffin-Lim 算法,將頻譜轉(zhuǎn)換成原始波形輸出。這種方法由于文本到頻譜的模型和 WaveNet 是分別訓練優(yōu)化的,往往導致次優(yōu)的結(jié)果。而百度研究員提出的 ClariNet,則是完全打通了從文本到原始音頻波形的端到端訓練,實現(xiàn)了對整個 TTS 系統(tǒng)的聯(lián)合優(yōu)化,比起分別訓練的模型,在語音合成的自然度上有大幅提升。另外,ClariNet 是全卷積模型,訓練速度比起基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的模型要快 10 倍以上。

ClariNet 的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示。它使用基于注意力機制(Attention)的編碼器-解碼器(Encoder-Decoder)模塊來學習文本字符與頻譜幀之間的對齊關(guān)系。解碼器的隱狀態(tài)(hidden states)被送給 Bridge-net 來進行時序信息處理和升采樣(upsample)。最終 Bridge-net 的隱狀態(tài)被送給音頻波形生成模塊(Vocoder),用來最終合成原始音頻波形。

Architecture.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容