論文鏈接:https://arxiv.org/abs/1703.07514
論文題目:Video Frame Interpolation via Adaptive Convolution(通過自適應卷積的視頻幀插值)
發表時間:2017年CVPR
作者及其背景:Simon Niklaus, Long Mai, Feng Liu(波特蘭州立大學Portland State University)
1.提出問題
傳統視頻幀插值方法是兩步走:運動估計和像素合成。運動估計一般使用光流法optical flow,光流法的難點在於遮擋,污漬和突然的光環境變化。基
於流的像素綜合也不能很可靠地處理遮擋的問題。
2.解決辦法
之前的插值是兩步走的:運動估計motion estimation 和像素合成pixel synthesis。文章提出了一種魯棒的視頻幀插值方法,該方法使用深度卷積神經
網絡實現幀插值,而無需將其明確划分為單獨的步驟。這個方法中用來生成插值幀interpolated frame的“像素合成”法pixel synthesis,就是作用在兩個輸
入圖像之間局部卷積local convolution(也就是說,對兩張輸入圖片進行像素級別的卷積,可以生成一張插值圖片)。這個卷積核作者號稱可以捕獲兩幀
圖片之間的局部運動local motion,並且得到像素合成法的系數。這個卷積核是在一個全卷積神經網絡里面估計的,它稀疏,可適應且是針對每一個像素
的(其實是以該像素點為中心的像素區域)。
具體來說,對於內插幀中的像素(x,y),此深度神經網絡將以該像素為中心的兩個接受域斑塊R1和R2作為輸入,並估計卷積核K。該卷積內核用
於與輸入補丁P1和P2卷積以合成輸出像素,如圖1所示。
圖1
通過卷積進行像素插值。對於每個輸出像素(x,y),文章的方法是估計卷積核K並使用它與輸入幀中以(x,y)為中心的色塊P1和P2進行卷積以產
生其顏色ˆI(x,y)。
3.算法原理
給定兩個視頻幀I1和I2,那么任務就是在時域兩個輸入幀的中間插入新幀Iˆ。傳統的插值方法分兩步估計插值幀中像素Iˆ(x,y)的顏色:光流估計和
像素插值,如圖2(a)所示。當光流由於遮擋、運動模糊和紋理缺乏而不可靠時,這種兩步法可能性能會受到影響。另外,對坐標進行舍入(rounding)
得到I1(x1,y1)和I2(x2,y2)的顏色,很容易產生混疊(aliasing),而使用固定內核進行重采樣也不能很好地保留尖銳的邊緣信息。
文章解決方法就是將運動估計和像素合成集成到一個步驟,並將像素插值定義為輸入圖像I1和I2的局部卷積。如圖2(b)所示,通過在相應輸入圖像
中以(x,y)為中心的補丁P1(x,y)和P2(x,x)和適當的核K卷積獲得插值目標圖像的像素(x,y)值。卷積核K捕獲像素合成的運動和重采樣系
數。
圖2
像素插值的卷積實現的優點:
1)將運動估計和像素合成組合到一步提供了比兩步程序更穩健的解決方案;
2)卷積內核提供了解決諸如遮擋等困難情況的靈活性,一種數據驅動的方法直接估計卷積核並為遮擋區域產生視覺上合理的插值結果;
3)這種卷積公式可以無縫集成其他重采樣技術,如邊緣覺察(edge-aware)濾波法,以提供清晰的插值結果。
3.1 卷積核估計
文章設計了一個全卷積神經網絡來估計單個輸出像素的卷積核。該神經網絡的架構在表1中進行了詳細說明。具體來說,為了估計輸出像素(x,y)
的卷積核K,該的神經網絡將接受場斑R1(x,y)和R2(x,y)作為輸入。 R1(x,y)和R2(x,y)在各自的輸入圖像中均以(x,y)為中心。如
圖1所示,輸出內核將進行卷積以產生輸出像素(x,y)顏色的色塊P1和P2在與這些接受場相同的位置處共同居中,但尺寸較小。使用比貼片更大的接
收場來更好地處理運動估計中的孔徑問題。在文章的實現中,接收域大小為79×79像素。卷積補丁大小為41×41,內核大小為41×82,因為它用於與兩
個補丁進行卷積。該方法將相同的卷積核應用於三個顏色通道中的每一個。
表1
如表1所示,卷積神經網絡由幾個卷積層以及向下卷積組成,作為最大池層的替代方案。作者使用整流線性單位作為激活函數,並使用Batch
Normalization(批處理規范化)以進行正則化。文章指出可以通過水平和垂直翻轉訓練樣本以及顛倒其順序來廣泛利用數據增強。由於神經網絡是完全卷
積的。因此它不僅限於固定大小的輸入,
文章使用平移和拼接shift-and-stitch 技術(?),同時產生多個K,提高算法速度同時生成多個像素的內核。
一個關鍵的約束是輸出卷積核的系數應為非負數且總和為1,因此將最終的卷積層連接到空間softmax層,以輸出卷積核。
3.2損失函數
分別設計了 color loss 和 gradient loss,最終的損失函數是 combine the color and gradient loss as the final loss。
其中下標i表示第i個訓練示例,輸入的兩個patch Pi,1和Pi,2在插值幀中(xi,yi)處插值產生的像素,Ki是神經網絡輸出的卷積核。~Ci 表示the
ground-truth color。實驗表明,僅使用這種顏色損失(插值產生的像素和真實像素的差值),會導致結果模糊,通過在損失函數中加入圖像梯度可以緩解
這種模糊問題,這在文章的逐像素插值方法中很難做到這一點,因為無法從單個像素直接計算圖像梯度。
由於微分也是卷積,假設內核局部變化緩慢,文章通過使用卷積的關聯屬性來解決此問題:首先計算輸入色塊的梯度,然后使用估計的核進行卷積,
得到感興趣像素處插值圖像的梯度。由於一個像素(x,y)具有八個直接相鄰的像素,文章使用有限差分(finite difference?)計算八個梯度,並將它們
全部合並:
Gki,1和Gki,2是輸入塊Pi,1和Pi,2的梯度,〜Gki是the ground-truth color的梯度。將上述顏色和漸變損失合並為最終損失Ec +λ·Eg。 實驗發現λ= 1
效果最好,能夠產生更清晰的插值結果。
4.實驗
1)訓練
只需要真實視頻。使用了具有共享許可的Flickr公開提供的視頻,下載了3,000個使用關鍵字的視頻, 例如“開車”,“跳舞”,“沖浪”,“騎
行”和“滑雪”,將下載的視頻縮放到1280×720像素的固定大小。不使用隔行掃描視頻,這些視頻有時質量比逐行掃描格式的視頻低。
將每個視頻中的所有幀分為三幀組,每個組包含視頻中的三個連續幀,每個三幀組中隨機選取一個像素,然后根據上面的規則選取對應的patch。通過比
較第一和第三張圖的光流,選擇運動更明顯三幀組。
為了數據擴充,選擇的patch要比神經網絡的接受域receptive-field大,為150×150(超過圖片的部分用0填充)。通過隨機裁剪、在水平和垂直方
向隨機翻轉、隨機交換其時間順序,讓樣本中光流對稱分布,使神經網絡不會偏向某個方向。
超參的選擇:卷積核大小和接收域大小是文章的深度神經網絡的兩個重要超參數。理論上,卷積核必須大於兩個幀之間的像素運動才能捕獲運動以
產生良好的插值結果。為了神經網絡對大運動具有魯棒性同時包含大量要估計的值,因此選擇一個足夠大的卷積核,以捕獲訓練數據集中最大的運動。文
章系統中的卷積內核大小為41×82,將應用於兩個41×41色塊。同時,接收域要比卷積核大,才能很好地處理孔徑問題,但是,較大的接收場需要更多
的計算並且對運動不太敏感。 經過實驗,發現79×79達到了良好的平衡。
Shift-and-stitch:減輕冗余計算的問題。全卷積神經網絡不需要固定大小的輸入,因此它可以通過提供比產生一個卷積核K所需的更大的輸入,一
次為多個輸出像素計算K。通過這種方式獲得的輸出像素不相鄰,而是稀疏分布(卷積核是連着的,對應像素都在卷積核的中心位置,像素是稀疏分布
的)
邊界處理:由於網絡的接收場以及卷積核的大小,需要填充輸入幀以合成內插幀的邊界像素。在文章的實現中,采用零填充。這種方法通常效果很
好,並且不會引入明顯的偽像。
2)對比實驗
與最新的視頻幀插值方法進行了比較,包括最新的基於相位的插值方法和一些基於光流的方法:MDP-Flow2,Brox等人的方法,以及最近兩種基於
深度學習的方法,即DeepFlow2 和FlowNetS。
5.不足
目前僅能夠在兩個給定幀之間插入單個幀,雖然可以遞歸地繼續合成以在例如t = 0.25和t = 0.75處插入幀,但是無法在任意時間插入幀。
6.總結
文章提出了一種視頻幀插值方法,該方法將幀插值算法的兩個步驟(運動估計和像素插值)組合到具有兩個輸入幀的局部卷積的單個步驟中。卷積核
捕獲運動信息和重新采樣系數以進行適當的像素插值。開發了一個深層的全卷積神經網絡,該網絡能夠估計空間自適應的卷積核,從而使邊緣感知像素合
成可以產生清晰的插值結果。可以直接從廣泛可用的視頻數據中訓練該神經網絡。文章的實驗表明,該方法可以實現高質量的幀插值,並能夠很好地處理
具有挑戰性的情況,例如遮擋,模糊和亮度突然變化。