智能手機哪家強?實時人像分割大比拼!

本文爲 AI 研習社編譯的技術博客,原標題 : Real-time Portrait Segmentation on Smartphones 翻譯 | 康奈爾•斯摩、Dawin_Park 校對 | 醬番梨 整理 | 志豪 原文鏈接: https://blog.prismalabs.ai/real-time-portrait-segmentation-on-smartphones-39c84f1b9e66 注:本文的相關鏈接請點擊文末【閱讀原文】進行訪問

手機上實時人像分割

分割效果的演示:原始圖像和散景效果。

近年來,各種圖像效果越來越受到人們的關注。散景一個很受歡迎的例子是在圖像的非聚焦範圍進行虛化。這個效果由快速鏡頭大光圈實現。不幸的是,手機攝像頭很難實現這種效果,因爲它還沒達到技術規格的要求。然而,如果每幅圖像的像素可以分爲人和背景兩個類別,就可以達到只有背景被虛化的散景效果。每個像素被分類的過程叫做語義分割,並且可以應用到不同的地方,比如改變圖像的背景或者分別對前景或者背景進行過濾。

一些設備或許會使用立體相機提取深度信息來對圖像進行分割。然而本文的方法是建立一個分割系統,從單張的RGB圖像得到想要的信息。這樣人像分割效果可以應用於更多的相機。

這些年來,計算機視覺取得了巨大的進展,尤其是在語義分割領域。這個成果取決於卷積神經網絡。這種神經網絡從圖像中提取信息並推斷出質量,包括分割圖。然而,大部分的架構需要大量的計算能力以及設備的並行能力。這個需求和神經網絡的普及導致設備廠商製造出了新的框架。這個框架支持神經網絡可以在手機GPU上進行評估。在大多數情況下,這些解決方案比基於CPU的性能更好。

儘管深度學習在計算機視覺中很流行,但是我們仍舊能在所有的分割模型中可以找到一些缺點。在大部分情況下,神經網絡運行太慢,很難在手機上進行實時判別。另個複雜問題是與手機框架的兼容性——不是支持所有的層。由於這些原因,我們設計了一個特殊的架構,適應於所有的約束。

最後的挑戰是訓練數據集,爲了達到最好的性能,我們爲這個任務收集了數據集並且創建了一個特殊的增強管道。

數據集

神經網絡需要訓練,所以構建神經網絡最主要的部分是訓練,因此最重要的部分是數據集。我們需要儘可能正確的分割圖,所以我們數據集中所有的圖片都是用專業的編輯程序手工標註。另外,我們希望數據是多樣的。缺乏多樣性或許會導致算法造成結構性的錯誤。舉個例子,如果一個模型不能處理一個特殊的姿勢,這可能是數據集不夠具有代表性。我們使用兩個方法來提高數據的質量:增強和收集額外的圖像。隨着時間的推移,我們的數據集的圖像數量逐漸增加。目前,我們訓練數據集中大概有13000張圖片,測試集有1000張圖片。包括各種姿勢、全身的、半身的以及自拍。

圖片增強:原始圖像和兩個隨機增強的例子。

結構

神經網絡需要設計結構。有很多不同的層和方法來進行組合,每個方法都有自己的優點。在確定我們的網絡之前,我們需要理解結構的哪些特徵是我們最想要的。我們希望的特徵是快,輕量級以及兼容大多數的移動框架。爲了實現這個,我們犧牲了收斂速度並且跳過了正則化層,通過減小模型尺寸以及大量的增強來防止過擬合。

另外,使用與平臺兼容性的層是至關重要的。每個框架都有自己的一系列操作實現,我們必須使用這些操作的交集。我們使用以下層:卷積層,轉置卷積,ReLu,sigmoid和逐元素增加。

架構最後的挑戰是效率。輸入圖像的形狀是關鍵的一個參數。我們模型的輸入是降低圖像的分辨率,然後輸出時放大爲原始形狀。輸入圖像越小,推理越快。然而,分辨率太低,在放大圖像時,會導致語義分割的結果模糊。我們能夠實時處理的最高的分別率爲256x256。

最後的網絡拓撲模型是基於U-Net編碼解碼結構。在我們的經驗中,在分類數量少的情況下,這是最好的圖像分割架構。然而,我們的結構包括了一些比較重要的變化。

爲了改善算法的收斂性,使模型更加精確,我們使用逐元素增加替代了上採樣後的串聯特徵。

下一個關鍵特徵是深度分離卷積層。與普通卷積層相比較,它可以以較少的計算成本以及內存需求實現相同的質量。我們增加了一個具有深度可分離卷積層殘差塊作爲基本塊,而不是原來的卷積層+ReLU塊。我們架構的另一個特點是不對稱性。編碼塊多於解碼塊。這使得我們能夠以相同的計算成本實現更好的精度。最後,爲了實現實時推理,我們儘量減少層數和特徵映射數量。

最後的結構如下圖所示。

分割網絡拓撲

訓練技巧

訓練是下一個重要的階段,有一個兩步的訓練過程使得產生更好的質量效果。首先,模型對數據庫裏所有的圖片進行預訓練;接着,爲自拍和肖像子集設計訓練模型,該模型使用上一步的結果作爲模型權重的初始值。爲了在每一步中擴大數據集,本文大量使用數據增廣,如圖片翻轉、曲線調整和陰影模擬。文本的增廣渠道是基於兩個主要概念:第一個是不過度污染圖片——增廣完畢後,圖片應該顯得真實;第二個是嘗試掩蓋數據集的缺陷,如在本文的實驗中,動作模糊模仿對視頻處理的穩定性造成重大的衝擊。

本文的另外一個觀點是輸出人造物。神經網絡傾向於生成棋盤——在應用背景提取後可以看到一張網格。這種類型的人造物不影響mIoU指標,但造成一個較差的視覺體驗。爲了解決這個問題,本文增加了額外的殘差塊在最後的形狀中,以及給出額外的訓練時間。

結果

分割的輸出:原始圖片、背景提取、前景提取

最後,我們得到了一個肖像分割模型,可以在質量和速度上有個很好的平衡。模型在fp32 onnx格式中只有3.7mb。我們的算法可以移植到大多數框架上,包括CoreML, MetalPerformanceShaders, SNPE, Huawei Kirin, OpenVINO。具體而言,在iPhone 7 和 Mi Mix 2S,模型可以成功的運行並且比30 fps快。這個過程包括從相機中獲取像素緩存器,預處理,推斷,後處理和在屏幕上渲染去除背景後的圖像。

另一個分割的

散景模擬:有背景虛化的圖像以及沒有背景虛化的圖像

備註

本文所提出的肖像分割系統是和我傑出的同事一起完成的。不幸的是,媒體上沒有辦法寫合作者,但是在這裏我要提到他們:

Lebedev Anton, Konstantin Semyanov, Artur Chakhvadze  -訓練過程以及設計網絡結構

Roman Kucev, Pavel Voropaev  -數據手機以及註釋標註處理

Maxim Skorokhodov, Vyacheslav Tarasov - Android集成

Oleg Poyaganov, Andrey Volodin — iOS 集成

MR — 本文的審覈

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