隨著時代的進步以及近期疫情流行,逐漸出現虛擬背景攝影的需求。儘管現代有圖片編輯技術,也有許多視訊會議軟體或服務提供虛擬背景服務,但實際上品質優良、具即時性,且可以單獨在本機運行的去背軟體相當少。
優良、可用的即時去背技術大多都在 JS API 等網頁開發資源,並且未必開源,常規程式語言的現有資源則較少。對於虛擬背景攝影而言,攝影師能在按下快門前就看到去背後的預覽畫面,是一項重要的需求。因此,即時去背技術的重點在於,保證品質的同時有夠高的即時性,可以跟原畫面同步呈現去背後畫面。
虛擬背景攝影需要能在本地運行的去背軟體,研究也以此為重心。本研究嘗試使用網路上現有的複數語義分割模型,通過互相彌補各自在去背功能上的不足,實作兼具品質、效能的即時去背功能。
語義分割
DeepLabV3
Google 研究團隊於2017年發表相關論文,在準度上略勝獲得 "ImageNet Scene Parsing Challenge 2016" 第一名的 PSPNet。在 PyTorch 提供的 implementation 中,PyTorch Team 基於3種 backbone (ResNet-50, ResNet-101, MobileNetV3 Large),分別訓練出了3種模型,並經由 Torch Hub 以供利用,並撰寫了範例程式碼。而其中,基於 MobileNetV3 Large 的模型,在 RTX3080Ti 上可達到30FPS。
物件偵測
YOLOv5
尚未有相關論文釋出,但其為開發中的新版 YOLO 模型,目前大致上仍和有發表過論文的 YOLOv4不相上下,但速度方面有些微的優勢。基於可能造成混淆的疑慮,在此處不放上 YOLOv4 論文中的預測結果圖片。
實際上 YOLOv5 也有由 Ultralytics 直接提供給 PyTorch,因此同樣可藉 Torch Hub 等進行存取、使用,但本研究在開發時並未注意到這點,而是利用原專案的程式及模型。
實例分割
YOLACT
首個可實現即時實例分割的模型,也是至今為止少數可實現實例分割的模型之一。Backbone 採用 RetinaNet,由 ResNet 和 FPN 組成,官方釋出的訓練模型有基於不同 backbone 組合而得的不同模型,各模型間的速度和準度成反比。
Mask R-CNN
實例分割模型中,準度數一數二,可以當作理想標準參考的模型。其速度在 RTX3080Ti 上為 0.125FPS,實屬無法用於即時去背的緩慢,惟其準度具有相當的參考價值,在此特別提及。
總結來說,兩個系統在6公尺內都能有一定程度的準度保障,但前者會保留所有模型在像素缺失方面的缺點,並且3公尺以上準度就會開始不穩定,後者則沒有顯著缺點。也就是說,若要實作30FPS的人像去背,目前是實例分割略勝一籌。