1. 程式人生 > >Deep3D 中文翻譯

Deep3D 中文翻譯

Deep3D: 利用深度卷積神經網路的全自動 2D-3D 視訊轉換

圖 1
圖 1:我們提出的 Deep3D 是一個全自動的 2D-3D 轉換演算法。它將 2D 影象或視訊幀作為輸入,輸出 3D 立體影象對兒,可以通過 3D 眼睛或者頭戴式 VR 顯示裝置觀看。Deep3D 直接用 3D 電影中的立體對兒作為資料集進行訓練,損失是重建出的右視點與給定的左視點間的畫素級的差異。在內部,Deep3D 的網路預測出一個差異概率分佈圖,再輸入到可微的基於深度影象的渲染層來生成右視點。因此 Deep3D 不需要採集深度感測器的資料用於監督。

摘要

  由於 3D 電影成為主流和 VR 市場的顯露,對 3D 內容的需求迅速增長。然而,3D 視訊製作面臨著挑戰。本文提出利用深度神經網路自動地將 2D 視訊和影象轉換為有立體感的 3D 格式。此前的 2D-3D 自動轉換演算法不是端到端的,且需要 ground truth 深度圖來監督。我們的方法直接用從 3D 電影中提取出來的 立體對兒

進行端到端的訓練。這種新的訓練策略使得采用更大數量級的資料量成為可能,並且顯著地提高了演算法的表現。實際上,Deep3D 在定量的和人的主觀評估上都有超過基線的表現。

關鍵詞:深度估計,深度卷積神經網路

1 引言

  3D 電影非常流行並且佔據著電影市場的很大一部分,在美國和加拿大,2010 到 2014 年間,3D 電影的票房在全部電影票房的 14% 到 21% 之間。此外,逐漸顯露的頭戴 VR 顯示市場很有可能帶來 3D 內容需求的增長。
  3D 視訊和影象通常以立體格式儲存。每一幀都包括同一場景的兩個投影,一個暴露給觀察者的左眼,另一個暴露給觀察者的右眼,因此帶給觀察者以三維觀看場景的體驗。
  製作 3D 電影的方法有兩種:直接拍攝 3D 格式,或者拍攝 2D 後轉換成 3D。以 3D 格式拍攝需要昂貴的立體相機裝置。除了裝置成本外,阻止立體相機實用性的還有一些攝影技術問題。一些並不昂貴的特殊視覺效果,比如強制透視,就與多視點捕捉裝置不相容。2D-3D 轉換提供了另一種製作 3D 電影的方式。專業的轉換處理通常依賴於“深度藝術家”,他們手工地為每一幀創造深度圖。然後利用標準的基於深度影象的渲染 (DIBR) 演算法將原始幀和深度圖相結合,得到一個立體的影象對兒。然而,由於這個工作需要大量的人力成本,所以花費依然非常高。
  每一年有 20 左右部新的 3D 電影發行。高昂的製作成本是阻礙 3D 電影行業發展的主要障礙。自動的 2D-3D 轉換將會消除這一障礙。
  本文提出了一種全自動的,資料驅動的方法來解決 2D-3D 視訊轉換的問題。這個問題可以轉化為從單張圖片中推理出深度資訊,然後為另一隻眼睛合成一個新的視點。然而從一張圖片中推理出深度 (或差異) 是一個高度不確定的問題。除此之外,新視點中的一些畫素對應於原圖片中不可見的位置,導致資料缺失,必須用填充演算法補全,即使補全的部分是演算法虛構的。
  儘管存在上述困難,我們認為有了 3D 電影中已經存在的大量立體幀對兒,就有可能訓練出從給定視點得到新視點的機器學習模型。最終,我們設計了一個深度神經網路將左眼的視點作為輸入,內部估計出一個可能的差異圖,然後為右眼渲染出一個新的影象。我們在 ground truth 立體幀對兒上進行端到端的訓練,目的是直接從一個視點預測出另一個視點。網路內部生成的差異圖只是為生成一個好的右眼視點服務的。我們發現相比於用探索法得到差異圖,即訓練一個預測差異的模型,再用預測出的差異渲染新圖,我們的方法訓練起來更容易。我們的模型同樣隱形地執行填充而不需要後處理。
  如何評估得到的 3D 場景的質量也是一個有價值的問題。定量評估方面,我們使用 3D 電影的資料集,在畫素尺度上比較重建出的右視點和 ground truth 右視點。我們也進行了人類主觀實驗以展示我們的方案的有效性。我們將我們的方法與 ground truth 和 最好的單視點深度估計技術進行對比。定量和定性的分析都展現出了我們的方法的優勢。

2 相關工作

  現有的 2D-3D 轉換方法大致可以分為兩個階段。首先從一個輸入視點估計出深度圖,在用 DIBR 演算法結合深度圖和輸入視點,得到立體對兒的另一個視點。從單張圖片中估計深度的早期嘗試利用手工設計的特徵和線索包括離焦、散射和質地梯度。這些方法只依賴於一種線索。所以它們只在表現出特定線索的場景中表現優秀。然而實際上,人類是通過無縫地結合多種資訊來感知深度的。
  最近的研究轉移到了基於學習的方法上來。這些方法將單視點 2D 圖片和它們的深度圖作為監督,試圖學習一個從 2D 圖片到深度圖的對映。基於學習的方法結合了多種線索並且有著更好的泛化能力,例如最近的工作就使用深度卷積神經網路達到了這個問題的 state-of-the-art。然而,採集高質量的影象-深度對兒是非常困難、昂貴並且受限於感測器。所以,現有的深度資料集基本上都由少量的靜態室內場景和更少的戶外場景組成。資料集數量和多樣性的匱乏限制了基於學習的方法的泛化能力。此外,這些方法得到的深度圖只是一箇中間產物,還需要一個額外的 DIBR 步驟來生成最終效果。
  單眼深度預測是非常有難度的,然而我們認為精確無誤地預測深度並不必要。順應端到端訓練的趨勢,我們提出了一種利用立體對兒來訓練,直接學習從左視點預測出右視點。在我們的方法中,DIBR 是根據一個內部的差異概率分佈圖來執行的,當演算法學習到類似差異圖的東西,系統允許它被用於預測新視點。這一靈活處理使得演算法能夠自然地處理影象修復。不像 2D圖片/深度圖 對兒,我們的方法有大量的訓練資料,因為 2008 年以來每年有大概 10 到 20 部 3D 電影發行,每部電影中都有成千上萬幀。
  我們的模型受 Flynn 等人的 DeepStereo 啟發,他們提出了概率選擇層來進行渲染處理,使得渲染過程可以和 DCNN 一起訓練。具體地說,我們使用了相同的概率選擇層,但是以兩種顯著的方式改進了他們的方法。首選,他們的方法需要兩個或更多校準的視點來合成一個新視點,所以不能用現成的 3D 電影訓練。我們通過重構網路的輸入和佈局解除了這一限制。第二,他們的方法使用 28 乘 28 的小塊,把網路的感受野限制在了局部結構。而我們的方法處理整張圖片,有大的感受野,這對利用高層級的提取規律是非常必要的,就像大的人像很可能離相機更近,小的較遠。

3 方法

  現有的 2D-3D 轉換通常包括兩個階段:從左視點估算一個精確的深度圖在用基於深度影象的渲染演算法 (DIBR) 渲染出右視點。與之不同,我們提出利用畫素尺度的損失直接生成右視點。然而簡單地利用這一方法得到的結果很差,因為它沒有捕捉到任務的本質。受先前研究的啟發,我們利用 DIBR 處理保證了大多數輸出畫素是輸入畫素的複製偏移。與此前研究不同的是,我們不強迫系統生成精確的深度圖,也不將深度圖作為訓練的監督。我們提出的模型預測一個概率分佈形式的類差異圖作為中間輸出,然後用可微選擇層作為 DIBR 處理的模型,將類差異圖與輸入視點結合。在訓練過程中,模型生成的類差異圖不會被與正確的差異圖直接比較,它只被用來作兩個用途:表示水平差異和執行影象修補。可微選擇層使得我們的模型可以被端到端地訓練。

3.1 模型結構

  最近的研究表明整合低層級的特徵對畫素級的預測任務很有幫助,包括語義分割,深度估計和光流估計。注意到我們的人任務與深度估計間的相似性,就很自然地考慮到這個想法。我們的網路,如圖 2 所示,在每一個池化層之後又一個分支,在這個分支上我們用“反捲積”層上取樣輸入的特徵圖 (也就是一個學習到的上取樣過濾器)。每一級上取樣得到的特徵圖相加到一起,得到一個與輸入影象尺寸一致的特徵表示。我們對這個特徵表示再進行一次卷積,然後再在每個空間位置的通道上進行一次 softmax 變換。softmax 層的輸出可以理解為一個概率分佈形式的差異圖。最後,我們將這個差異圖和左視點輸入到選擇層,得到右視點。

圖 2
圖 2:Deep3D 模型結構。我們的模型結合多層級的資訊,並通過端到端訓練從左視點生成右視點。主網路預測出一個差異的概率分佈輸入到選擇層。選擇層是一個以可微的方式實現基於深度影象渲染 (DIBR) 的模型,使得填充可以在網路內部進行。

反捲積雙線性插值
  我們採用反捲積層來上取樣低層級特徵圖。反捲積層是將卷積層的前向和後向計算顛倒過來。儘管從技術上講仍然是進行卷積,但我們按照慣例稱之為反捲積。
  我們發現將反捲積層初始化成雙線性插值可以使訓練更容易。具體地講,當上取樣係數為 S 時,反捲積層的核為 2S 乘 2S,步長為 S,padding 為 S/2。核權重 ww 初始化為

(1)C=2S1(Smod2)2S C = \frac{2S-1-(S\ mod\ 2)}{2S}\tag{1}

(2)wij=(1iSC)(1jSC) w_{ij}=(1-|\frac{i}{S-C}|)(1-|\frac{j}{S-C}|)\tag{2}

3.2 利用選擇層重構

  選擇層模型化了傳統 2D-3D 轉換中的 DIBR 操作。在傳統的 2D-3D 轉換中,給定了左視點 II 和 深度圖 ZZ,則差異圖 DD

(3)D=B(Zf)Z D = \frac{B(Z-f)}{Z}\tag{3}

  其中基線 BB 是兩個攝像機之間的距離,ZZ 是輸入深度,ff 是從攝像機到焦點平面的距離,如圖 3 所示。右視點由如下公式得到

(4)Oi,j+Dij=Ii,j. O_{i,j+D_{ij}}=I_{i,j}.\tag{4}

圖 3
圖 3:深度到差異的轉換。左圖中物體遠於虛擬螢幕平面,右圖中物體近於虛擬螢幕平面。給定兩眼間距離 B 和眼睛距焦點平面距離 f,我們可以根據公式 (3) 從深度計算出差異。當物體比焦點平面近時差異值為負,反之為正。

  然而由於損失關於 DD 是不可微的,所以我們不能將這步操作和深度神經網路一起訓練。為解決這一問題,我們的網路在每一個畫素點預測一個不同差異值 dd 上的概率分佈 Di,jdD_{i,j}^{d},在所有畫素點上 dDi,jd=1\sum_dD_{i,j}^{d}=1。我們定義了一個左視點的偏移 Ii,jd=Ii,jdI_{i,j}^{d} = I_{i,j-d},這樣選擇層就可以重建右視點了:

(5)Oi,j=dIi,jdDi,jd O_{i,j}=\sum_{d}I_{i,j}^{d}D_{i,j}^{d}\tag{5}

  這樣損失就關於 Ddi,jD_{d}^{i,j} 可微了,所以我們計算輸出和 ground truth 右視點的 L1 損失作為訓練目標:

(6)L=OY L = |O-Y|\tag{6}

  我們使用 L1 損失是因為最近的研究表明在畫素級的預測任務上,L1 損失要優於 L2 損失。

3.3 放大至全解析度

  現代電影的解析度一般最低為 1080p,每幀有 1920 乘 1080 個畫素。在我們的實驗中,我們把輸入幀按比例縮小到 432 乘 180,縮短計算時間。所以生成的右視點也只有 432 乘 180 的解析度,這個解析度對於電影來說是不可接受的。
  為了解決這一問題,我們首先注意到差異圖中的高頻內容通常比原始圖片中少很多。因此我們可以按比例擴大預測出的差異圖,然後將它和原始的高解析度左視點結合,來生成一個全解析度的右視點。這種方式渲染的右視點比簡單地 4 倍上取樣得到的影象質量更好。

4 資料集

  因為 Deep3D 可以直接用立體對兒訓練無需 ground truth 深度圖作為監督,我們具有可以利用大量現成的立體視訊的優勢,而不用 KITTI 和 NYU Depth 等傳統的場景深度資料集。我們收集了 27 部近年發行的非動畫 3D 電影,隨機地選出 18 部用來訓練,9 部用來測試。我們的資料集包含大概 5 百萬幀,而 KITTI 和 NYU Depth 僅提供了幾百幀。在訓練時,每個輸入的左幀都被縮小到 432 乘 180 畫素,再隨機裁剪出 384 乘 160 畫素。目標右幀也做同樣的變換。我們不使用水平翻轉。

5 實驗

  在我們的主實驗中,我們每次輸入單幀不採用時間資訊。這使得我們的演算法可以和單幀的基線演算法公平地對比,同時可以應用到靜態照片上而不只是適用於視訊。然而,一個很自然的假設是動作提供了重要的深度線索,因此,我們也進行了額外的實驗,使用連續的 RGB 幀和計算出的光流作為輸入。在 5.4 節中討論了相關結果。

5.1 實施細節

  定量評估中我們使用沒有上取樣的輸出,尺度為 384 乘 160 畫素。定性和人類主觀評估中我們用 3.3 節中的方法按 4 倍上取樣輸出。我們的網路基於 VGG16,一個在 ImageNet 上訓練的龐大的卷積神經網路。我們用 VGG16 的權重初始化主幹卷積層 (圖 2 中綠色層),用標準差 0.01 的正態分佈初始化其他權重。
  為了整合低層級特徵的資訊,我們在每個池化層後面設計了一個分支,進行批量歸一化加上 3 乘 3 的卷積層,再然後是初始化成雙線性上取樣的反捲積層。反捲積層的輸出與最終預測的右視點的尺寸相同。我們使用批量歸一化連線預訓練的 VGG16 層和隨機初始化的層,因為這可以解決 VGG16 大而不統一的啟用量級導致的數值不穩定問題。
  在上面的 VGG16 卷積層後有兩個隨機初始化的有 4096 箇中間單元的全連線層 (圖 2 中藍色的部分),全連線層後面還有一個線性層。線性層的輸出被 reshape 成 33 個通道,每個通道是 12 乘 5 的特徵圖,然後輸入到反捲積層。我們把所有上取樣得到的特徵圖相加,再做一個卷積得到最終的特徵表示,輸入到選擇層。選擇層將這個表示理解為 33 個通道上的概率分佈,33 個通道分佈代表空或從 -15 到 16 的不同差異值。
  在所有的實驗中,我們使用 64 的小批量尺寸訓練,一共迭代 100000 次。初始的學習率為 0.002,每 20000 次迭代後減小 10 倍。不使用權重下降。0.5 的 dropout 僅在全連線層後使用。訓練在一塊英偉達 Titan X GPU 上耗時兩天。一旦訓練完成,Deep3D 可以以 100fps 的幀率生成右視點。我們的實現是基於 MXNet 的: GitHub 下載連結

5.2 演算法比較

我們與三個基準演算法做了比較:

  1. 全域性差異:根據全域性差異 δ 由左視點計算出右視點,即最小化驗證集上的平均絕對誤差 (MAE)。
  2. Eigen 等人的基於 DNN 的單張圖片深度估計演算法,再加上 3.2 節中提到的 DIBR 方法。
  3. Ground-truth 立體對兒。我們僅在人類主觀評價中使用 ground-truth,因為它在定量評估中的差異恆為零。

  據我們所知,Deep3D 是第一個能用立體對兒直接訓練的演算法,之前的所有方法都需要依靠 ground-truth 深度圖來訓練。因此,我們不能使用我們的 3D 電影資料集來訓練用以比較的演算法,但是可以測試。我們把 Eigen 等人釋出的模型在我們的測試集上進行評估。這種評估方式是基於一個延伸假設:在 NYU Depth 資料集上訓練的模型可以很好地泛化到 3D 電影上。這也顯現出了我們的方法的一個主要優勢:通過直接用立體對兒訓練,我們有多得多的訓練資料。
  因為 Eigen 等的方法預測的是深度而不是差異,我們需要用公式 (3) 將深度轉化為差異以便進行 DIBR。然而,Eigen 等也不預測攝像機到聚焦平面的距離 ffff 是一個未知量並且由於攝影時的變焦,在不同幀上可能是不同的。瞳距 BB 同樣是未知的,但是固定不變。BBff 的值可以用以下兩種方式確定:

  1. 最優化驗證集上的 MAE,然後在全部測試集上使用固定的 BBff,這種方式對應 Eigen 等人的演算法的效能下限。
  2. 固定 BB,但為每一個測試幀選擇使得 MAE 最小的 ff,也就是選擇了焦點距離的最佳 (Oracle) 平面,因此這種方式對應著 Eigen 的演算法的上限。

  我們採用這兩種方式作為兩個不同的基準—— Eigen 和 Eigen + Oracle。公平起見,我們也對 Deep3D 的預測做同樣的優化,得到兩種方式下的效能—— Deep3D 和 Deep3D + Oracle。

5.3 結果

表 1:Deep3D 評估。我們比較了每個方法在畫素級的重建誤差,以平均絕對誤差 (MAE) 作為衡量標準。

方法 MAE
全域性差異 7.75
Eigen 7.75
Deep3D 6.87
Eigen + Oracle 6.31
Deep3D + Oracle 5.47

定量評估 我們按如下公式計算平均絕對誤差 (MAE):
(7)MAE=1HWyg(x) MAE=\frac{1}{HW}|y-g(x)|\tag{7}
其中 xx 是左視點,yy 是右視點,g()g(\ ) 是模型,HHWW 分別是影象的高和寬。結果見表 1,可以發現 Deep3D 在有無 Oracle 距離的兩種情況下都優於基準。

表 2:人類主觀評估。表中的數字表示人們主觀上認為相應行中的方法優於對應列中的方法頻率。可見 66% 的人相較於 Eigen + Oracle 更喜歡 Deep3D,24% 的人相較於 ground truth 更喜歡 Deep3D。

方法 全域性差異 Eigen + Oracle Deep3D Ground Truth
全域性差異 N/A 26.94% 25.42% 7.88%
Eigen + Oracle 73.06% N/A 33.92% 10.27%
Deep3D 74.58% 66.08% N/A 24.48%
Ground Truth 92.12% 89.73% 75.52% N/A

圖 4
圖 4:人類主觀研究介面。每個受試者被展示 50 對兒 3D 立體電影圖片。每對兒圖片是由兩個隨機選擇的方法產生的相同場景。受試者被要求帶上紅-藍 3D 眼睛,選擇出 3D 效果更好的圖片或者“不確定”。研究結果見表 2。

定性分析 為了更好地理解提出的方法,我們在圖 5 中展示了定性分析的結果。每一張 Deep3D 預測出的立體影象對應 12 個內部軟差異分佈,按從近 (-3) 到遠 (+8) 排序。可以發現 Deep3D 可以從包括尺寸,輪廓和幾何結構等多種線索中推斷出深度。
  在圖 6 中,我們也比較了 Deep3D 的內部差異圖 (第三列) 和 Eigen 等預測的深度圖 (第二列)。這張圖說明了 Deep3D 在描繪出人的輪廓和搞清楚他們到相機的距離上表現得更好。
圖 5
圖 5:定性分析。第一列是預測出的立體影象 (最好用 3D 眼睛觀看)。每一個立體影象對應著從 -3 到 +8 (從近到遠) 共 12 個不同差異值的熱圖。在第一張圖中,離相機更近的男人出現在前三個通道中,遠一些的女人出現在第四和第五個通道中,背景則出現在最後四個通道中。在第二張圖中,背對相機的人比他的四個敵人離相機更近。在第三張圖中,窗戶框出現在前三個通道中,而窗外遠方的景色逐步出現在後續的通道中。
圖 6
圖 6:Eigen 等的演算法與 Deep3D 的對比。第一列是輸入影象,第二列和第三列分別是 Eigen 等人和 Deep3D 的預測。這表明 Deep3D 能更好地描繪出人的輪廓並弄清他們到相機的距離。

人類主觀評估 我們也進行了人類主觀研究來評估不同演算法的預測的視覺效果。實驗比較了四個演算法:全域性差異,Eigen + Oracle,無需 Oracle 的 Deep3D,和 ground-truth。
  我們從測試集中隨機選取了 500 幀,展示給受試者一系列對比圖,每組對比是兩個演算法從同一個 2D 幀重建出的 3D 立體圖。受試者需要戴上紅-藍 3D 眼鏡選出 3D 效果更好的那張圖或者選擇“不確定”。圖 4 展示了這項研究的介面。我們邀請了 60 個受試者,每個受試者做 50 組比較,最終收集了全部 C42500C^2_4500 個判斷結果。
  表 2 中體現了 Deep3D 超出全域性差異 49 個百分點,超出 Eigen + Oracle 32 個百分點。當與 ground truth 比較時,24.48%的人更喜歡 Deep3D,而 Eigen + Oracle 只有 10.27%,全域性差異只有 7.88%。

5.4 演算法分析

移除分析 為了更好地理解演算法各個模組的貢獻,我們在表 3 中展示了移除了部分元件的 Deep3D 的效能。在第一行,我們展示了移除了低層級卷積層的 Deep3D 的表現。這個網路只有前饋路徑,包含 5 個卷積層和池化層模組以及 2 個全連線層。我們發現閹割版的效能相比於完全體的方法有了明顯下降。

表 3:移除分析。我們通過從模型中移除 Deep3D 的不同元件來更好地理解它們的貢獻。可以看到移除低層級特徵和選擇層都會帶來效能的下降。
表 3

  在第二行,我們用塊匹配演算法生成的差異圖進行訓練,而不直接用立體對兒。預測出的差異圖再通過 DIBR 渲染出右視點。這個方法帶來了效能下降,說明了 Deep3D 端到端訓練的有效性。
  我們也嘗試了直接回歸得到新視點,移除內部的差異表示和選擇層。實驗表明這同樣帶來了效能下降,說明了將 DIBR 模型化的作用。
時間資訊 在我們的大部分實驗和評估中,我們只使用了靜止的 RGB 圖片作為輸入。我們這樣做是為了更公平的比較和更廣泛的應用領域。事實上 Deep3D 可以以兩種方式結合時間資訊:將多個連續的 RGB 幀作為網路的輸入,或者通過光流幀提供時間資訊。
  我們簡單地探索了這兩種方式,發現在畫素級衡量標準上,效能有一定的提升。我們相信在這個方向上做更多的工作能夠帶來更大的效能提升,例如模型結構調整,超引數調整和對時間的建模,只不過僅能應用於視訊。

6 結論

  在本文中我們提出了基於深度卷積神經網路的全自動的 2D-3D 轉換演算法。我們的方法在立體圖片對兒上進行端到端的訓練,因此能夠利用比傳統 2D 轉 3D 學習方法多幾個量級的資料。定量分析方面,我們的方法優於基準演算法。在人類主觀研究上,受試者也更喜歡我們的方法生成的立體圖。當與 ground truth 對比時,我們的演算法比基準演算法更有可能迷惑受試者。
  我們在實驗和評估中僅僅使用了靜態圖片作為輸入,而忽略了視訊中的時間相干性。這樣做的好處是訓練得到的模型既可以應用於視訊又可以應用於圖片。然而,在做視訊轉換時,利用時間資訊很可能可以提高效能。我們簡要地實踐了這一想法,但是發現在定性的效能提升上收益甚微。我們推測這可能是因為有效地結合時間資訊沒有這麼簡單。我們相信這是未來的一個有趣的研究方向。