Generative Adversarial Nets[Theory&MSE]



本文來自《deep multi-scale video prediction beyond mean square error》,時間線為2015年11月,LeCun等人的作品。
從一個視頻序列中預測未來的圖像幀涉及到構建一個內部表征,該表征能夠對准確對圖片幀演化(如圖像內容和動態)進行建模。這就是為什么像素空間的視頻預測主要是通過無監督特征學習來完成。雖然光流在CV領域已經研究的很成熟了,卻很少用在未來圖像幀預測中。許多視覺應用可以通過視頻的下一幀來獲取信息,且不需要對每個像素軌跡進行追蹤。本文中,作者訓練一個卷積網絡基於輸入的序列去生成未來圖像幀。為了解決MSE loss函數帶來的圖片幀模糊問題,作者提出了三個不同且完畢的特征學習策略:

  • 一個多尺度結構;
  • 一個對抗訓練方法;
  • 一個圖像梯度差loss函數。

0 引言

視頻表征的無監督特征學習是一個很有前景的研究方向,因為數據集基本是無限的,且目前進展仍不盡如人意。相比於經典的圖像重構問題,預測未來圖像幀甚至需要在缺失其他約束條件下(如稀疏性)構建准確,非平凡的內部表征。因此,該系統預測的越好,那么就需要越強的特征表征。《Unsupervised learning of video representations using LSTM》中通過構建預測圖像序列下一個圖片幀的系統,學到的表征能夠提升在兩個動作識別數據集上的分類結果。

本文主要關注直接在像素空間中進行預測,主要處理預測圖像中邊緣不夠清晰明顯的問題。通過評估不同的loss函數,發現生成對抗學習可以成功的預測下一幀,最終基於圖像梯度生成一個新的loss,旨在保持邊緣的清晰度。

1 模型

本部分描述不同的模型結構(單一的,多尺度的,對抗的)和圖像梯度差loss(image gradient difference loss)函數。

\(Y=\{Y_1,...,Y^n\}\)是需要預測的幀序列,輸入的視頻幀序列為\(X=\{X^1,...,X^m\}\)。構建一個卷積網絡,其中卷積和ReLU交替出現。

如圖1所示,其是GAN中的G(生成)模塊,通過最小化距離函數基於拼接的輸入幀\(X\),預測一個或多個拼接的幀\(Y\)。其中假設基於預測幀和真實幀之間的距離是\(\ell_p\)(p=1或者2):

\[\mathcal{L}_p(X,Y)=\ell_p(G(X),Y)=||G(X)-Y||_p^p \]

然而,這樣的網絡至少有兩個主要不足:

  • 問題1:受限於核的size,卷積操作只有短時依賴。池化的選擇也是一種策略,因為輸出分辨率必須與輸入分辨率一致。有許多保持長時依賴且需要避免池化/子采樣導致分辨率減小的方法。最簡單也是最老的方法就是去掉池化/子采樣;或者通過使用“skip”連接跳過池化層,從而保留高頻信息;還有在拉普拉斯金字塔重建過程中線性地組合多個尺度,本文就是采用該方法。
  • 問題2:相比於較小程度的\(\ell_1\),使用\(\ell_2\) loss會生成模糊的預測,當預測更遠的幀時效果會越來越壞。假設輸出像素的概率分布有2個相似的模型\(v_1\),\(v_2\),即使\(v_{avg}\)的概率值非常低,值\(v_{avg}=(v_1+v_2)/2\)也會最大限度減小\(\ell_2\) loss。而在\(\ell_1\)范數下,該影響就減小很多了,不過也不是消失,輸出值將會同樣可能值集合的中位數。

1.1 多尺度網絡

關於上述問題1,首先將模型變成多尺度的:讓\(s_1,...,s_{N_{scales}}\,\)表示網絡輸入的size。在本文中,\(s_1=4\times 4,s_2=8\times 8,s_3=16\times 16,s_4=32\times 32\)\(u_k\)表示朝着size \(s_k\)方向的上縮放因子。令\(X_k^i,Y_k^i\)表示關於size \(s_k\)\(X^i,Y^i\)的下縮放,且\(G_k^{'}\)是一個網絡,給定輸入\(X_k\)和粗粒度預測值\(Y_k\)基礎上,預測\(Y_k-u_k(Y_{k-1})\)。通過循環定義\(G_k\),關於\(s_k\)的預測\(\hat Y_k\)為:

\[\hat Y_k=G_k(X)=u_k(\hat Y_{k-1})+G_k^{'}\left( X_k,u_k(\hat Y_{k-1}) \right) \]

因此,網絡就預測了一系列結果,從最低的分辨率開始,使用\(s_k\)的預測結果作為起始點,讓預測結果的size變成\(s_{k+1}\)。在最低尺度\(s_1\),網絡直需要\(X_1\)作為輸入。結構如圖2。

圖2 具體細節下面介紹。令可訓練的參數為\(W_G\),通過SGD進行訓練。且不論多尺度結構,這里基於\(X\)進行\(Y\)的搜索並沒有關於任何可能的假設,當然也會導致模糊預測。因為問題2還沒解決。即圖像梯度差loss。

1.2 對抗訓練

GAN的原理這里就不介紹了。本文作者采用了這種對抗的方式開完成無監督訓練的幀預測目的。這里先介紹判別器D,后續再介紹生成器G。判別器D接收圖像幀序列,然后預測最后一幀是生成器G生成的概率。注意到這里只判別最后一幀是否是G生成的,而其他幀總是來自數據集的,這讓判別器D能夠使用時序信息,所以G也要生成關於輸入圖片幀序列時序相關的圖片幀。因為G是一輸入幀\(X\)為條件,即使沒有噪音的情況下,生成器的輸入也會存在變化,所以噪音在這里就不是必須項了。作者在有和沒有噪音兩個情況下做的實驗也證實了基本沒差別。所以后續實驗就采用沒有隨機噪音的方式。

為什么使用對抗loss的直觀想法是:理論上,為了解決問題2。假設幀序列\(X=(X^1,...X^m)\),后續幀可以是\(Y=(Y^1,...,Y^n)\)或者\(Y^{'}=(Y^{'1},...,Y^{'n})\),且兩個序列概率相同。如之前所述,基於\(\ell_2\) loss訓練的網絡可以預測生成平均幀\(Y_{avg}=(Y+Y^{'})/2\)。然而,序列\((X,Y_{avg})\)是基於幀\(X\)並后續跟着\(Y_{avg}\)組成的,其並不是一個可能的序列,所以判別器D可以很容易的進行判別,即模型D並不需要去判別其是屬於序列\((X,Y)\)還是序列\((X,Y^{'})\)

判別器模型D是一個只有單一標量輸出的多尺度卷積網絡。訓練\((G,D)\)包含2個交替的過程。為了簡潔,假設使用純粹的SGD(batchsize=1)進行訓練(batchsize=M的情況就是將這M個樣本的loss相加)。

訓練D
\((X,Y)\)表示數據集中樣本,其中\(X\)是一個包含m幀的圖像序列,而\(Y\)是包含n幀的圖像序列。需要訓練一個判別器D去准確區分\((X,Y)\)是正類,而\((X,G(X))\)是負類。詳細點說,對每個尺度\(k\),先將生成器G固定,對\(D_k\)進行一次SGD迭代。此時有監督樣本是類1的\((X_k,Y_k)\)和類0的\((X_k,G_k(X_k))\)。因此,訓練D的loss函數為:

\[\mathcal{L}_{adv}^D(X,Y)=\sum_{k=1}^{N_{scales}}\, L_{bce}(D_k(X_k,Y_k),1)+L_{bce}(D_k(X_k,G_k(X_k)),0) \]

其中\(L_{bce}\)是二值交叉熵(binary cross-entropy,bce)loss,定義如下:

\[L_{bce}(Y,\hat Y)=-\sum_i\hat Y_i \log(Y_i)+(1-\hat Y_i)\log (1-Y_i) \]

這里\(Y_i\)取值為\(\{0,1\}\),而\(\hat Y_i\)取值為\([0,1]\)

訓練G
\((X,Y)\)表示不同的數據樣本,此時保持判別器D固定,對生成器G執行一次SGD迭代,以最小化對抗loss:

\[\mathcal{L}_{adv}^G(X,Y)=\sum_{k=1}^{N_{scales}}L_{bce}(D_k(X_k,G_k(X_k)),1) \]

最小化這個loss意味着讓生成器G生成的數據能讓判別器D變得混亂,即D不能正確的進行判別G生成的結果。然而實際上,只最小化該loss會導致不穩定。G總是生成能夠混亂D的樣本,可是卻並不足夠靠近\(Y\)(即,生成的樣本是足夠讓D以假亂真,可是生成的樣本對人類沒多大意義)。然后,D會學着判別這些樣本,導致G生成其他混亂的樣本,然后一直循環。為了解決這個問題,需要在生成器上增加一個loss,即成為一個組合loss。此時生成器G的loss為\(\lambda_{adv}\mathcal{L}_{adv}^G+\lambda_{\ell_p}\mathcal{L}_p\)。這自然引入了一個均衡超參數,即介於是邊緣銳化還是GAN的對抗原則,該過程在下面算法1詳細介紹。

1.3 圖像梯度差loss(Image Gradient Difference Loss,GDL)

另一個銳化圖像邊緣的策略是直接在生成的loss函數中對預測的圖像梯度差進行懲罰。這里定義一個新的loss,梯度差loss(gradient difference loss,GDL),且其與對抗loss結合起來。GDL函數是介於ground-truth圖像\(Y\)和預測圖像\(G(X)=\hat Y\)之間的:

\[\mathcal{L}_{gdl}(X,Y)=L_{gdl}(\hat Y,Y)=\sum_{i,j}\left ||Y_{i,j}-Y_{i-1,j}|-|\hat Y_{i,j}-\hat Y_{i-1,j}|\right|^\alpha+\left ||Y_{i,j-1}-Y_{i,j}|-|\hat Y_{i,j-1}-\hat Y_{i,j}|\right |^\alpha \]

這里\(\alpha\)是一個整數或者等於1,\(|\cdot|\)表示絕對值。
本文相對同類論文優勢:

  • 相對於其他人總的變化只考慮輸入的重構幀,本文基於預測和真實值之間梯度差進行loss懲罰;
  • 選擇最簡單可能的圖像梯度,只涉及到近鄰的像素強度差異,並不考慮更廣的鄰居,讓訓練時間降低。

1.4 結合后的loss

在本文中,結合后的生成器最終loss如下:

\[\mathcal{L}(X,Y)=\lambda_{adv}\mathcal{L}_{adv}^G(X,Y)+\lambda_{\ell_p}\mathcal{L}_p(X,Y)+\lambda_{gdl}\mathcal{L}_{gdl}(X,Y) \]

2 實驗

本文基於UCF101和Sports 1m數據集,基於2個參數配置:

  • 使用4個輸入幀預測一幀未來幀,並將預測幀作為下一個真實數據來循環生成后續未來幀;
  • 使用8幀輸入幀同時預測8幀未來幀。該方法明顯是個更困難的問題。

使用Sports1m作為訓練集,因為UCF101只有圖片上部分位置才有變化,剩下的就和固定的背景一樣。通過隨機選擇一個范圍內時序圖像幀,基於32x32的塊,並確定有足夠的變化(基於幀之間進行L2計算來判斷)。數據塊首先進行歸一化,保證值范圍在-1和1之間。

2.1 網絡結構

基於好幾個模型進行實驗,不過只有在最開始的時候是這樣,后續都是基於多尺度結構。本文的baseline模型使用L1和L2的loss,GDL-L1(或者GDL-L2)模型是在GDL上\(\alpha=1\)(對應\(\alpha=2\))和\(p=1\)(對應\(p=2\))的loss,相對的超參數\(\lambda_{gdl}=\lambda_{\ell_p}=1\)。對抗模型(Adv)采用的對抗loss,其\(p=2\),且\(\lambda_{adv}=0.05,\lambda_{\ell_p}=1\)。最后Adv+GDL模型是二者結合,基於同樣的參數下\(\alpha=1,\lambda_{gdl}=1\)

生成模型的訓練
生成模型G結構如表1

其包含padded卷積和ReLU激活函數。在模型最后增加Tanh保證輸出結果在-1和1之間。學習率$\rho_G $開始是0.04,然后隨着時間降到0.005。為了發揮GPU硬件顯存,在對抗學習中minibatch為4或者8。基於小圖像塊進行訓練,不過因為是全卷積的,所以可以預測的時候無縫應用在更大圖片上。

對抗訓練
判別器D也在表1中,使用標准的非padded卷積,然后跟着全連接層和ReLU激活函數。對於最大的尺度\(s_4\),在卷積后面加了一個2x2的池化。網絡訓練的時候學習率\(\rho_D=0.02\)

2.2 質量評估


免責聲明!

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



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