殷小芳,辛月蘭,蘭 天,何曉明
(青海師范大學 物理與電子信息工程學院,青海 西寧 810000)
為了獲得完整的圖像理解,我們不僅應專注于對不同圖像進行分類,而且還應精確估計每個圖像中所包含對象的概念和位置。目標檢測作為圖像理解和計算機視覺的基石,能夠為圖像和視頻的語義理解提供有價值的信息,并且涉及許多應用,包括圖像分類[1]、人類行為分析[2]、臉部識別[3]、醫療診斷[4]和自動駕駛[5,6]等。近年來,目標檢測算法從基于手工特征的傳統算法轉向了基于深度學習的方法[7]并得到了很大突破[8]。現有的深度學習方法可以分為兩類,一類是兩階段檢測方法,該方法使用區域推薦產生候選目標,隨后使用卷積神經網絡進行處理。目前這類方法主要有區域卷積神經網絡(Region-CNN,R-CNN)[9]、空間金字塔池化網絡(spatial pyramid pooling net,SPP-net)[10]、快速區域卷積神經網絡(Fast Region-CNN,Fast R-CNN)[11]和掩膜區域卷積神經網絡(mask regions with convolution neural network,Mask R-CNN)[12]等。此類算法雖然在平均精度上有所提高,但當光照條件不足、目標過小、目標重疊度高等情況下仍然存在誤檢和漏檢的情況;另一類是一階段檢測方法,這類方法無需區域推薦直接回歸目標物體的類別概率和位置坐標,這類方法主要有YOLO[13]、YOLOv2[14]、YOLOv3[15]、SSD[16]和RetinaNet等,此方法雖然在速度上提高了但檢測精度較低,完美地完成對象檢測仍然存在挑戰。Ren等提出Faster R-CNN算法[17],進一步提高了Fast R-CNN的檢測性能,該算法使用區域提案網絡(regional proposal network,RPN),解決了Fast R-CNN的實時性檢測和端到端訓練測試的問題,但是準確識別不同姿態和視角下的對象仍存在挑戰,同一物體不同姿態視角下仍有誤檢漏檢或檢測精度較低等情況。考慮到物體外觀會根據其基本形狀(例如汽車與馬)以及不同的姿勢和視角(例如,蹲著的人與站立的人)的不同而直接影響檢測精度,本文提出一種多通道檢測算法(multi-channel faster region-CNN,MC Faster R-CNN)來進一步優化檢測性能。改進算法基于Faster R-CNN體系結構,在Resnet-101的網絡結構上重新進行了網絡訓練和參數的調整,并在PASCALVOC2007[18]數據集、PASCALVOC2012[19]數據集、MS COCO[20]數據集和自己拍攝的圖像上進行了大量實驗驗證,實驗結果表明,本文算法在檢測精度和速度上都有著很好的表現。
Faster R-CNN的網絡架構如圖1所示[21],Faster R-CNN的結構主要分為3大部分,最左邊的虛線框為第一部分的共享的卷積層-backbone,中間部分虛線框為第二部分的候選區域提案網絡-RPN,最右邊虛線框是對候選區域進行分類的網絡-classifier。從圖1中可以看出,目標檢測所需要的4個步驟全部在CNN中實現,并且全部運行在GPU上,解決了Fast R-CNN端到端訓練測試的問題。

圖1 Faster R-CNN的網絡架構
區域提案網絡。其結構如圖2所示[22],該網絡以任何大小的圖像作為輸入,RPN是全卷積網絡[23],通過端到端訓練可以產生量少質優的建議區域,然后通過Fast R-CNN進行檢測。RPN和分類回歸網絡共享第一部分的特征提取網絡并與RPN一起訓練,降低了網絡參數量和訓練所用的時間。在最后共享卷積層輸出的卷積特征圖中使用滑動窗口的操作方式生成區域提案框,滑動窗口的中心在原像素空間的映射點成為錨框(anchor boxes)。每個滑動窗口處會生成K個大小不同的錨邊框,由于目標不可能都為正方形,所以設置多種不同面積尺寸的anchor,來得到期望的目標提案框。

圖2 區域提案網絡(RPN)
RPN的損失函數和邊界框回歸。在訓練RPN的時候,先需要對得到的W*H*k個錨框進行正負樣本的劃分,其中與真實的檢驗框(ground truth box,gt box)中具有最大交并比IoU的錨框以及gt box的IoU大于0.7的錨框作為正樣本,與gt box的IoU小于0.3的錨框作為負樣本,其余錨框均被忽略。對于每個錨框,后面會再接上一個softmax分類器和邊框(Bounding-Box,bbox)回歸器。softmax分類器用于判斷錨框是否為目標概率,bbox回歸器用于調整錨框的4個坐標值。因此RPN的損失函數可定義為[22]

(1)


式中:參數R為smooth函數[24],表達式為
由于目標檢測中的物體外觀會根據其基本形狀以及不 同的姿勢和視角的不同而有很大的差異,本文為了優化檢測性能,更準確識別20種物體的外觀,提出一種多通道檢測算法即MC Faster R-CNN,并通過大量的實驗與分析驗證了該算法的有效性。
MC Faster R-CNN的網絡結構如圖3所示,本文的改進如圖中虛線框所示,由于RPN網絡能夠產生量少質優的區域提案框,有高準確率和召回率且降低了網絡參數量和訓練所用的時間,所以該算法延用了Faster R-CNN中的RPN網絡。Faster R-CNN是由每個圖像卷積網絡和每個RoI網絡組成,圖像卷積網絡獲取輸入圖像并計算每幅圖像的特征圖,并將該圖作為下一個卷積層的輸出,同時區域提案網絡生成感興趣區域(RoI)。由于區域提議網絡會生成類似于目標的區域,而不是目標實例,并且不擅長處理極端比例和不同姿態與視角情況下的形狀目標。所以本文算法在RoI生成方面不再使用單獨的網絡,而是改為由3個通道組成的網絡,每個通道分別處理相應的RoI。每個通道都具有與Faster R-CNN相同的完全連接層且都帶有一個RoI池化層和一組共享卷積層。通過將圖像RoI的形狀與標定的特有的形狀類別之一進行匹配,然后進行適當的通道分配,本文分為水平延伸(H)、正方形(S)、垂直延伸(V)這3類。在測試中,MC Faster R-CNN從3個不同的通道輸出3組檢測結果,即邊界框及其得分。得分通過精度評價式(2)[25]來計算,IoU值越大精度越高評分越高,反之,精度越低評分越低。本文將重疊標準定為0.3,然后通過非極大值抑制來精煉邊界框
IoU=(A∩B)/(A∪B)
(2)
式中:A為候選框,B為原標記框,比值為1是最理想的完全重疊狀態。

圖3 MC Faster R-CNN的網絡結構
生成RoI后,本文根據目標的形狀類別將每個RoI分配給相對應的通道。每個RoI的形狀類別均根據其縱橫比來分配,其中包括水平伸長(H)、方形(S)或垂直伸長(V)3種形狀類別。用θ表示RoI的寬高比并定義為式(3)
θ=W/H
(3)
式中:W和H分別是RoI的寬度和高度。
進行訓練時通道分配定義為式(4),根據此RoI分配標準,RoI可以分為多個類別,比如接近方形的水平拉長物體既能分到水平拉長通道又能分到方形通道。這樣做的目的是讓多個通道負責同一RoI,這些RoI可以在不同類別之間共享,同時增強了RoI訓練集,可以獲得更多的前景信息和背景信息及正面和負面示例,在訓練階段提供了更加豐富的信息。在測試階段為了保證檢測速度并提高檢測性能強制將RoI分配給僅1個通道進行測試,將通道分配標準設置為具有不重疊的區域,并定義為式(5)

(4)

(5)
本文通過最小化正則函數R(W)和3對損失函數之和L(W)來優化權重為W的網絡,3對L(W)分別連接到網絡中對應的通道上進行優化。對于每個通道c,分別將softmax損失函數Lsoftmax和smoothL1損失函數Lsmooth用于對象分類和邊界框回歸,本文將損失函數定義為[11]
(6)

為了優化3個通道,本文選擇每次準備3批迭代,每個批次均由兩個圖像構成,每個圖像貢獻了64個隨機選擇的RoI。對于每個通道,僅選擇與其關聯的形狀類別匹配的RoI進行訓練。根據RoI和ground truth邊界框之間的重疊標準(IoU),每個RoI會被標記為正例或負例,其中IoU等于或大于0.5的RoI被標記為正例,IoU在0.1到0.5之間的RoI被標記為負例。對于每一批,正例和負例樣品之間的比例固定為1∶3。
通過第2節中的所有分析,本文使用基于Resnet-101的Faster R-CNN構建的MC Faster R-CNN。本文所有實驗均在Windows10 1909系統下進行,其中深度學習框架為tensorflow1.14,硬件環境為Intel Corei5-8400 2.81 GHz CPU,NVIDIA GeForce GTX 1080Ti GPU,顯存為11 GB。軟件環境為Python 3.6,Keras 2.2.5,CUDA 8.0。
為了驗證本文算法的有效性,采用PASCALVOC2007、PASCALVOC2012和MS COCO這3個數據集和自己拍攝的圖像進行測試。都是先使用訓練集進行檢測算法的網絡模型訓練,然后在測試集上對訓練好的模型進行驗證。實驗中對所有數據集采用K折交叉驗證法[26],本文將訓練集S分成5個不相交的子集,5個子集中的一個作為測試集,其它4個作為訓練集,并把訓練出的模型用來測試得到相應的檢測精度。最后計算5次求得的檢測精度的平均值,作為本文模型真實檢測精度。
本文算法實驗結果與Faster R-CNN和YOLOv3進行對比,實驗中均使用40k次迭代訓練所有方法,基本學習率設置為0.001,經過30k次迭代后降至0.0001。其次,根據高斯分布(均值為0和標準偏差為0.01)隨機選擇它們來初始化分類層權重。對于邊界框回歸層,初始化了從高斯分布中隨機選擇的權重,均值和標準差分別為0和0.001。
MC Faster R-CNN中的多通道所包含的全連接層數量比Faster R-CNN多3倍,這帶來了內存效率問題。為驗證跨層共享對多個通道的影響,文中選取均值平均精度(mean average precision,mAP)作為實驗結果的評價指標,mAP值越高精確度越高,檢測性能越好。計算方法為式(7)[27],AP(average precision)即PR曲線下覆蓋的面積,PR曲線是以召回率(Recall,R)作為X軸,精確度(Precise,P)作為Y軸來繪制,對于連續PR曲線,式(7)中AP計算公式為式(8)
(7)

(8)

本文中多個通道之間的全連接層是共享的,與優化卷積層相似,共享全連接層是通過將基本學習速率乘以1/3來優化的。使用3個不同的結構變化進行檢測時,當多通道算法沒有共享層、共享fc6層和fc6&fc7層的mAP值分別為:73.5%、74.6%、72.9%。可以得出3個通道共享fc6層可以更好地提高檢測性能并節省內存空間。單通道和多通道的消融對比結果見表1,可以看出即使沒有擴充訓練數據集,MC Faster R-CNN的檢測性能也要優于單一通道網絡。當多通道網絡訓練數據集為PASCALVOC 2007和PASCALVOC2012時相比擴充訓練數據集后的Faster R-CNN平均檢測精度分別提高了0.9%和2.4%。

表1 單通道和多通道的消融實驗結果對比
為了分析每個通道的綜合能力,不考慮RoI形狀類別的情況下使用3個通道中的一個來得到檢測結果。通過實驗得出由3個獨立通道的均值平均檢測精度值,H、S、V這3個通道均值平均檢測精度分別為69.1%、75.4%、64.9%。可以看出S通道明顯優于H和V通道,這與擴充訓練集之后的Faster R-CNN所得到的均值平均檢測精度76.4%相當。由通道分配定義式(4)可知,S通道在訓練階段不僅可以發現方形的對象,而且能分配到近似于方型的其它兩類形狀目標,這樣S通道就會訓練更多的形狀類別使得它檢測另外兩種形狀類別的對象表現較好。當在MC Faster R-CNN的統一網絡設置中使用這3個通道時,均值平均精度可以提高到79.7%(見表1)。
圖4顯示了不同通道檢測每種物體類別的均值平均檢測精度。當一個物體類別包含具有特定形狀類別時,負責該類別的通道將獲得最佳的檢測精度。例如,H通道在檢測火車、公交車和飛機等水平拉長物體方面表現最佳,而V通道在大多為垂直拉長形狀的物體類別中表現最佳,如人、瓶子和馬等。S通道整體檢測效果較好,因為方形通道在訓練階段得到了更豐富信息。整體看來,使用多通道檢測算法檢測性能表現較好。

圖4 不同通道檢測每種物體類別的平均檢測精度
本文在實驗結果中選取的數據集均為PASCALVOC2012,為了更加直觀展示實驗的效果,將本文算法的實驗結果與兩階典型算法Faster R-CNN和一階典型算法YOLOv3算法進行了對比,從中選取了部分代表性的結果如圖5~圖7所示,從圖中可以看出不論是單目標圖像還是多目標圖像,本文提出的算法比Faster R-CNN和YOLOv3算法更有優勢。具體表現為:①通過多通道算法檢測可以更好的將不同形狀的目標準確識別,而且在霧天或者較暗光照的情況下仍然有著很好的表現,例如圖6中的飛機和輪船;②對Faster R-CNN和YOLOv3未能檢測的目標,本文算法可以識別且精度都比較高,例圖6中的輪船和圖7的企鵝;③對同樣都能識別出來的目標,本文算法的檢測效果更好得分更高,該得分由式(7)計算得來,圖5~圖7均有體現;④對重疊度比較高的或者較小目標其準確度更高,修正了Faster R-CNN和YOLOv3算法檢測時出現的漏檢問題如圖6中含有多個目標的人;⑤在有遮擋或目標重疊的情況下,本文算法可以準確識別,例如圖6中的人、圖7中的企鵝和貓。同時,相對Faster R-CNN算法,本文算法可以更好地識別不同姿態下的同一對象,比如圖5中站著的人和蹲著的人,本文算法都給予很好的修正。
此外,我們將自己拍攝的圖像也用3種方法進行了測試如圖8所示,通過圖8可以看出本文算法在檢測精度上相比前兩種算法有著很好的表現,例如圖8中的人和馬。本文算法在目標框的定位上明顯優于其它對比算法且得分較高,對不同姿態同一對象的識別精度也有所提高,例如圖8中蕩秋千的人和正在行走的人。該算法檢測的結果幾乎接近Ground Truth值。對于包含較小目標且有重疊或遮擋時,改進算法同樣有著很好的表現,例如圖8中的出租車。

圖5 對單一目標的檢測結果

圖6 對多目標的檢測結果
為了進一步分析本文算法的檢測性能,表2展示了該算法和其它算法在PASCAL VOC2012數據集中識別20類目標的平均檢測精度對比,Faster R-CNN算法和本文算法都使用ResNet-101網絡,YOLOv3算法使用DarkNet網絡進行檢測。表2可以看出,本文算法在檢測bike(自行車)、bus(公交)、person(人)等多個類別的檢測精度上優于YOLOv3和Faster R-CNN,本文算法的平均精度為78.8%,比YOLOv3提高了2.9%,比同一系列Faster R-CNN算法提高了2.4%。如表3所示,本文算法在MS COCO數據集上的檢測結果同樣表現優越,通過表3可以看出同為ResNet-101的網絡下,相比Faster R-CNN算法本文的檢測精度提高了1.2%,比RetinaNet提高1.4%。網絡結構同為VGG16時,本文算法精度比YoLov2提高了4.3%,比SSD提高了2.5%。綜合看來該算法在精度上具有一定的優勢。

圖7 多種形狀類別的檢測結果

圖8 實地拍攝圖像的檢測結果對比

表2 本文算法和其它算法在PASAL VOC2012 數據集上的檢測結果

表3 本文算法和其它算法在MSCOCO 數據集上的檢測結果
為了分析利用“多通道算法”的計算開銷,本文將MC Faster RCNN的訓練、測試時間與Faster R-CNN進行了比較,如表4所示,Faster R-CNN算法比本文算法的訓練時間少用了3 h,測試時間上本文算法與Faster R-CNN算法相差僅為0.006 s。所以盡管MC Faster R-CNN比Faster R-CNN需要更多的時間進行訓練,但使用多通道算法進行測試所需時間與Faster R-CNN算法相當。

表4 訓練和測試Faster R-CNN和 MC Faster R-CNN的時間開銷
本文提出一種多通道檢測算法并通過大量的實驗驗證了它的有效性,解決了其它算法存在的誤檢和漏檢問題,當目標都能被檢測出來時多通道檢測算法相比其它算法檢測性能更好。在RoI生成方面的改進使得目標定位更加準確得分更高,同時對于光照不好和霧天情況下有著很好的邊框修正效果。在PASCALVOC2012數據集和MS COCO數據集以及自己拍攝的圖像上通過實驗得出無論是在時間還是精度上所提算法都較Faster R-CNN算法有所提升的結論。