基于《Arbitrary Style Transfer with Style-Attentional Networks》的视频风格迁移
一、方法介紹
本文是參照Arbitrary Style Transfer With Style-Attentional Networks[1]中圖像風格遷移的方法去實現視頻風格遷移。其工作的主要貢獻為:
1)提出了SANet去靈活匹配風格特征和內容特征在語義上相近的部分;
2)針對SANet和decoder組成的網絡提出了新的損失函數;
3)風格化圖像的效率以及質量都很高。
源碼:https://github.com/GlebBrykin/SANET
1.1總體結構
圖1是論文[1]方法的總體框架。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1 算法框架
從圖1中看出該算法主要由編碼器、SANet以及解碼器構成。編碼器使用的是預訓練好的VGG19,用來提取內容圖像和風格圖像的特征,SANet負責將來自VGG19的Style feature map和Content feature map根據其注意力進行結合,而解碼器的網絡結構則是與編碼器所對稱的,可以利用結合后的feature map進行圖像的重建,得到的圖像即為風格化后的圖像。本算法利用了VGG19的Relu4_1和Relu5_1兩個網絡層輸出的特征去進行結合,這是因為只使用Relu4_1可以很好保留風格圖像和內容圖像的全局結構,但其局部風格顯示效果不好。而Relu5_1對其局部風格表現的效果較好,因為其接受域更大。所以利用Relu4_1和Relu5_1輸出的特征都利用兩個SANet結合后再整合得到最終的風格圖像。其效果展示見圖2。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2 不同網絡層特征進行風格化的效果對比
1.2 SANet
下面對算法中建立的SANet進行簡單的介紹,其網絡結構見圖3。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖3 SANet結構
SANet主要由3個(1,1)的卷積層構成,其輸入Fc和Fs為VGG19輸出的內容圖像和風格圖像的特征圖。對其先進行歸一化處理得到和,然后通過f和g計算其注意力,公式如下:
C(F)為歸一化因子。SANet可以通過學習來映射內容和樣式特征圖之間的關系(例如相似度),從而在內容特征圖的每個位置嵌入適當的風格特征。
1.3損失函數
本文訓練所使用的損失函數由三部分組成,分別是傳統的風格和內容損失以及本文新提出的identity損失。
如圖1顯示,我們借助了預訓練好的encoder去計算損失函數。其中內容損失計算的是風格化圖像通過encoder的特征與原內容圖像的特征歸一化后的歐幾里得距離。風格損失是計算的Relu1_1,Relu2_1,Relu3_1,Relu4_1,和Relu5_1上的AdaIN風格損失。Identity損失的計算過程見圖4。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖4 identity損失計算圖
輸入的內容圖像和風格圖像為同一張圖,再利用得到的風格化圖像與原圖在像素級上和感知層上計算差異。
圖5展示了損失函數中權重對風格遷移結果的影響。其中(a)將λidentity1、λidentity2和λs分別固定為0、0和5,并將λc從1增大到50所獲得的結果;(b)通過將λc和λs分別固定為0和5,并將λidentity1和λidentity2分別從1到100和從50到5,000增大獲得的結果。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖5 不同權重配比下的風格化結果
在沒有identity損失的情況下,如果增加內容損失的權重,則可以保留內容結構,但是由于內容損失和風格損失之間的權衡,風格的特征會逐漸消失。 相反,在沒有內容損失的情況下增加identity損失的權重,可以在保持風格的同時盡可能多地保留內容圖像的結構。但是,無法避免內容結構的失真。因此,采用了內容損失和identity損失的組合來維護內容結構,同時豐富風格特征。
二、改進
源碼:https://github.com/EnchanterXiao/video-style-transfer
2.1 基礎模型
我們使用的基礎模型,是上文預訓練的模型。使用的內容圖像數據集為COCO2014,風格圖像數據集為WikiArt。優化函數使用的是Adam,初始學習率為1e-4,batch size為5(5對內容和風格圖像),迭代的次數為500000。其參數配置為λc=1,λs=3,λidentity1=50,λidentity2=1。
2.2添加損失函數
由于原文的目的是圖像的風格遷移,當將其直接應用于視頻風格遷移時,其輸出的結果在流暢度上并不是十分令人滿意的。所以我們們通過添加時序上的平滑損失和圖像空間上的平滑損失,來增加視頻的流暢度。
圖像空間上的平滑損失來源于文[2],通過計算生成圖像在水平和垂直軸上的平均梯度作為損失函數。
時序上的一致性通過查找文獻,發現一般主要由兩種方式去進行實現,一類從模型角度引入 voxel 的關聯,另一類從損失函數的角度限制。在視頻風格遷移中,時序損失函數上比較常見的方法是計算前后幀輸入圖像的光流,其利用t-1幀的輸出圖像以及光流預測t幀的圖像,再與t幀的輸出結果計算差異。但是,我們在自制視頻數據集上進行損失函數的測試時,發現了兩個問題:一是訓練時間的增長較多,二是相鄰幀的圖像利用光流預測后的差異有時候要比直接計算的差異還大。基于以上原因,我們選擇了論文[3]中提出的思路,直接用相鄰幀之間的特征圖的差作為時序上的損失。但是個人感覺該loss雖然可以保證視頻的平滑,但是也可能抑制幀之間該有的變化。
2.3 視頻數據集
為了提升該模型在視頻遷移上的效果,我們利用視頻序列制作了專門的內容圖像的數據集。我們從videvo.net上隨機下載了63個短視頻,其時長都在30s以下,將其解幀,其中60個視頻序列為訓練集,大約27000張圖片,3個作為測試集。
2.4 實驗
我們的實驗是微調文[1]中預訓練好的模型,加入2.2中的損失函數。利用2.3中的數據集和WikiArt數據集進行訓練。相關參數與2.1保持一致,新添加的損失函數權重分別為λt=2,λtv=20。同時對訓練數據的抽取方法進行調整,隨機抽取圖片時會同時返回它的前一幀圖片。進行100000次的迭代,在NVIDIA Titan X上的訓練時間約為30小時,學習曲線見圖6。
微調之后的結果對于視頻風格遷移的效果明顯優于基準模型,效果對比請見demo附圖。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖6學習曲線(從上到下依次是Lt、Ltv以及Ltotal的loss曲線)
參考文獻
?
?
總結
以上是生活随笔為你收集整理的基于《Arbitrary Style Transfer with Style-Attentional Networks》的视频风格迁移的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第七章 假设检验(2)
- 下一篇: MOSSE相关滤波跟踪算法(二)