人像精細分割問題分析
最近參加了一個oppo舉辦的比賽,做人像精細分割。題目要求是這樣的:
- 任務描述
隨著手機硬體平臺和人工智慧技術的飛速發展,目前的智慧手機基本都可以實現後置雙攝像頭和前置單攝像頭對人像拍照時的背景虛化。在虛化的方法上,後置通過雙攝像頭來計算景深從而實現前景人像的分割,進而對背景虛化;而前置則直接對單幀影象進行人像分割的方式來虛化背景。這兩種方式來帶的虛化效果是顯著的,但是也存在很多弊端,無論哪種分割方式,都難以實現對人像髮絲的精細分割,這導致了最終人像頭部邊緣的虛化效果不是很理想。隨著使用者對手機相機拍照功能要求的逐年升級,為了達到單反相機級別的背景虛化效果,需要能夠實現人像的精細分割,尤其是髮絲邊緣。這樣不僅可以實現更加精確的背景虛化,同時也為人像照片換背景提供了技術支援,而這些可以進一步增強使用者的使用體驗。
- 輸入:RGB 人像圖片
- 輸出:分割為人像和背景的圖片
- 評價方法
本題目分為基於 groundtruth 的評價和演算法執行時間。
- 基於 groundtruth 的評價。在測試集中,會給定多張人像影象及其對應的分割好的影象作為 groundtruth。基於參賽者生成的分割影象和 groundtruth 的比對,利用 F1-score 和 Mean Intersection Over Union (mIOU) 作為評價指標。
為 groundtruth,A 為其人像區域;為演算法估計的分割,B 為其人像區域,則
上網看了一些論文和相關演算法,目前的思路如下:
1、它題目中所提到的人像分割更像是摳圖(Image Matting),如果想要結合人工智慧演算法,我們的第一種思路是:以傳統image matting演算法,作為最終方法,分割前景與背景。但使用這些方法需要trimap影象(劃定中間區域的影象),所以我們考慮用cnn網路進行初步分割,以分割得到的結果圖作為trimap。
2、訓練網路loss的建立:以最終摳圖結果的groundtruth作為計算loss的標準,更新cnn網路,最終得到的網路與傳統分割網路不同,它是一個更好劃分出trimap的網路。
2018.12.15:
1.傳統摳圖演算法學習:
傳統摳圖演算法的確能夠得到髮絲精度的影象,但是速度較慢,這篇10年左右的文章實現了實時的摳圖演算法。也比較典型。我把它的linux摳圖軟體下載下來但是沒跑通。似乎是版本太舊了,我們最終的演算法也不考慮用這個摳圖演算法。
2.影象分割網路的學習:https://github.com/lxtGH/dfn_seg
https://github.com/lxtGH/fuse_seg_pytorch
這兩個似乎都是face++的分割網路,還都比較新,但是沒有訓練程式碼,只有訓練好的網路框架,均使用的pytorch的網路框架。