姚 礪, 高 傲, 張乃港, 吳昊然, 萬 燕
(東華大學計算機科學與技術學院, 上海 201600)
人體實例分割指對于背景中需要檢測出的人體進行提取和分割,是計算機視覺領域如醫學影像、自動駕駛、三維重建等許多任務研究的前提。 實例分割是目標檢測和語義分割兩項任務的結合,目標檢測主要有兩種方式:單階段方法和兩階段方法。 兩階段方法的第一階段是通過不同的方式產生候選框,在第二階段對這些候選框進行分類和微調位置,獲取到檢測的結果;單階段方法直接對圖片進行處理得到檢測結果。 語義分割則是對輸入圖像中的每個像素點進行預測,判斷其屬于前景還是背景,從而將前景分割出來。
隨著深度學習的發展,誕生了許多出色的實例分割算法。 Long J[1]等提出了FCN(Fully Convolutional Network)方法,將上采樣和下采樣方法引入圖像分割領域中,針對像素分類有效的對目標進行分割;He 等人[2]提出了Mask R-CNN(Mask Region-based CNN) 算法,首先提取目標候選框,然后在候選框內使用FCN 進行分割,提升了分割精度,但Mask RCNN 算法對于一些不規則的物體,例如人、動物等在邊緣上分割效果表現的較差;2018 年,Liu 等[3]在Mask R-CNN 的基礎上,提出了一種兩階段實例分割算法PANet(Path Aggregation Network),通過特征金字塔和自適應池化進一步提升了獲取特征的能力,但是在目標邊緣上表現的仍然較差。
從以上幾種方法能看出來,由于兩階段的做法先天依賴于第一階段框選,導致算法丟失了物體的輪廓信息,從而很容易在不規則物體的邊緣處分割較差。 因此本文針對這一問題進行研究,通過引入輪廓信息對分割結果進行優化,進一步提升實例分割的精度。 傳統的輪廓檢測方法通常借助邊緣檢測算子實現,例如Laplacian 算子、Canny 算子、Sobel算子等等,雖然能檢測出場景中的邊緣信息,但是容易受到噪聲干擾,檢測出冗余的邊緣信息。 Yang J等人[4]提出輪廓檢測方法CEDN(Convolutional Encoder-Decoder Network)不僅可以有效的提取出目標輪廓,而且受到噪聲干擾較小,因此本文基于CEDN 算法進行改進,用于提取人體實例輪廓,優化Mask R-CNN 的分割結果。
雖然Mask R-CNN 算法在人體實例邊緣處分割結果較為粗糙,但是對整體的分割仍然是有效的,因此可以利用Mask R-CNN 對人體進行初步分割,得到大致的形狀;利用CEDN 算法對圖像中的輪廓信息進行檢測;通過Mask R-CNN 分割的掩碼提取出人體輪廓;最后,對人體輪廓進行區域填充,便可以獲取到較為精準的人體實例分割結果。 本文方法流程圖如圖1 所示。

圖1 本文實例分割方法流程圖Fig. 1 The flowchart of the instance segmentation method in this article
本文通過像素級與運算將人體掩碼和輪廓掩碼融合,為了防止人體輪廓出現斷裂,需要將人體掩碼膨脹,完整覆蓋輪廓掩碼后再進行與運算。 研究發現,膨脹次數介于15 次和20 次之間效果最好,可以得到較為完整的人體輪廓。 膨脹操作如圖2 所示。

圖2 膨脹操作Fig. 2 Dilated progress
簡單的像素級與運算融合,人體輪廓邊緣難免會出現毛刺,如圖3 所示。

圖3 人體輪廓毛刺Fig. 3 Body contour burr
后續區域填充需要光滑的輪廓,需要通過形態學手段進行光滑處理,去除掉毛刺。 本文觀察人體輪廓發現,毛刺寬度超過2 個像素,人體輪廓如圖4所示。

圖4 輪廓寬度Fig. 4 Contour width
而超過2 個像素寬度的毛刺使用一般的形態學開閉運算難以細化和消除。 因此本文設計了一種基于形態學的毛刺去除方法,有效的去除掉毛刺信息。首先,使用骨架提取方法,將輪廓和毛刺細化成像素寬度為1 的骨架;由于毛刺多是水平方向,因此通過線掃描法水平線性掃描獲取到水平形狀人體掩碼,利用形態學開運算有效的去除毛刺;通過和骨架的融合,便可以得到去除毛刺后的人體輪廓。 毛刺去除過程如圖5 所示。
處理毛刺后得到了較為光滑的人體輪廓,隨后使用區域填充方法可以將人體輪廓填充為人體分割掩碼。
CEDN 算法雖然能夠有效的提取出目標的輪廓,但魯棒性較差,檢測出的人體輪廓容易出現斷裂的問題。 因此本文基于CEDN 算法的網絡結構做了一定的調整,增加解碼器的卷積層個數,以增加解碼器解碼能力,有助于避免輪廓出現斷裂的現象。 輪廓檢測算法網絡結構如圖6 所示。

圖6 輪廓檢測算法網絡結構圖Fig. 6 The architecture of the CEDN algorithm network
本文將改進后的輪廓檢測方法和Canny 算子,Laplacian 算子以及Sobel 算子的檢測效果進行了對比,結果如圖7 所示,可見本文改進后的輪廓檢測方法去除了大量的服裝紋理等信息帶來的冗余輪廓。

圖7 邊緣檢測技術比較Fig. 7 Comparison of the edge detection technology
本文區域填充方法的流程圖如圖8 所示。 獲取到人體實例輪廓后,需要對輪廓進行填充以獲得完整的人體實例分割圖像。 由于輪廓內部服裝紋理信息的干擾,普通的區域填充算法,例如連通域算法、泛洪填充法等等填充效果較差。 本文提出一種基于掃描線法的區域填充算法,對于一個待填充人體輪廓圖,從左到右、從上到下以及其對應的逆方向分別掃描,當遇到像素值等于255 時,即認為到達了輪廓邊界,本次掃描停止,轉向從下一行或者下一列開始重復掃描。

圖8 區域填充流程圖Fig. 8 Region filling flow chart
由于內部紋理以及邊緣毛刺的原因,傳統的區域填充法效果并不理想,本文采用結合形態學的掃描線法區域填充方法,有效的對人體輪廓進行填充,分割出人體實例。
將改進后的區域填充方法和傳統的泛洪填充法和線掃描法進行了對比,結果如圖9 所示。 可見本文改進的區域填充方法有效的填充了輪廓內部區域。

圖9 區域填充算法比較Fig. 9 Comparison of the region filling
本文在LSP(Leeds Sports Pose)數據集上進行實驗和測試,并分別計算準確率(Precision) 和召回率(Recall) 評價本文算法的性能,準確率和召回率數學定義分別為式(1)和式(2):
其中,TP表示被正確預測為正樣本的數量;FP表示負樣本被預測為正樣本的數量;FN表示正樣本被預測為負樣本的數量。
以Mask R-CNN 算法為比較對象,評價指標見表1。 可見與Mask R-CNN 算法相比,本文方法準確率提高了4%,召回率提高了8%。

表1 評價指標Tab. 1 Evaluation metrics
通過在LSP 數據集上選擇圖片進行分割測試,結果如圖10 所示。 本文方法在人體實例的頭部、手肘、腳部等地方相比較Mask R-CNN 的分割結果更加精細。 實驗結果驗證了本文方法的有效性,即通過輪廓檢測算法以及形態學、區域填充手段的引入使得本文算法不僅在分割精度相對于Mask R-CNN得到了提升,而且進一步優化了目標邊緣。

圖10 Mask R-CNN 方法與本文分割結果對比Fig. 10 Segmentation comparison of Mask R-CNN method and ours
本文針對Mask R-CNN 算法在人體實例分割中存在分割邊緣較差、分割精準度較低等問題,輪廓檢測算法CEDN 提取出人體輪廓,然后通過改進的區域填充算法填充人體輪廓,從而得到人體分割掩碼。本文算法有效的利用輪廓信息優化了人體邊緣,改善了Mask R-CNN 算法分割出的人體邊緣粗糙的問題。 在LSP 數據集上實驗,本文方法較Mask RCNN 算法精確率提高了4%,召回率提高了8%。