論文翻譯:Real-Time High-Resolution Background Matting

xiongxyowo發表於2020-12-22

論文地址:https://arxiv.org/pdf/2012.07810.pdf

文中所有圖片與表格統一移動至了文末

實時高解析度背景摳圖

摘要

我們介紹了一種實時的、高解析度的背景替換技術。使用現代GPU,在4K解析度下,該技術的可以以30fps執行;在HD解析度下,該技術可以以60fps執行。我們的技術基於背景摳圖(Background Matting),即捕獲一幀額外的背景並用於恢復alpha matte和前景層。主要的挑戰是在實時處理高解析度影像的同時,計算出高質量的alpha matte,並保留髮絲級的細節。為了實現這一目標,我們採用了兩個神經網路;一個base網路計算出一個低解析度的結果,該結果由第二個網路在高解析度下對選擇性的修補進行完善。我們引入了兩個大規模的視訊和影像摳圖資料集:VideoMatte240K,PhotoMatte13K/85。我們的方法與之前背景摳圖的SOTA相比,產生了更高質量的結果,同時在速度和解析度上都有很大的提升。我們的程式碼和資料可以在https://grail.cs.washington.edu/ projects/background-matting-v2/上找到。

1.引言

背景替換是電影特效中的主力軍,現在也在Zoom、Google Meet和Microsoft Teams等視訊會議工具中得到了廣泛的應用。除了增加娛樂價值外,背景替換還可以增強隱私性,特別是在使用者可能不想向通話中的其他人分享其位置和環境的細節的情況下。這種視訊會議應用的一個關鍵挑戰是,使用者通常無法使用綠幕或其他物理道具,來做到像電影特效中的背景替換。

雖然現在很多工具都提供了背景替換功能,但它們在邊界處會產生偽像,特別是在有頭髮或眼鏡等細節的區域(圖1)。相比之下,傳統的影像摳圖方法[6,16,17,30,9,2,7]可以提供更高質量的結果,但其不能實時、高解析度地執行,而且經常需要使用者完成手動輸入。在本文中,我們介紹了第一個全自動、實時、高解析度的摳圖技術,在4K(3840×2160)30fps和HD(1920×1080)60fps下達到了SOTA。我們的方法依賴於捕獲一個額外的背景影像來計算alpha matte和前景層,這種方法被稱為背景摳圖。

設計一個能夠在高解析度的人物視訊上實現實時摳圖的神經網路是非常具有挑戰性的,特別是當髮絲等細節十分重要的時候;相比之下,之前的SOTA[28]在8fps的情況下只能達到512×512。在如此高解析度上訓練一個深度網路是極其緩慢和記憶體密集型的。此外,它還需要大量高質量的alpha matte影像來進行泛化;而公開資料集[33,25]過於有限。

由於很難收集大量高質量手工裁剪的alpha matte資料集,我們使用一系列資料集來訓練我們的網路,每個資料集都有不同的特點。為此,我們引入了VideoMatte240K和PhotoMatte13K/85,它們有高解析度的alpha matte;以及用chromakey提取的前景層。我們首先在這些較大的alpha matte資料集上訓練我們的網路,這些資料具有顯著的人類姿勢多樣性,以學習魯棒的先驗。然後,我們在公開的資料集[33,25]上進行訓練,這些資料集都是經過人工整理的,以學習精細的細節。

為了設計一個能夠實時處理高解析度影像的網路,我們注意到影像中只有相對較少的區域需要精細化處理。因此,我們引入了一個base網路,它可以在較低的解析度下預測alpha matte和前景層,以及一個預測誤差圖,它指定了可能需要高解析度精細化的區域。然後,使用一個refinement網路將低解析度的結果和原始影像結合在一起,只在選定區域生成高解析度的輸出。

我們在充滿挑戰的真實世界視訊和人物影像上實時做到了SOTA背景摳圖結果。我們會公佈VideoMatte240K,PhotoMatte85資料集以及我們的模型實現。

2.相關工作

背景替換可以通過分割(segmentation)或摳圖(matting)來實現。雖然二元分割速度快、效率高,但所產生的合成圖會產生令人反感的偽像。alpha matting可以產生視覺上令人愉悅的合成圖,但通常需要人工標註或已知的背景影像。在本節中,我們將討論用分割或摳圖進行背景替換的相關工作。

分割(Segmentation): 例項和語義分割方面的文獻浩如煙海,超出了本文的討論範圍,所以我們只回顧最相關的工作。Mask RCNN[11]仍然是例項分割的首選,而DeepLabV3+[5]是語義分割網路的SOTA。我們將DeepLabV3[4]和DeepLabV3+中的Atrous Spatial Pyramid Pooling(ASPP)模組納入我們的網路中。由於分割演算法往往會產生粗糙的邊界(尤其是在更高的解析度下),Kirillov等人提出了PointRend[15],它對邊緣附近的點進行取樣,並迭代完善分割。這在高影像解析度下產生高質量的分割,而記憶體和計算量卻大大降低。我們的方法通過學習精細區域選擇和改善接受野的卷積細化架構,將這一思想應用到了摳圖領域。在最近的工作中,人物分割與解析的具體應用也受到了相當的關注[34,19]。

基於三元圖的摳圖(Trimap-based matting): 傳統的(非學習型)摳圖演算法[6,16,17,30,9,2,7]需要用到
人工標註(一個三元圖),並求解三元圖"未知區域"中的alpha matte。Wang和Cohen[32]的調查中回顧了不同的摳圖技術。Xu等人[33]引入了一個摳圖資料集,並使用一個帶有三元圖輸入的深度網路來預測alpha matte。最近的許多方法都依賴於這個資料集來學習摳圖,例如,Context-Aware Matting[13]、Index Matting[21]、Sampling based matting[31]和基於opacity propagation based matting[18]。雖然這些方法的效能取決於標註的質量,但最近的一些方法考慮了粗糙[20]或存在錯誤人工標註[3]的情況下來預測alpha matte。

無外部輸入的摳圖(Matting without any external input): 最近的方法也關注在沒有任何外部輸入對人像進行摳圖。由於人像與人體全身影像相比,變化較小,因此,不使用三元圖的人像摳圖[36,29]是比較成功的應用之一。自然影像的軟分割也曾在[1]中進行過探索。最近的方法,如Late Fusion Matting[35]和HAttMatting[25],目標直接從影像中求解alpha matte,但這些方法往往不能通用,如[28]所示。

已知自然背景的摳圖(Matting with a known natural background): 曾在[24]、Bayesian matting[7]和Poisson matting[30,10]中進行過已知自然背景的摳圖的探索,這也需要一個三元圖。最近Sengupta等人[28]引入了背景摳圖(Background Matting,BGM),其捕獲了一個額外的背景影像,它提供了一個重要的線索來預測alpha matte和前景層。雖然這種方法展示了高質量的摳圖結果,但該架構僅限於512×512的解析度,並且只能以8fps的速度執行。相比之下,我們介紹了一種實時統一的摳圖架構,它可以在30fps的4K視訊和60fps的HD視訊上執行,併產生比BGM更高質量的結果。

3.資料集

由於要獲得大規模、高解析度、高質量的摳圖資料集是非常困難的,其中的alpha matte是由手工處理的,我們依靠多個資料集,包括我們自己的收藏和公開的資料集。

公開資料集: Adobe Image Matting(AIM)資料集[33]提供了269個人類訓練樣本和11個測試樣本,平均解析度約為1000×1000。我們還使用了Distinctions-646[25]的一個人類專用子集,包括362個訓練樣本和11個測試樣本,平均解析度約為1700×2000。這些摳圖是手工建立的,因此是高質量的。然而631張訓練影像不足以在高解析度下學習人類姿勢的巨大變化和更精細的細節,因此我們引入了2個額外的資料集。

VideoMatte240K: 我們收集了484個高解析度的綠幕視訊,並通過Adobe After Effects生成了總共240,709幀單獨的alpha matte和前景。這些視訊都是作為素材購買或在網上找到的免版稅素材。384個視訊為4K解析度,100個為HD解析度。我們將視訊按479 : 5分割,形成訓練集和驗證集。資料集由大量的人類主體、服裝和姿勢組成,對訓練魯棒模型很有幫助。我們將把提取的 alpha mattes和前景作為資料集對外公佈。據我們所知,到目前為止,我們的資料集比所有現有的公開的摳圖資料集都要大,它是第一個公開的視訊摳圖資料集,其中包含了連續的幀序列而不是靜止的影像,這可以在未來的研究中用來開發包含運動資訊的模型。

PhotoMatte13K/85: 我們獲得了13665張用攝影棚質量的燈光和攝像機在綠屏前拍攝的影像集合,以及通過chromakey演算法提取的摳圖,並進行手動調整與錯誤修復。我們將影像按13165 : 500分割,形成訓練和驗證集。這些摳圖包含的姿勢範圍很窄,但解析度很高,平均約為2000×2500,幷包含諸如單個髮絲的細節。我們將這個資料集稱為PhotoMatte13K。然而,隱私和許可問題使我們無法分享這套資料集;因此,我們還收集了另外一套85張質量類似的摳圖作為測試集,我們將其作為PhotoMatte85進行公佈。在圖2中,我們展示了VideoMatte240K和PhotoMatte13K/85資料集的例子。

我們從 Flickr 和 Google 中抓取 8861 張高解析度背景圖片,並按 8636 : 200 : 25 分割,用於構建訓練集、驗證集和測試集。我們將公佈測試集,其中所有圖片都有CC授權(詳見附錄)。

4.方法

給定一個影像I和捕捉到的背景 B B B,我們預測alpha matte α \alpha α和前景 F F F,這將使我們可以通過 I ′ = α F + ( 1 − α ) B ′ I^{\prime}=\alpha F+(1-\alpha) B^{\prime} I=αF+(1α)B在任何新的背景上合成,其中 B ′ B^{\prime} B是新的背景。我們不直接求解前景,而是求解前景殘差 F R = F − I F^{R}=F-I FR=FI,然後,可以通過將 F R F^{R} FR加入到輸入影像 I I I中,並進行適當的收縮: F = max ⁡ ( min ⁡ ( F R + I , 1 ) , 0 ) F=\max \left(\min \left(F^{R}+I, 1\right), 0\right) F=max(min(FR+I,1),0),來恢復 F F F。 我們發現這個公式提高了學習效果,並允許我們通過上取樣將低解析度的前景殘差應用到高解析度的輸入影像上,改善我們的架構,如後所述。

高解析度下的摳圖充滿挑戰,因為應用深度網路直接導致不切實際的計算和記憶體消耗。如圖4所示,人類的摳圖通常是非常稀疏的,其中大面積的畫素屬於背景( α = 0 \alpha = 0 α=0)或前景( α = 1 \alpha = 1 α=1),只有少數區域涉及更精細的細節,例如,頭髮、眼鏡和人的輪廓周圍。因此,我們沒有隻設計一個對高解析度影像進行操作的網路,而是引入了兩個網路,一個在較低解析度下操作,另一個在原始解析度下根據前一個網路的預測對選定的區域進行操作。

該架構由一個基礎網路 G b a s e G_{base} Gbase和一個細化網路 G r e f i n e G_{refine} Grefine組成。給定原始影像 I I I和捕獲的背景 B B B,我們首先對 I c I_c Ic B c B_c Bc進行係數為 c c c的下采樣。基礎網路 G b a s e G_{base} Gbase I c I_c Ic B c B_c Bc作為輸入,並預測粗粒度的alpha matte α c \alpha _c αc、前景殘差 F c R F_c^R FcR、誤差預測圖 E c E_c Ec和隱藏特徵 H c H_c Hc。然後,細化網路 G r e f i n e G_{refine} Grefine利用 H c H_c Hc I I I B B B,只在預測誤差 E c E_c Ec較大的區域對 α c \alpha _c αc F c R F_c^R FcR進行細化,並在原始解析度下產生 α \alpha α和前景殘差 F R F^R FR。我們的模型是完全卷積的,並且經過訓練可以在任意尺寸和長寬比上工作。

4.1.基礎網路

基礎網路(base network)是一個受DeepLabV3[4]和DeepLabV3+[5]架構啟發的全卷積編碼器-解碼器(encoder-decoder)網路,它們在2017年和2018年的語義分割任務上取得了SOTA。我們的基礎網路由三個模組組成:Backbone、ASPP和Decoder。

我們採用ResNet-50[12]作為編碼器主幹,這可以用ResNet-101和MobileNetV2[27]替代,以在速度和質量之間進行權衡。我們按照DeepLabV3的方法,在主幹後採用ASPP(Atrous Spatial Pyramid Pooling)模組。ASPP模組由多個膨脹卷積濾波器組成,不同的膨脹率有3,6和9。我們的解碼器網路在每一步都應用了雙線性上取樣,與來自主幹的跳連線並聯,然後是3×3卷積、Batch Normalization[14]和ReLU啟用[22] (最後一層除外)。解碼器網路輸出粗粒度的alpha matte α c \alpha _c αc、前景殘差 F c R F_c^R FcR、誤差預測圖 E c E_c Ec和一個32通道的隱藏特徵 H c H_c Hc。隱藏特徵 H c H_c Hc包含了對細化網路有用的全域性上下文。

4.2.細化網路

細化網路(refinement network)的目標是減少冗餘計算,恢復高解析度的摳圖細節。基礎網路對整個影像進行操作,而細化網路只對誤差預測圖 E c E_c Ec選擇的塊進行操作。我們執行兩階段的細化,首先是原始解析度的 1 2 \frac{1}{2} 21,然後再全解析度。在推理過程中,我們對 k k k個塊進行細化, k k k可以事先設定,也可以根據閾值設定,在質量和計算時間之間進行權衡。

給定原始解析度 1 c \frac{1}{c} c1的粗誤差預測圖 E c E_c Ec,我們首先將其重新取樣到原始解析度 E 4 E_4 E4 1 4 \frac{1}{4} 41,即圖上的每個畫素對應原始解析度上的一個4×4的塊。我們從 E 4 E_4 E4中選取預測誤差最大的 k k k個畫素來表示k個4×4塊的位置,這些位置將被我們的細化模組細化。原始解析度下的細化畫素總數為 16 k 16k 16k

我們執行一個兩階段的細化過程。首先,我們對粗輸出,即alpha matte α c \alpha _c αc、前景殘差 F c R F_c^R FcR和隱藏特徵 H c H_c Hc,以及輸入影像 I I I和背景 B B B進行雙線性重取樣,使其達到原始解析度的 1 2 \frac{1}{2} 21,並將其連成特徵。然後我們在從 E 4 E_4 E4中選取的錯誤位置周圍裁剪出8×8的塊,並分別通過兩層3×3卷積(帶valid padding)、Batch Normalization和ReLU,將塊的維度降低到4×4。然後將這些中間特徵再次上取樣到8×8,並與從原始解析度、輸入I和相應位置的背景 B B B中提取的8×8塊進行連通。然後,我們應用額外的兩層3×3卷積(帶valid padding),Batch Normalization和ReLU(除了最後一層),以獲得4×4的alpha matte和前景殘差結果。最後,我們將粗alpha matte α c \alpha _c αc和前景殘差 F c R F_c^R FcR上取樣到原始解析度,並換入各自已經細化的4×4塊,得到最終的alpha matteα和前景殘差 F R F^R FR,整個架構如圖3所示。具體實現方式見附錄。

4.3.訓練

所有的摳圖資料集都提供了一個alpha matte和一個前景層,我們將其合成到多個高解析度背景上。我們採用了多種資料增強技術,以避免過擬合,並幫助模型泛化到具有挑戰性的現實世界中。我們對前景層和背景層分別進行了非線性變換、水平翻轉、亮度、色調和飽和度調整、模糊、銳化和隨機噪聲等資料增強。我們還略微移動背景以模擬錯位,並建立人工陰影,以模擬主體如何在現實環境中投射陰影(詳見附錄)。我們隨機裁剪每個minibatch中的影像,使高度和寬度分別均勻分佈在1024和2048之間,以支援在任何解析度和縱橫比下進行推理。

為了學習 α \alpha α與ground-truth α ∗ {\alpha ^ * } α,我們在整個alpha matte與其(Sobel)梯度上使用L1損失: L α = ∥ α − α ∗ ∥ 1 + ∥ ∇ α − ∇ α ∗ ∥ 1 ( 1 ) \mathcal{L}_{\alpha}=\left\|\alpha-\alpha^{*}\right\|_{1}+\left\|\nabla \alpha-\nabla \alpha^{*}\right\|_{1} \quad (1) Lα=αα1+αα1(1) 我們從預測的前景殘差 F R F^R FR中獲得前景層,使用 F = max ⁡ ( min ⁡ ( F R + I , 1 ) , 0 ) F=\max \left(\min \left(F^{R}+I, 1\right), 0\right) F=max(min(FR+I,1),0)。我們只對 α ∗ > 0 {\alpha ^ * >0} α>0的畫素計算L1損失: L F = ∥ ( α ∗ > 0 ) ∗ ( F − F ∗ ) ) ∥ 1 ( 2 ) \left.\mathcal{L}_{F}=\|\left(\alpha^{*}>0\right) *\left(F-F^{*}\right)\right) \|_{1} \quad (2) LF=(α>0)(FF))1(2) 其中, α ∗ > 0 {\alpha ^ * >0} α>0是布林表示式。

對於細化區域的選擇,我們將ground truth誤差圖定義為 E ∗ = ∣ α − α ∗ ∣ E^{*}=\left|\alpha-\alpha^{*}\right| E=αα。然後我們計算預測誤差圖和ground truth誤差圖之間的均方誤差作為損失: L E = ∥ E − E ∗ ∥ 2 ( 3 ) \mathcal{L}_{E}=\left\|E-E^{*}\right\|_{2} \quad (3) LE=EE2(3) 這種損失鼓勵預測誤差圖擁有更大的值,在預測 α \alpha α和ground truth α \alpha α之間的差異很大。在訓練過程中,隨著預測 α \alpha α的提高,ground truth誤差圖會也隨著迭代而變化。隨著時間的推移,誤差圖逐漸收斂,並預測複雜區域的高誤差,例如頭髮。如果簡單地進行上取樣,會導致糟糕的合成。

基礎網路 ( α c , F c R , E c , H c ) = G base  ( I c , B c ) \left(\alpha_{c}, F_{c}^{R}, E_{c}, H_{c}\right)=G_{\text {base }}\left(I_{c}, B_{c}\right) (αc,FcR,Ec,Hc)=Gbase (Ic,Bc)在原始影像解析度的 1 c \frac{1}{c} c1處工作,並用以下損失函式進行訓練: L base = L α c + L F c + L E c ( 4 ) \mathcal{L}_{\text{base}}=\mathcal{L}_{\alpha_{c}}+\mathcal{L}_{F_{c}}+\mathcal{L}_{E_{c}} \quad (4) Lbase=Lαc+LFc+LEc(4) 細化網路 ( α , F R ) = G refine  ( α c , F c R , E c , H c , I , B ) (\alpha ,{F^R}) = {G_{{\text{refine }}}}\left( {{\alpha _c},F_c^R,{E_c},{H_c},I,B} \right) (α,FR)=Grefine (αc,FcR,Ec,Hc,I,B)的訓練方法是: L refine  = L α + L F ( 5 ) \mathcal{L}_{\text {refine }}=\mathcal{L}_{\alpha}+\mathcal{L}_{F} \quad (5) Lrefine =Lα+LF(5) 我們在ImageNet和Pascal VOC資料集上初始化我們模型的主幹和ASPP模組,並使用DeepLabV3權重進行語義分割的預訓練。我們首先訓練基礎網路,直到收斂,然後新增細化模組並聯合訓練。在訓練過程全程,我們使用Adam優化器,並 c = 4 c = 4 c=4 k = 5000 k = 5000 k=5000。在只訓練基礎網路時,我們對主幹、ASPP和解碼器設定batch size為8,學習率分別為[1e-4,5e-4,5e-4]。當聯合訓練時,主幹、ASPP、解碼器和細化模組分別設定batch size為4,學習率為[5e-5、5e-5、1e-4、3e-4]。

我們按照以下順序在多個資料集上訓練我們的模型。首先,我們只在VideoMatte240K上訓練基礎網路Gbase,然後在VideoMatte240K上聯合訓練整個模型 G b a s e G_{base} Gbase G r e f i n e G_{refine} Grefine,這使得模型對各種主體和姿勢都很魯棒。接下來,我們在PhotoMatte13K上聯合訓練我們的模型,以提高高解析度的細節。最後,我們在Distinctions-646上聯合訓練我們的模型。該資料集只有362個獨一無二的訓練樣本,但它的質量是最高的,並且包含了人工標註的前景,這對提高我們模型產生的前景質量非常有幫助。我們省略了在AIM資料集上的訓練,作為可能的第四階段,其最終只用於測試;因為使用它會導致質量下降,正如我們在第6節的消融研究中所顯示的那樣。

5.實驗評估

我們將我們的方法與兩種基於三元圖的方法:深度影像摳圖(Deep Image Matting,DIM)[33]和FBA摳圖(FBA)[8],以及一種基於背景的方法:背景摳圖(Background Matting,BGM)[28]進行比較。DIM的輸入解析度被固定為320×320,而FBA的輸入解析度由於記憶體限制,我們將其設定為HD左右。我們另外在資料集上訓練BGM模型,並將其表示為BGMa(BGM改)。

我們的評估對照片採用 c = 4 c=4 c=4 k = 20000 k=20000 k=20000,對HD視訊採用 c = 4 c=4 c=4 k = 5000 k=5000 k=5000,對4K視訊採用 c = 8 c=8 c=8 k = 20000 k=20000 k=20000,其中 c c c是基礎網路的下采樣因子, k k k是得到細化的塊數量。

5.1.在合成資料集上的評估

我們通過將AIM、Distinctions和PhotoMatte85資料集的測試樣本分別合成到每個樣本的5張背景影像上,構建測試基準。我們應用輕微的背景錯位、顏色調整和噪聲來模擬有缺陷的背景捕捉。我們使用閾值和形態學操作從ground truth α \alpha α生成三元圖。我們使用[26]中的指標來評估摳圖輸出: α \alpha α和前景的MSE(均方誤差),SAD(絕對差之和),Grad(空間梯度度量),以及僅 α \alpha α的Conn(連通性)。所有的MSE值都是以103為尺度,所有的指標都只在未知區域的trimap上計算,如上所述。前景MSE僅在ground truth alpha α ∗ > 0 {\alpha ^ * >0} α>0的地方額外度量。

表1顯示,在所有資料集中,我們的方法都優於現有的基於背景的BGM方法。我們的方法比SOTA基於trimap的FBA方法稍差,但後者需要仔細標註手工trimap,比我們的方法慢得多,在後面的效能比較中可以看出。

5.2.在錄製視訊上的評估

雖然在上述資料集上的定量評估達到了量化不同演算法效能的目的,但評估這些方法在無約束的真實資料上的表現是很重要的。為了在真實資料上進行評估,我們採集了一些包含不同姿勢和周圍環境的主體的照片和視訊。這些視訊是在三腳架上用消費級智慧手機(三星S10+和iPhone X)與專業相機(索尼α7s II)拍攝的,解析度為HD和4K。照片的拍攝解析度為4000×6000。我們還使用了一些在BGM論文中公開的HD視訊,來與我們的方法進行比較。

為了在實時場景下進行公平的比較,在無法制作手工trimap的情況下,我們按照[28]的建議,通過DeepLabV3+的變形分割結果來構建trimap。我們展示了兩種trimap的結果,將使用這種全自動trimap的FBA記做為FBAauto

圖5顯示,與其他方法相比,我們的方法在頭髮和邊緣周圍產生了更清晰、更細緻的結果。由於我們的細化是在原生解析度下操作的,所以質量相對於BGM要好得多,因為BGM調整了影像的大小,只能在512×512的解析度下進行處理。FBA與手工trimap一起,在頭髮細節周圍產生了出色的結果,然而無法在標準GPU上評估高於HD左右的解析度。當FBA應用在用分割生成的自動trimap上時,經常會出現較大的偽像,主要是由於分割有問題。

我們從BGM論文分享的測試視訊和我們採集的視訊和照片中提取34幀來建立一個使用者研究。40名參與者被呈現在一個互動介面上,以隨機順序顯示每個輸入影像以及由BGM和我們的方法產生的摳圖。他們被鼓勵放大細節,並要求評價其中一個摳圖為 “好得多”,“稍好”,或 “類似”。結果,如表2所示,展示出相比BGM顯著的質的改進。59%的情況下參與者認為我們的演算法更好,而BGM只有23%。對於4K和更大的銳利樣本,我們的方法在75%的情況下比BGM的15%更受歡迎。

5.3.效能比較

表3和表4顯示,我們的方法比BGM更小、更快。與BGM相比,我們的方法只包含55.7%的引數。我們的方法可以在Nvidia RTX 2080 TI GPU上實現HD 60fps和4K 30fps(batch size為1),這對許多應用被認為是實時的。與只能以7.8fps處理512×512解析度的BGM相比,這是一個顯著的加速。如果換成MobileNetV2作為主幹,效能可以進一步提升,達到4K 45fps和HD 100fps。更多的效能結果,如調整細化選擇引數k和使用更大的batch size,都包含在消融研究和附錄中。

5.4.實際應用

Zoom實現: 我們構建了一個Zoom外掛,它可以攔截網路攝像頭的輸入,收集一個無人(背景)鏡頭,然後進行實時視訊摳圖和合成,將結果流回Zoom呼叫中。我們在Linux中使用720p網路攝像頭進行測試。該升級在實際會議中引起了好評,證明了其在實際環境中的實用性。

與綠幕的比較: 使用綠幕進行色度摳像是創造高質量摳圖的最常用方法。然而,它要求整個螢幕的光照均勻,背景和主體分離,以避免投射陰影。在圖6中,我們將我們的方法與在相同照明下使用業餘綠幕設定的色度摳像進行比較。我們發現,在光線不均勻的環境下,我們的方法優於為綠幕設計的方法。

6.消融研究

資料集的作用: 我們在多個資料集上進行訓練,每個資料集都帶來了獨特的特徵,幫助我們的網路在高解析度下產生高質量的結果。表5顯示了我們的方法在從訓練流水線中新增或刪除一個資料集下的指標。我們發現新增AIM資料集作為可能的第4階段會造成指標惡化,即使在使用AIM本身進行測試的情況下也會惡化。我們認為這是因為AIM資料集中的樣本與Distinctions相比,解析度和質量都較低,樣本數量少可能造成了過擬合。從訓練流水線中移除VideoMatte240K、PhotoMatte13K和Distinctions資料集都會導致更差的指標,證明這些資料集對提高模型的質量有幫助。

基礎網路的作用: 我們實驗用ResNet-101和MobileNetV2代替ResNet-50作為基礎網路中的編碼器主幹。表6中的指標顯示,ResNet-101在某些指標上比ResNet-50有輕微的改進,而在其他指標上表現較差。這說明ResNet-50通常足以獲得最佳質量。而MobileNetV2在所有指標上都比ResNet-50差,但如表3和表4所示,它比ResNet-50快得多,體積也小得多,而且仍能獲得比BGM更好的指標。

細化網路的作用: 我們的細化網路圖7中的粗結果中提高了細節清晰度,即使在4K解析度下也是有效的。圖8顯示了增加和減少細化區域的效果。只在影像解析度的5%到10%的範圍內進行細化,就可以實現大部分的改善。表7顯示,與細化整個影像相比,只細化選定的塊可以提供顯著的加速。

基於塊的細化與基於點的細化: 我們的細化模組使用3×3的卷積核棧,為每個輸出畫素建立一個13×13的接受野。另一種方法是隻使用1×1的卷積核對點進行細化,這將導致我們的方法產生2×2的接受野。表6顯示,3×3的核由於接受野較大,可以達到比基於點的核更好的指標。

侷限性: 我們的方法可以通過在每一幀的背景上應用同構對齊來用於手持輸入,但它被限制在小運動上。其他常見的限制如圖 9 所示。我們建議使用我們的方法時使用一個簡單的紋理背景,固定的曝光/焦距/白平衡設定和三腳架,以獲得最佳效果。

7.結論

我們提出了一種實時、高解析度的背景替換技術,它可以在4K 30fps和HD 60fps下執行。我們的方法只需要一個輸入影像和一個預先捕獲的背景影像,這在許多應用中很容易獲得。我們提出的架構在高解析度下只有效地細化容易出錯的區域,從而減少了冗餘計算,使實時高解析度摳圖成為可能。我們引入了兩個新的大規模摳圖資料集,幫助我們的方法推廣到現實生活中的場景。我們的實驗表明,我們的方法在背景摳圖上創造了新的SOTA。我們通過將我們的結果以流式傳輸到Zoom來證明我們方法的實用性,並實現了更真實的虛擬電話會議。

道德宣告: 我們的首要目標是通過視訊通話中的背景替換,實現創造性的應用,給使用者提供更多的隱私選擇。然而,我們意識到影像編輯也可能被用於負面目的,這可以通過水印和其他商業應用中的安全技術得到緩解。

附錄

A.綜述

我們在本附錄中提供了更多細節。在Sec.B中,我們描述了我們的網路架構和實現細節。在Sec.C中,我們闡明瞭我們使用哪些關鍵字來抓取背景影像。在Sec.D中,我們解釋了我們如何訓練我們的模型,並展示了我們資料增強的細節。在Sec.E中,我們展示了關於我們方法效能的額外指標。在Sec.F中,我們展示了我們使用者研究中使用的所有定性結果,以及每個樣本的平均得分。

B.網路

B.1.結構

主幹: ResNet和MobileNetV2都採用了原始的實現方式,但做了一些小的修改。我們改變了第一個卷積層,使輸入和背景影像都接受6個通道。我們遵循DeepLabV3的方法,將最後一個下采樣塊用膨脹卷積來維持16的輸出步長。為了簡單起見,我們不使用DeepLabV3中提出的多網格膨脹技術。

ASPP: 我們遵從DeepLabV3中提出的ASPP模組的原始實現。我們的實驗表明,將膨脹率設定為(3,6,9)會產生更好的結果。

解碼器: C B R 128 − C B R 64 − C B R 48 − C 37 CBR128 - CBR64 - CBR48 - C37 CBR128CBR64CBR48C37 "CBRk"表示 k k k個3×3卷積濾波器,具有相同的填充,無偏置,然後進行Batch Normalization和ReLU。"Ck "表示 k k k個具有相同填充和偏置的3×3卷積濾波器。在每一次卷積之前,解碼器使用規模因子為2的雙線性上取樣,並與主幹網進行相應跳連線。37個通道的輸出包括1個通道的 α c \alpha _c αc、3個通道的前景殘差 F c R F_c^R FcR、1個通道的誤差圖 E c E_c Ec和32個通道的隱藏特徵 H c H_c Hc。我們將 α c \alpha _c αc E c E_c Ec收縮到0至1,對 H c H_c Hc應用ReLU。

細化器: F i r s t   s t a g e :   C ∗ B R 24   −   C ∗ B R 16 First{\text{ }}stage:{\text{ }}C*BR24{\text{ }} - {\text{ }}C*BR16 First stage: CBR24  CBR16 S e c o n d   s t a g e :   C ∗ B R 12   −   C ∗ 4 Second{\text{ }}stage:{\text{ }}C*BR12{\text{ }} - {\text{ }}C*4 Second stage: CBR12  C4 "C ∗ * BRk "和 "C ∗ * k "遵循上述相同的定義,只是卷積不使用填充。

細化器首先將粗輸出 α c \alpha _c αc F c R F_c^R FcR H c H_c Hc和輸入影像 I I I B B B重新取樣為 1 2 \frac{1}{2} 21解析度,並將它們連成 [ n × 42 × h 2 × w 2 ] \left[n \times 42 \times \frac{h}{2} \times \frac{w}{2}\right] [n×42×2h×2w]特徵。根據誤差預測Ec,我們裁剪出前k個最容易出錯的塊 [ n k × 42 × 8 × 8 ] [n k \times 42 \times 8 \times 8] [nk×42×8×8]。應用第一階段後,塊維度變成 [ n k × 16 × 4 × 4 ] [n k \times 16 \times 4 \times 4] [nk×16×4×4]。我們用最近鄰上取樣法對塊進行上取樣,並與 I I I B B B中相應位置的塊進行連線,形成 [ n k × 22 × 8 × 8 ] [n k \times 22 \times 8 \times 8] [nk×22×8×8]特徵。經過第二階段,塊維度變成 [ n k × 4 × 4 × 4 ] [n k \times 4 \times 4 \times 4] [nk×4×4×4]。4個通道分別是 α \alpha α和前景殘差。最後,我們對粗 α c \alpha _c αc F c R F_c^R FcR進行雙線性上取樣,使其達到全解析度,並將細化後的塊替換到相應位置,形成最終的輸出 α \alpha α F R F^R FR

B.2.實現

我們在PyTorch[23]中實現了我們的網路。塊的提取和替換可以通過原生的向量化操作來實現,以獲得最大的效能。我們發現,PyTorch的最近鄰上取樣操作在小解析度塊上比雙線性上取樣快得多,所以我們在上取樣塊時使用它。

C.資料集

VideoMatte240K 該資料集包含484個視訊片段,共240709幀。每段視訊的平均幀數為497.3,中位數為458.5。最長的片段有1500幀,最短的片段有124幀。圖10顯示了VideoMatte240K資料集的更多例子。

背景: 我們用來爬取背景圖片的關鍵詞是:機場內部、閣樓、酒吧內部、浴室、海灘、城市、教堂內部、教室內部、空城、森林、車庫內部、健身房內部、房子戶外、內部、廚房、實驗室內部、景觀、演講廳、商場內部、夜總會內部、辦公室、雨林、屋頂、體育場內部、劇院內部、火車站、倉庫內部、工作場所內部。

D.訓練

表8記錄了我們最終模型在不同資料集上的訓練順序、epoch和小時數。我們在只訓練基礎網路時使用1張RTX 2080 TI,在聯合訓練網路時使用2張RTX 2080 TI。

此外,我們還使用混合精度訓練,以實現更快的計算速度和更少的記憶體消耗。當使用多個 GPU 時,我們會應用資料並行技術將 minibatch 分割到多個 GPU 上,並切換到使用 PyTorch 的同步Batch Normalization來跟蹤跨 GPU 的batch統計資料。

D.1.資料增強

對於每一個alpha和前景訓練樣本,我們以"zip"的方式旋轉與背景進行合成,形成一個epoch。例如,如果有60個訓練樣本和100張背景影像,那麼一個epoch就是100張影像,其中60個樣本首先與前60張背景影像配對,然後前40個樣本再與其餘40張背景影像配對。當一組影像用完後,旋轉就停止了。由於我們使用的資料集大小差別很大,所以用這種策略來概括一個epoch的概念。

我們對每個樣本的前景和背景分別應用隨機旋轉(±5deg)、縮放(0.3∼1)、平移(±10%)、剪下(±5deg)、亮度(0.85∼1.15)、對比度(0.85∼1.15)、飽和度(0.85∼1.15)、色調(±0.05)、高斯噪聲(σ2≤0.03)、盒狀模糊和銳化。然後我們使用 I = α F + ( 1 − α ) B I=\alpha F+(1-\alpha) B I=αF+(1α)B對輸入影像進行合成。

我們另外應用隨機旋轉(±1deg)、平移(±1%)、亮度(0.82~1.18)、對比度(0.82~1.18)、飽和度(0.82~1.18)和色調(±0.1),只在背景上應用30%次。這種輸入 I I I和背景 B B B之間的小錯位增加了模型在現實生活捕捉上的魯棒性。

我們還發現建立人工陰影可以提高模型的魯棒性,因為現實生活中的主體經常會在環境中投射陰影。在 I I I上建立陰影的方法是,按照被攝體的輪廓30%的範圍,將被攝體後面的一些影像區域變暗。合成影像的例子如圖11所示。最下面一行是陰影增強的例子。

D.2.測試增強

對於AIM和Distinctions,它們各有11個人類測試樣本,我們將每個樣本與背景測試集的5個隨機背景配對。對於有85個測試樣本的PhotoMatte85,我們只用1個背景對每個樣本進行配對。我們使用[26]中描述的方法和指標來評估55、55和85影像的結果集。

我們僅對背景 B B B應用隨機子畫素平移(±0.3畫素)、隨機伽瑪(0.85~1.15)和高斯噪聲( μ \mu μ=±0.02,0.08≤σ2≤0.15),以模擬錯位。

用作基於trimap的方法的輸入和定義誤差度量區域的trimap是通過在0.06和0.96之間對grouth truth alpha進行閾值化,然後使用3×3的圓核對其進行10次迭代的膨脹,再進行10次迭代的腐蝕得到的。

E.效能

表9顯示了我們的方法在兩個Nvidia RTX 2000系列GPU上的效能:旗艦級RTX 2080 TI和入門級RTX 2060 Super。入門級GPU產生的FPS較低,但對於許多實時應用來說,仍在可接受的範圍內。此外,表10顯示,切換到更大的batch size和更低的精度可以顯著提高FPS。

F.額外結果

在圖13、14、15中,我們展示了使用者研究中所有34個例子,以及他們的平均評分和不同方法的結果。圖12顯示了我們使用者研究的Web UI。

本文所有圖片與表格

圖1: 當前的視訊會議工具,如Zoom,可以採取輸入訊號(左)並替換背景,通常會引入偽像,如中間結果所示,頭髮和眼鏡的特寫中仍然有原始背景的殘留。利用一幀沒有主體的視訊(最左邊的插圖),我們的方法可以產生實時的、高解析度的背景摳圖,而沒有那些常見的偽像。右邊的圖片是我們的結果與相應的特寫,是我們Zoom外掛實現的截圖。
在這裡插入圖片描述
圖2: 我們引入了兩個大規模的摳圖資料集,包含240k單獨幀和13k單獨照片。
在這裡插入圖片描述
圖3: 基礎網路 G b a s e G_{base} Gbase(藍色)對下采樣輸入進行操作,以產生粗結果和誤差預測圖。細化網路 G r e f i n e G_{refine} Grefine(綠色)選擇容易出錯的塊,並將其細化至全解析度。
在這裡插入圖片描述
圖4: 我們只對易錯的區域(b)進行細化,其餘的直接上取樣以節省計算量。
在這裡插入圖片描述
圖5: 真實影像上的定性比較。我們以最小的使用者輸入在高解析度下產生了卓越的結果。雖然FBA具有競爭力,但在基於分割的有誤trimap的全自動應用中,它失效了。
在這裡插入圖片描述
圖6: 當使用業餘綠幕設定時,我們產生的效果比chroma-key軟體更好。
在這裡插入圖片描述
圖7: 細化的效果,從粗到HD和4K。
在這裡插入圖片描述
圖8: Distinctions測試集上的指標,影像細化區域的百分比。Grad和Conn的比例為10-3
在這裡插入圖片描述圖9: 失效案例。當被攝體在背景上投下大量陰影或與背景顏色相匹配時(上),以及當背景高度紋理化時(下),我們的方法就會失效。
在這裡插入圖片描述圖10: 來自VideoMatte240K資料集的更多例子。
在這裡插入圖片描述
圖11: 帶有增強的訓練樣本。底部一行是帶有陰影增強的樣本。實際樣本有不同的解析度和長寬比。
在這裡插入圖片描述
圖12: 我們使用者研究的web UI。使用者會看到原始影像和來自我們的和BGM方法的兩個結果影像。使用者得到的指令是給一種演算法打分,是 “好得多”、“稍好”,還是兩種演算法"相似"。
在這裡插入圖片描述
圖13: 其他定性比較(1/3)。包括我們和BGM之間的平均使用者評分。得分-10表示BGM “好得多”,-5表示BGM “稍好”,0表示"類似",+5表示我們 “稍好”,+10表示我們"好得多"。我們的方法平均得到3.1分。
在這裡插入圖片描述
圖14: 其他定性比較(2/3)。
在這裡插入圖片描述
圖15: 其他定性比較(3/3)。
在這裡插入圖片描述
表1: 對不同資料集的定量評估。†表示需要人工trimap的方法。
在這裡插入圖片描述
表2: 使用者研究結果:我們的研究結果與BGM的比較。
在這裡插入圖片描述
表3: 在 Nvidia RTX 2080 TI 上測得的速度,在 FP32 精度和batch size為1的情況下,PyTorch 模型通過時沒有資料傳輸。GMac 不考慮插值和裁剪操作。為了便於測量,BGM和FBAauto使用經過改編的PyTorch DeepLabV3+實現,以ResNet101為主幹進行分割。
在這裡插入圖片描述
表4: 模型大小比較。BGM和FBAauto使用DeepLabV3+與Xception主幹進行分割。
在這裡插入圖片描述
表5: 在訓練流水線中刪除或追加資料集的效果,在AIM測試集上評估。
在這裡插入圖片描述
表6: 在Distinctions測試集上的主幹和細化核心的比較。
在這裡插入圖片描述
表7: 不同 k k k值的效能。用我們的方法測量,ResNet-50主幹在HD下的效能。
在這裡插入圖片描述
表8: 不同資料集上的訓練時間和小時數。以ResNet-50為主幹測量。
在這裡插入圖片描述
表9: 不同GPU上的效能。以batch size為1和FP32精度測量。
在這裡插入圖片描述
表10: 使用不同batch size和精度的效能。在RTX 2080 TI上測量。
在這裡插入圖片描述

相關文章