視頻目標分割是目前視頻算法領域的前沿話題,越來越多的應用在了各個行業場景裡。本次由英特爾與阿里雲聯合舉辦、與優酷戰略合作的 “新內容 新交互 “全球視頻雲創新挑戰賽算法賽道,也將目光聚焦於這一個領域。大賽自開賽以來,已經吸引了 2000 多支隊伍參賽,匯聚了全球算法精英。
本文將以 “Media AI 阿里巴巴文娛算法挑戰賽” 為例,精選出由優酷人工智能部算法團隊提出的冠軍方案,為本屆大賽選手提供成功的參賽經驗和技術解讀。
除傳統分割算法需要解決的視角光照變化、目標尺度變化、目標間遮擋等難點之外,面向視頻智能生產的人物分割算法還需要關注如下特殊難點:
- 視頻場景內容豐富多樣:要求算法在複雜背景干擾下正確發掘場景顯著主角
- 複雜衣著 / 手持 / 附屬物:要求算法充分描述目標豐富和複雜的外觀語義
- 目標人物快速劇烈動作:要求算法解決運動模糊、劇烈形變帶來的誤分割、漏分割
Media AI 大賽的數據集面向高精度 - 實例級 - 視頻人物分割任務,提供了 1700 段逐幀精細標註視頻數據,其中初賽和複賽各 800 段訓練集和 50 段測試集,對上述難點都有體現。
相比於學術 / 工業界標準的 DAVIS 和 YouTube-VOS 數據集,本數據集含有業界最多人體目標標註標籤(18 萬幀,30 萬標註人體目標),且在標註精度、內容廣度等方面均處於行業領先地位。這次數據庫依託優酷站內海量資源,囊括古裝劇集、現代劇集、街拍、街舞、運動(跑酷、球類、健身)等豐富內容,更加符合智能化視頻內容生產的現實需求。經過精細化人工標註,數據集真值掩碼圖精準勾勒視頻人物的邊緣細節,為訓練以及測試分割算法的準確性和精確性提供了依據。
此外,該數據集還針對人物手持物 / 附屬物進行了標註,有助於算法對人物與物品從屬關係進行學習。
冠軍方案算法詳解
在初賽階段,優酷人工智能部算法團隊以 STM(Video Object Segmentation using Space-Time Memory Networks)為基礎,進行了徹底的模型復現和以及算法改進。在複賽階段,以初賽半監督模型為骨幹,配合以目標檢測、顯著性判別、關鍵幀選擇等模塊,實現高精度無監督視頻分割鏈路。
- 監督視頻人物分割
半監督 VOS 的任務目標是在給定第一幀物體掩碼的前提下,將該物體在後續幀中連續分割出來。
- 1 基本框架
- 提出 Spatial Constrained Memory Reader 以解決 STM 空間連續性不足問題
首先 STM 在像素匹配時是基於外觀的匹配,沒有考慮物體在相鄰兩幀之間空間上的連續性。換言之,STM 會尋找與前面幀中外觀相似的物體,但對該物體出現在何位置不敏感。因此,當一幀中出現多個外觀相似物體時,STM 的分割結果就有可能產生錯誤。
針對這個問題,DAVIS2020 半監督第一名方案的解決方法是將前一幀的物體 mask 結合到 encode 之後的 feature 中,降低離前一幀物體位置較遠像素的權重(如圖 1 所示)。實際嘗試後發現增益不大。我們認為原因在於訓練過程中給與模型過強的位置先驗,導致模型分割過分依賴於前一幀的物體位置信息,約束了 non-local 的長距離匹配能力。一旦出現前一幀物體被遮擋,或者前一幀物體分割錯誤的情況,整段視頻的分割結果將出現不穩定性偏移。
圖 1. Spatial-contrained STM
DAVIS2020 半監督第三名方案對此的解決方案是 kernelized memory reader(如圖 2 所示),這種方法能保證 memory 中的點會匹配到 query 中最相似的一個區域,可以避免出現一對多匹配的問題。但是不能保證空間上的連續,容易出現不可逆的誤差累積。
圖 2. Kernelized-memory STM
綜合考慮上述兩種方法,我們提出了一種既能考慮前一幀物體位置信息,又不影響原始匹配訓練過程的方法。如圖 3 所示,利用前一幀的物體 mask 生成位置大小相關的高斯核,通過這個高斯核來修正 memory 中像素的最優匹配位置。之後流程和圖 2 相似,利用每個像素的最優匹配位置對原始匹配進行修正。如此一來,既沒有影響訓練過程,導致 non-local 部分匹配能力降低,又引入了 spatial prior,保證了物體 mask 的空間連續性。
圖 3.Spatial-contrained Mmeory Reader 示意圖
- 增加 ASPP & HRNet post-refinement 以解決 STM 解碼器對多尺度目標分割精細度較差問題
通過 ASPP 增加多尺度信息的捕獲能力,利用 HRnet 對 STM 的初始分割結果進行 refine,優化物體細節的分割效果。
- 2 訓練策略
在比賽中採用了兩階段訓練的方法。第一個階段,採用 MS-COCO 靜態圖像庫成視頻序列進行預訓練。第二個階段,將公開數據庫(DAVIS,Youtube-vos)和比賽訓練集進行合併訓練,來保證有足夠的數據量。具體訓練細節如下:
- Crop 相鄰 3 幀圖像 patch 進行訓練,儘可能增加 augmentation。crop 時需要注意一定要保證在第 2 和第 3 幀出現的物體都在第一幀出現了,否則應該過濾;
- 將 DAVIS,Youtube-vos 和比賽訓練集以一定比例融合效果最好;
- 訓練過程指標波動較大,採用 poly 學習率策略可緩解;
- 訓練比較吃顯存,batch size 比較小的話要 fix 所有的 bn 層。
- 3 其他
- Backbone:更換 resnest101
- 測試策略:使用 Multi-scale/flip inference
- 4 結果
優酷算法團隊的模型,在測試集上取得了 95.5 的成績,相比原始 STM 提高將近 5 個點。
2. 無監督視頻人物分割
無監督 VOS 的任務目標是在不給定任何標註信息的前提下,自主發掘前景目標並進行連續的分割。無監督 VOS 方法鏈路較為複雜,通常不是由單一模型解決,其中涉及到目標檢測、數據關聯、語義分割、實例分割等模塊。
2.1 算法框架
我們複賽所採用的算法流程具體分為如下四步:
a. 逐幀做實例分割
採用 DetectoRS 作為檢測器,為保證泛化能力,沒有在比賽訓練集上 finetune 模型,而是直接使用在 MS COCO 數據集進行訓練。此階段只保留 person 類別。閾值設為 0.1,目的是儘可能多地保留 proposal。
b. 對實例分割的 mask 進行後處理
如下左圖所示,現有 instance segmentation 的方法產生的 mask 分辨率低,邊緣粗糙。我們採用語義分割模型對 DetectoRS 產生的結果進行 refine(image+mask ->HRnet -> refined mask), 結果如下圖。可以看出掩碼圖中的物體邊緣以及細節都有了明顯的改善。
圖 4. 檢測器(DetectoRS)輸出掩碼圖(上)與 refine 後掩碼圖(下)
c. 幀間進行數據關聯,得到初步結果
利用 STM 將 t-1 幀的 mask warp 到 t 幀,這樣就可以利用 warp 後的 mask 和第 t 幀的分割結果進行匹配。通過這個過程,補償了運動等問題產生的影響,穩定性更高。具體的,對於首幀物體,我們保留置信度大於 0.8 的 proposal。對第 t-1 幀和第 t 幀做數據關聯時,首先利用 STM 將第 t-1 幀的結果 warp 到第 t 幀。然後用匈牙利算法對 warp 後的 mask 和第 t 幀由 DetectRS 生成的 proposal 進行二部圖匹配。
d. 篩選分割結果較好的幀作為 key frames 進行迭代優化
經上述數據關聯以後,我們已經得到了初步的無監督 VOS 結果,其中每幀的 mask 是由 DetectRS 生成,id 是由數據關聯決定。但是這個結果存在很多問題,還可以進一步優化。比如說視頻開始處出現的漏檢無法被補上。如下圖所示,左側的人在視頻開始處不易被檢測,直到第 10 幀才被檢測出來。另外,視頻中人體交疊嚴重處分割質量要遠低於人體距離較大處。
因此,我們可以根據物體數量,bbox 的交疊程度等信息篩選出一些可能分割較好的幀作為下一輪優化的 reference。具體的,我們可以利用篩選出來的 key frames 作為初始 memory,用 STM 進行雙向預測。首先雙向預測可以解決視頻開始處的漏檢,其次 STM 對於遮擋等問題的處理也要好過單幀的實例分割。經實驗驗證,每迭代一次 STM 雙向預測,指標都有小幅度提升。
視頻目標(人物)分割(Video Object Segmentation,簡稱為 VOS)算法是業界公認的技術重點難點,同時又有著最為廣泛的落地場景和應用需求。相信參與本屆 “新內容 新交互 “全球視頻雲創新挑戰賽算法賽道的選手,將以視頻目標分割為起點,利用計算機視覺算法領域的諸多技術,為行業和大眾打造更加智能化、便捷化、趣味化的視頻服務。
「視頻雲技術」你最值得關注的音視頻技術公眾號,每週推送來自阿里雲一線的實踐技術文章,在這裡與音視頻領域一流工程師交流切磋。