音 松,陳雪云,貝學宇
(廣西大學 電氣工程學院,南寧 530004)
行人實例分割[1-3]技術目前已被廣泛應用于車輛自動駕駛、視頻監控[4]和機器人等領域,然而在實際應用場景中,行人姿態、背景、遮擋、光照等因素都會對檢測精度產生較大影響。因此,行人的實例分割成為一項具有挑戰性的研究課題。
目標檢測[5]是檢測圖像中目標的位置框,語義分割是識別圖像中每個像素點對應的物體語義信息,實例分割則將兩者相結合,即識別檢測出位置框中每個像素點的類別歸屬。現有基于深度學習的目標檢測算法主要可分為基于候選區域和基于端到端兩類。基于候選區域的算法分兩階段來完成檢測,例如:RCNN[6]先通過選擇性搜索產生候選框,再通過支持向量機(Support Vector Machine,SVM)進行分類;Fast RCNN[7]先通過選擇性搜索產生候選框,利用VGGNet[8]進行特征提取并引入RoI Pooling 層,從而消除對輸入圖像的尺寸限制,再通過softmax 進行分類;Faster RCNN[9]通過區域候選網絡(Region Proposal Network,RPN)產生候選框,使檢測精度和速度得到提高。基于端到端的算法只需要一個階段即可完成檢測,如YOLO[10]、YOLO 9000[11]、YOLO V3[12]等。這些算法將骨干網絡 從GoogLeNet[13]換為DarkNet,利用回歸的思想來完成目標檢測,其對于輸入的一張完整圖像直接得出目標位置和類別概率。得益于卷積網絡的發展,語義分割研究近年來也取得了極大的突破,例如:DeepLab V1[14]利用空洞卷積并通過條件隨機場(Conditional Random Field,CRF)做后處理;DeepLab V2[15]利用空洞金字塔池化,對不同分支采用不同的空洞率來獲得不同尺度的圖像特征;DeepLab V3[16]優化了空洞金字塔池化并增加了BN 層,取消了CRF 的后處理過程;DeepLab V3+[17]將Xception 結構用于語義分割任務,進一步提高了模型的速度和性能。行人實例分割是行人檢測與行人分割的合并,其結合了目標檢測和語義分割技術。
本文以Mask RCNN[18]為基礎,通過增加串聯特征金字塔網絡(Concatenated Feature Pyramid Network,CFPN)模塊優化Mask RCNN 網絡分支,以提高算法的檢測精確率,并利用COCO 數據集和自建數據集中的行人圖像進行網絡訓練和評估。在本文提出的改進算法中,用于RPN 和檢測的特征仍然由卷積網絡和特征金字塔網絡(FPN)[19]生成,用于Mask 分支的卷積網絡生成的多層特征,經過上采樣后不再與上一層特征進行相加,而是先進行融合,再合并融合后的多組特征生成Mask,從而更充分地利用不同特征層的語義信息。
Mask RCNN 通過ResNet[20]或ResNeXt[21]提 取特征并通過FPN 構成骨干網絡,生成的特征圖為共享卷積層,特征金字塔對提取的階段特征進行不同的組合,一方面通過RPN 判斷前景和背景進行二值分類并生成候選框,另一方面將生成的候選框通過RoI Align 操作與特征圖中的像素對應。之后,將一個分支用于分類和回歸,將另一個分支用于分割生成Mask。
Mask RCNN 定義了一個多任務的損失函數,如式(1)所示:

在上式中,Lcls和Lbox為分類誤差和檢測誤差,計算公式如下:

Lmask是語義分割分支的損失,輸入Mask 分支的每個特征圖經過一系列卷積和轉置卷積操作后,輸出k×m×m的特征圖,其中,k表示輸出的維度即總的類別數,每一個維度對應一個類別可以有效規避類間競爭,m×m表示特征圖的大小。Lmask為平均二值交叉熵函數,其對每一個像素進行分類,對每一個維度利用sigmoid函數進行二分類,判斷是否為此類別。
本文針對行人實例分割任務對Mask RCNN 網絡進行改進。首先依據生活中的場景新建一個行人數據集,更有效地彌補COCO 數據集用于行人實例分割時的不足,然后新增一個CFPN 模塊和分支,通過對特征提取骨干網絡的重新設計,使得上下文語義信息得到更充分的運用。
引入CFPN 的改進Mask RCNN 網絡結構如圖1所示,其中,ResNet 分5 個階段依次提取特征。與原始網絡不同的是,FPN 處理后的特征組通過RPN 生成候選框,經RoI Align 操作后僅用于分類和回歸,而通過CFPN 融合的特征組與候選框經RoI Align 操作后只進入Mask 分支用于分割任務。FPN 和CFPN都是對特征進行處理,且重組后的特征大小相同、維度相同,因此,即使分別經RoI Align 操作,處理后的候選框仍然一一對應。

圖1 改進Mask RCNN 網絡結構Fig.1 Network structure of improved Mask RCNN
在深度神經網絡中,低層特征包含更多的細節信息,而高層特征則更關注于語義信息。由于FPN自上而下通過上采樣與橫向特征相加得到的新的特征層包含了不同層的特征,因此具有更豐富的信息,這對于目標檢測尤其是小目標檢測具有重要意義。由于多維特征直接相加的操作不利于后續全卷積的分割任務,因此本文設計改進的CFPN 模塊(如圖2 所示)用于Mask 分支,從而更充分地利用不同層的語義信息提高網絡性能。

圖2 CFPN 模塊Fig.2 CFPN module
將ResNet 提取的特征記為C1~C5,每一層的特征經過1×1 卷積核的卷積,在保持特征圖大小不變的同時降低了維度,C3~C5 卷積后進行上采樣處理,目的是將特征圖擴大一倍與低層特征相融合。對每一個融合后的特征進行3×3 卷積核的卷積,從而消除上采樣后的混疊效應并實現降維。在圖2 中,m5 由C5 直接上采樣后卷積得到,m2~m4 則是由高層特征上采樣分別和低層特征融合所得,形成的特征組[m2,m3,m4,m5]將用于Mask 分支。
改進后的Mask RCNN 算法流程如圖3 所示,該算法通過ResNet 網絡對輸入圖像分5 個階段提取特征,分別記為C1~C5,之后再分別進入后續兩個分支。

圖3 改進Mask RCNN 算法流程Fig.3 Procedure of improved Mask RCNN algorithm
FPN 將高層特征經過上采樣后分別與低層的特征相加形成新的特征組合P2~P5,C5 經過上采樣后直接得到特征層P6,RPN 利用特征組[P2,P3,P4,P5,P6]產生候選框,生成的候選框先通過RoI Align 操作,再經過卷積核大小為7×7、通道個數為1 024 和卷積核大小為1×1、通道個數為1 024 的卷積操作后,通過全連接層和softmax 得到分類類別,經全連接層和Reshape 操作獲得每個候選框的位置偏移量,用于回歸目標候選框。
CFPN 將提取的階段特征通過上采樣與低層特征相融合形成[m2,m3,m4,m5],并結合候選框,通過RoI Align 操作用于Mask 分支,先進行連續的卷積核大小為3×3、通道數為256 的卷積操作,再經過一個2×2 的轉置卷積將特征面積擴大一倍,最終輸出候選框中對應類別的像素分割結果。雖然這一系列的操作都是語義分割,但由于每一個候選框中只有一個類別,因此相當于進行實例分割。
COCO 數據集是微軟團隊提供的一個可用于圖像分割和目標檢測的數據集,主要為從日常復雜場景中選取的圖像,包括80 類目標,超過33 萬張圖片。該數據集中的圖像主要以物體檢測、關鍵點檢測、實例分割、全景分割、圖像標注5 種類型標注,以json文件存儲。本次實驗使用的是COCO 2014 數據集,共分為訓練集、測試集和驗證集,其中訓練集含82 783 張圖像,測試集含40 755 張圖片,驗證集含40 504 張圖像,本次實驗在該數據集上進行預訓練。
雖然COCO 數據集包含大量數據,但是數據種類眾多,范圍寬廣。為更好地完成行人實例分割的任務,筆者仿照COCO 數據庫自建了一個行人實例分割數據集(如圖4 所示)用于數據增強。從街道、商場、海灘、公園、公路、車站等復雜日常生活場景中拍攝夜晚、清晨等弱光照條件下包含騎車、嬉鬧、遮擋等各異姿態和背景的1 000 張圖片,這些高分辨率圖像有近景也有遠景的行人,最后使用labelme 軟件對所有的圖像進行實例標定并生成對應的json 文件,用于訓練和測試。自建的行人數據集相對COCO 數據集更接近生活且更復雜,這對網絡性能檢測更具挑戰性。

圖4 自建數據集標定圖Fig.4 Calibration images of self-constructed dataset
本實驗在Ubuntu 16.04 系統中完成,實驗框架為keras 和tensorflow,處理器為AMD R5 2600,內存為16 GB,顯卡為NVIDIA 1060Ti。為適配硬件和統一圖像尺寸,訓練前將圖像大小歸一化為448 像素×448 像素,利用Python 圖像增強庫imgaug 隨機選取50% 訓練集進行數據增強。對不同骨干網絡的Mask RCNN 和改進后的Mask RCNN 算法分別進行訓練,訓練共分為4 個階段,前三個階段在COCO 數據集中進行預訓練,最后一個階段在自建的數據集中進行。前兩個階段學習率為0.001,每個迭代(epoch)1 000 次,每個階段訓練40 個epoch;后兩個階段學習率為0.000 1,訓練次數與前兩個階段相同。一個完整的訓練過程共16 萬次訓練。
訓練過程中的損失包含了RPN 網絡和兩個分支的損失,如圖5 所示。可以看出,在第120 個epoch 后損失下降明顯,是因為前120 個epoch 是在COCO 數據集上預訓練,而后40 個epoch 在自建的數據集中進行。正因為自建數據集作為增強訓練且容量有限,所以只進行了40 000 次迭代后損失已經趨于穩定。

圖5 網絡訓練損失Fig.5 Network training loss
4.3.1 精確率
精確率(Precision)是評價網絡性能的一個重要指標,其為正確識別的物體個數占總識別出的物體個數的百分比,計算公式如下:

其中,XTP表示正確識別的物體個數,XFP表示錯識識別出的物體個數。
本實驗以AP50(IoU=0.50)和mAP(IoU=0.50︰0.05︰0.95)兩個指標來分析實驗結果并與原網絡進行對比。
為避免測試準確率偶然性對實驗結果的影響,對AP50 和mAP 兩個指標各進行100 次測量,實驗結果如圖6 所示(彩色效果見《計算機工程》官網HTML版),其中,4個子圖的算法骨干網絡分別是ResNet50/101和ResNeXt50/101,原網絡結果用FPN 表示為藍色,改進后的網絡結果用CFPN 表示為紅色,實線和虛線分別為AP50 和mAP 的值。從圖6 可以看出,在4 種不同的骨干網絡中,改進的Mask RCNN 算法在AP50 和mAP 上都較原算法有較大提高,網絡越深,提升越明顯。

圖6 不同骨干網絡的精確率對比Fig.6 Precision comparison of different backbone networks
表1 和表2 顯示了100 次測量結果的平均值,其中,ResNet50_FPN 代表骨干網絡為ResNet50 的原網絡,ResNet50_CFPN 代表骨干網絡為ResNet50 的改進網絡,以此類推。可以看出,改進網絡性能較原網絡得到了很大提升,同時,相同深度的ResNeXt 網絡較ResNet 網絡精確率更高,且網絡越深,實驗結果越理想。

表1 改進前后精確率對比(ResNet 骨干網絡)Table 1 Precision comparison before and after improvement(ResNet backbone network) %

表2 改進前后精確率對比(ResNeXt 骨干網絡)Table 2 Precision comparison before and after improvement(ResNeXt backbone network) %
4.3.2 網絡預測時間
在網絡訓練結束后,對網絡改進前后的每次精確率測試所花費的時間進行統計,以此來對比網絡預測時間的差異。表3 和表4 顯示了不同的骨干網絡改進前后精確率每測試一次所需要的時間。可以看出,計算mAP 所需要的時間往往比AP50 要多,在同樣層數情況下,ResNeXt 網絡比ResNet 耗費時間多,而同樣的網絡改進后雖然參數量有所增加,但是測試所需要的時間整體上變化不明顯,因此,改進后的算法并沒有影響原算法在實時性上的表現。

表3 改進前后測試時間對比(ResNet 骨干網絡)Table 3 Test time comparison before and after improvement(ResNet backbone network) s

表4 改進前后測試時間對比(ResNeXt 骨干網絡)Table 4 Test time comparison before and after improvement(ResNeXt backbone network) s
4.3.3 分割結果
基于生活場景圖的訓練結果進行測試,實驗結果如圖7 所示。可以看出,在應對不同的光照、姿態、背景時,本文改進算法都有很好的表現。但是在測試的過程中也發現,行人個例分割的邊沿并不理想,仍然存在較大的誤差。

圖7 改進Mask RCNN 算法行人實例分割結果Fig.7 Pedestrian instance segmentation results of improved Mask RCNN algorithm
本文提出一種改進的Mask RCNN 算法用于行人實例分割任務。通過在Mask 分支中設計CFPN 模塊,更充分地利用不同層特征的語義信息。仿照COCO數據集自建包含1 000張圖片的行人數據集,對改進前后的網絡進行定量和定性分析。實驗結果表明,改進算法在不同的骨干網絡中測試結果都得到了提升,增強了網絡性能。但是該算法所得行人個例分割的邊沿仍然存在較大的誤差,下一步將對此進行改進。此外,還將研究如何減少網絡參數并提高小目標下的實例分割精度。