一款神器自助幫你換背景,超強實時人像扣圖算法開源啦!



談到人像摳圖想必大家都不陌生。在影視剪輯、直播娛樂、線上教學、視頻會議等場景中都有人像分割的身影,它可以幫助用戶實時、精準地將人物和背景精準識別出來,實現更精細化的人物美顏、背景虛化替換、彈幕穿人等,進一步提升視覺應用體驗。



      


高精度的實時人像摳圖模型一直是學術和產業界研究的重點,爲此PaddleSeg團隊開源了多場景覆蓋的PP-HumanSeg人像系列模型:

  • PP-HumanSeg提供了3個高精度的人像分割模型:
    有應用於服務端GPU部署的PP-HumanSegl模型,有適用於移動端的輕量PP-HumanSegm模型,還有能夠在瀏覽器部署的超輕量模型PP-HumanSegs模型。
  • 提供了完善的服務端、移動端、Web端部署文檔,尤其是Web端提供了產業級的實時人像分割解決方案。



近期“百度視頻會議”也上線虛擬背景功能,支持用戶在視頻會議時進行人像背景切換。這個功能正是基於PP-HumanSeg提供的超輕量的PP-HumanSegs來實現。通過 Padddle.js實現了在Web端部署,直接利用瀏覽器的算力進行實時人像摳圖,效果受到一致好評!



模型性能如此之好,是不是迫不及待地想知道如何實現的?



01

大規模數據合成和數據增強



在訓練集裏有各種比例的圖片,有橫屏的,有豎屏的。如果直接使用縮放變形等數據增強方式,會直接導致形變失真,反而不會提升精度。針對此類問題,採用維持圖像縱橫比縮放、Padding補齊等方式縮放圖像達到原圖比例。通過這些方式處理後圖像不會失真,訓練精度也得到了提升。



針對人像標註樣本少的問題,使用標註信息和背景圖合成的方式進行數據生成,數據量的擴充提升了模型的精度。





02

輕量級網絡設計方式




對於移動端和網頁端的人像分割,一個高效的輕量級網絡必不可少,在這裏爲大家總結了一些輕量化關鍵設計方法。




關鍵一:深度可分離卷積


深度可分離卷積是一種卷積分解方式,將普通卷積分解爲Depthwise Convolution和Pointwise Convolution,主要目的是減少計算量和參數量,此方式已被廣泛應用在輕量級卷積網絡中。




關鍵二:Channel Shuffle(通道洗牌)


在深度可分離卷積中用到的Depthwise Convolution會將所有的channel分組,每個channel分爲一組,這就導致組與組之間無信息交換。Channel Shuffle通過對group convolution之後的特徵圖進行“重組”,可以保證接下了採用的group convolution輸入來自不同的組,因此信息可以在不同組之間流轉。





關鍵三:Skip-connection(跳躍連接)


對於分割任務,空間域信息非常重要。主流的分割網絡均採用encoder-decoder結構。網絡的encoder部分通過下采樣層把特徵圖分辨率降得非常小,這一點不利於精確的分割mask生成,通過skip-connection跨層連接編碼器和解碼器,更利於生成精細的mask。Skip-connection直接複用encoder的特徵,幾乎不增加計算量,性價比非常之高!




關鍵四:上採樣方法


Decoder的主要目的是將低分辨率信息的特徵恢復到高分辨率。爲了實現這個目的就需要上採樣。常用的上採樣方式有四類:轉置卷積、反池化、插值、亞像素卷積。


當使用轉置卷積進行上採樣的時候,容易出現棋盤效應(左圖肩膀處)。開發團隊爲平衡計算量、顯存佔用和效果,最終採用深度可分離卷積+雙線性插值,在保持高效計算的同時解決了棋盤效應問題。




綜合考慮上述四個關鍵,開發團隊設計了Web端超輕量級模型PP-HumanSegs。




02

優化損失函數,解決類別不均衡



人像在整張圖片中所佔的比例往往較小,存在前景背景類別佔比不均衡的問題。常用的Cross Entropy Loss會公平處理正負樣本,當出現正樣本佔比較小時,就會被更多的負樣本淹沒。通過改變損失函數,使用Lovasz loss來降低正負樣本不均衡的問題。




03

光流後處理優化


視頻分割存在一個問題:視頻幀間不連貫,邊緣部分閃爍嚴重,爲此研發團隊利用時序信息結合光流法,對分割結果進行優化。採用光流解決方法,將光流預測結果與分割結果進行融合,這樣就可以參考上一幀的運動信息,使得前後幀變換相對更加穩定,減少邊緣的閃爍。



             原圖(左)     未加光流效果(中)     加光流效果(右)   



心動不如行動,大家可以直接前往Github地址獲得完整開源項目代碼,記得Star收藏支持一下哦:

https://github.com/PaddlePaddle/PaddleSeg


也可以掃碼加入微信交流羣,與官方開發團隊直接交流:



本文分享自微信公衆號 - 百度開發者中心(baidudev)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章