李昕昕,楊 林
1.四川大學錦城學院 計算機與軟件學院,成都611731
2.西南交通大學 信息科學與技術學院,成都610031
目標檢測是計算機視覺的重要內容,是眾多計算機視覺任務的基礎[1]。行人檢測技術作為計算機視覺中目標檢測的重要分支,在行人分析、智能輔助駕駛、智能監控、服務機器人領域有著廣泛的應用[2]。近年來,隨著深度學習在計算機視覺領域的崛起,行人檢測技術進入了一個快速發展時期,出現了許多基于深度卷積神經網絡的行人檢測算法,尤以在中大尺度行人目標檢測上取得的效果最為突出[3]。但是在復雜道路環境下目標尺度變化大,相同近景與遠景目標占據圖像像素數量差別10余倍[4],導致小尺度行人目標所采集到的圖像像素較少,且隨著特征提取網絡中網絡深度的增加,檢測難度越來越大。同時,由于小尺度行人圖像易受周圍環境和圖像噪聲等影響,造成漏檢和誤檢,是目前行人檢測算法研究中的一個難點。因此如何提升小尺度行人目標檢測算法的正確性、快速性和魯棒性是本文的主要研究目標。
從圖1[5]可以看出,行人檢測特征提取網絡由淺及深多尺度特征層中:(1)隨著特征提取網絡逐漸加深,感受野不斷增大,圖像分辨率降低,使得圖像空間幾何特征的表征能力變弱,在小尺度行人檢測上容易導致漏檢。(2)淺層網絡感受野較小,幾何細節表征能力強,可以更加關注小尺度行人目標,但由于語義信息表征能力較弱,泛化性差,易導致誤檢。

圖1 多特征層可視化熱力圖
針對上述問題,目前多尺度目標檢測的主流算法SSD(Single Shot MultiBox Detector)[6]、RFBNet(Receptive Field Block Net)[7]等,提出采用多尺度特征融合的方式,不經過上采樣直接從網絡不同層抽取不同尺度的特征進行獨立預測,來實現不同尺度目標的檢測。但是這類算法由于沒有考慮淺層特征與深層特征信息的融合利用,對小尺度目標檢測效果不是很好。有學者針對這一問題進行改進,提出FPN(Feature Pyramid Networks)[8],即同時利用低層特征高分辨率和高層特征的高語義信息,通過融合這些不同層的特征達到預測效果。但這類算法的檢測速度較慢,不能滿足實時性的要求。
因此,本文針對目前復雜道路場景中小尺度行人目標檢測漏檢率較高,檢測實時性不佳的問題,提出了一種基于目標檢測模型RFBNet的改進算法。本文主要創新包括:
(1)網絡結構改進:通過反向融合的方式將多尺度特征圖通道進行Shuffle后的深層特征組多級融合到淺層,將深層語義信息和淺層位置及紋理等幾何信息進行有效的融合;針對原算法中淺層特征信息丟失較多的問題,引入更淺層特征層,并新增改進后的RFB 模塊及Normalization 層,保證其感受野和收斂性,同時去掉部分深層特征層,以兼顧檢測效果和速度。
(2)損失函數優化:針對評測和回歸損失函數中評價指標不等價問題,基于交并比和中心點距離對回歸損失函數進行改進。
本文算法的網絡框架結構如圖2 所示。相較于原始網絡,增加了通道Shuffle(混洗)模塊、多級特征融合模塊、改進的RFB模塊,引入了更淺層網絡,刪除了最深層特征層。
在具有多通道類型的行人檢測器中,不同的通道包含不同類型的信息[9]。高層網絡感受野較大,語義信息表達能力強,但是特征圖的分辨率低,幾何信息表征能力弱,難以檢測小尺度目標。而低層網絡的感受野較小,幾何細節表征能力強,雖然分辨率高,但是語義信息表征能力弱。為了更加充分地利用局部細節特征和全局語義特征,需要充分利用網絡上下文信息,進行深淺特征層信息間的融合。本節提出通道Shuffle模塊在多尺度特征層間進行深淺層間的信息融合。

圖2 本文算法網絡結構圖
原始RFBNet 網絡中用于引出多尺度特征圖的網絡extra layer 中包含Conv8_2、Conv9_2、Conv10_2 和Conv11_2 特征層,在進行多尺度特征提取時取得了很好的效果[7]。經過對比實驗(見表1),本文選擇使用RFBNet512 網絡中的Conv8_2、Conv9_2、Conv10_2 和Conv11_2 特征層用于通道Shuffle。其中Conv8_2 通道數為512,其余三層為256。通道Shuffle 模塊的實現步驟是:
(1)對Conv8_2使用1×1卷積降至256通道,并保留。
(2)對Conv9_2、Conv10_2、Conv11_2 依次上采樣至16×16,按照Concatenation 方式和Conv8_2 進行特征融合。
(3)對步驟(2)中的特征層通過兩次reshape操作和一次轉置操作進行通道Shuffle。
(4)將Shuffle 后的特征層通過分割和最大值池化的方式轉換為融合前的尺度大小,分別為16×16、8×8、4×4、2×2。將步驟(1)中保留的特征層以Concatenation方式與經過通道Shuffle后的Conv8_2進行融合。
通道Shuffle模塊算法流程如圖3所示。

圖3 通道Shuffle模塊
通過上述通道Shuffle 模塊,使得網絡各深層語義信息進行充分的混合,提升后續多級特征融合的效果。通道Shuffle模塊中不同特征層選取的性能對比實驗如表1所示。其中僅選取Conv8_2、Conv9_2、Conv10_2和Conv11_2特征層用于通道Shuffle的檢測效果最佳。
經過通道Shuffle 模塊后,深層特征間全局語義信息已經得以充分融合,淺層特征即使不逐級與深層特征融合也可獲得較多信息。后三層Conv10_2、Conv11_2、Conv12_2經過上采樣后,特征圖尺度太小,屬于高層語義特征,而Conv4_3 和Fc7 屬于低層語義特征,如果直接進行特征融合差異過大,容易導致性能不穩定。因此本節的多級特征融合模塊算法流程為:
步驟1 選取經過通道Shuffle后的Conv8_2、Conv9_2兩層與淺層的Conv4_3、Fc7層進行特征融合。
步驟2 對每次跨層融合后的特征進行BN操作,保證充分的特征融合以及網絡的非線性和穩定性,加快收斂速度。
步驟3 為進一步加強淺層特征融合效果,將經過融合的Fc7和Conv4_3層以Eltwise-SUM方式進行二級融合至Conv4_3層。
步驟4 按照原RFBNet的方法在Conv4_3和Conv7層分別接上RFB-S和RFB模塊,加強特征提取能力。
具體操作流程如圖4所示。
選取表1中表現效果最好的Shuffle模塊(Shuffle3)作為后續實驗基礎,與增加多級特征融合模塊后的算法性能進行對比,結果如表2所示。
針對淺層特征信息丟失嚴重的問題,對VGG16 網絡中base 層進行修改,引入了Conv3_3 層特征進行檢測。但由于Conv3_3 為低層信息,含有語義信息較少,直接用作特征檢測層時容易導致模型不收斂,并且可能出現梯度爆炸的情況。因此,后接改進的RFB 模塊和Normalization層來豐富淺層特征信息,提升算法的收斂速度和魯棒性。

表1 Shuffle模塊中不同特征層選取對算法性能的影響

表2 增加特征融合模塊后的算法性能對比
改進的RFB 模塊是在原算法RFB-S 模塊的基礎上增大感受野,更加關注感受野中心。改進后的RFB模塊如圖5所示。
改進后的RFB模塊算法實現步驟是:
步驟1 通過7 個分支的卷積將通道數變為原來的1/7,接著通過3組分別為3×1和1×3的卷積在提升網絡深度的同時減少計算量。
步驟2 通過4組膨脹系數分別為1、3、5、7的膨脹卷積來增大感受野,并將經過這4組膨脹卷積后的特征圖通過Concatenation的方式融合至初始通道數,后接1×1卷積保證充分融合。
步驟3 通過ShortCut 的方式給非線性的卷積層增加直連來提高信息的傳播效率,與前面經過融合后的特征進行Eltwise-SUM操作。
步驟4 使用ReLU函數作為激活函數進行訓練。
Normalization層即L2-normalization操作,數學表達式為:

可以通過該操作將尺度數據歸一化到一定的范圍,保持多尺度間的相對關系。但如果僅僅將特征的模長縮放到剛好等于1的長度,會使得學習到的特征值變得很小,網絡難以訓練,于是引入scale_filter 參數將特征值放大20倍,以增強算法的魯棒性,加快網絡收斂速度。
增加淺層特征層Conv3_3,刪除深層特征層Conv12_3,并引入改進后的RFB 模塊的算法性能結果如表3 所示。實驗結果顯示,通過引入淺層Conv3_3 層,增加改進的RFB 模塊及Normalization 層,可以在保證網絡收斂的前提下有效降低網絡對小尺度行人目標的漏檢率,提升檢測效果;由于Conv12_2特征層尺度太小,分辨率太低,對圖像中原本就占比較小的行人目標檢測較為困難,去掉該特征層后對算法的漏檢率無影響,且計算速度更快。
第2章對現有RFB網絡進行了改進,提出了LS-RFB網絡,但由于評測中評價指標與回歸損失函數評價指標不等價,容易造成不易收斂等問題。因此本章引入基于交并比和中心點距離的DIoU Loss 和DIoU NMS 對回歸損失函數和非極大抑制算法進行改進。

圖5 改進后的RFB模塊

表3 改進后的算法性能影響

表4 損失函數改進對算法性能的影響
原網絡中回歸損失函數采用SmoothL1函數:

雖然SmoothL1函數相較于傳統回歸損失函數有較大改善,但是在行人檢測任務中,還是有一定的局限性:
(1)SmoothL1應用于行人檢測任務時,是分別對Bounding Box的4個點的損失進行計算之后求和,得到最終的回歸損失。其假設前提是4個點相互獨立,對于在實際應用中,有關聯性的點其收斂效果并不好。
(2)行人檢測的實際評價指標IoU 和用SmoothL1來判斷的方法不等價。實際情況中會出現多個檢測框與真實框具有相同大小的SmoothL1損失,但是IoU 間差異較大的問題,導致收斂方向錯誤。
基于上述對SmoothL1函數的分析,本文引入最新工作成果DIoU Loss[10]對原算法的SmoothL1函數進行替換。DIoU Loss是基于現有成果GIoU Loss[11]改進得到的最新算法。
DIoU Loss表達式如下:

最后一項定義為預測框和真實框之間的懲罰項,其中b 和bgt分別表示預測框和真實框的中心點,ρ 表示歐式距離,c 表示預測框真實框的最小外接矩形的對角線距離。
DIoU 在具有尺度不變性的基礎上,通過懲罰項直接優化了兩個框間的直接距離,特別是在水平和垂直方向以及預測框被目標框包圍時,相對于原始回歸損失函數能夠對算法進行更好更快的收斂。
在原始的非極大值抑制(Non-Maximum Suppression,NMS)中,使用IoU指標抑制多余的檢測框,但由于只考慮了重疊區域交并比,在多個預測框有包含關系的情況下,常會導致錯誤的抑制,因此本文使用DIoU 作為NMS的標準,不僅考慮了重疊區域交并比,還考慮了中心點的距離。
設m 為預測框中置信度最高的一個,DIoU NMS可以表示為:

其中,si為分類置信度,ε 為NMS的閾值,Bi為同時考慮到IoU以及兩預測框中心點的距離。通過DIoU NMS可以更好地判斷多預測框間關系,減少錯誤的抑制。
為了驗證引入DIoU Loss 和DIoU NMS 后對網絡性能的影響,本節進行了對比實驗,實驗結果見表4。可見,引入改進后的損失函數使算法性能相較于第2章的算法在小尺度行人漏檢率上提升了2.4 個百分點,在平均漏檢率上提升了1.1個百分點。
Caltech[12]行人數據集采集自常規街景道路中車載攝像頭拍攝的大約10小時的分辨率為640×480,幀率為30幀的視頻。視頻中行人遮擋較多、姿態多樣、尺度較小、分辨率低,非常適合用作復雜道路場景下小尺度行人檢測數據集。Caltech行人數據集共包含35萬個行人標注框和2 300 個不同的行人,分為11 個子集,其中set00~set05 為訓練集,set06~set10 為測試集。尺度為Near scale(高度大于80 像素)的有56 000 個行人標注框,尺度為Medium scale(高度在30 至80 像素間)的有241 500個行人標注框,尺度為Far scale(高度小于等于30 像素)的有52 500 個行人標注框。Caltech 行人數據集圖片及標記示例如圖6所示。

圖6 Caltech行人數據集及標記示例
去掉數據集中無行人圖片后再對圖片進行隔幀抽取,得到訓練集22 364張,測試集3 247張。
本文算法實驗環境如表5所示。

表5 實驗環境參數
預訓練模型采用VGG16 網絡上的模型vgg16_reducedfc 作為預訓練模型,輸入圖片大小為512×512,數據集格式為VOC 格式,模型匹配正樣本時設置閾值為0.5,Batch Size設置為8,動量大小設置為0.9,非極大抑制值設置為0.45。訓練Epoch 最大值設置為80。學習率初始化采用適應性學習率的方法,從0.000 001 開始,到Epoch 為8 時,逐步增長至0.001,并且在50/60/70個Epoch 時逐步降低學習率,衰減系數為0.1,前60 個Epoch每隔20個Epoch保存一次,最后20個Epoch每隔5 個Epoch 保存一次,選取最后20 個Epoch 中最好結果作為算法最終結果。使用隨機梯度下降法進行網絡參數優化,權值衰減為0.000 5。
為驗證本文提出算法的有效性,首先相對于原算法RFBNet 進行比較,得到的測試結果如圖7 所示。相較于RFBNet 算法,本文算法在Caltech 行人數據集上,總體行人和小尺度行人的漏檢率分別降低了4.7%與9.0%,大大提升了原算法針對小尺度行人的檢測效果。

圖7 RFBNet與本文算法在Caltech上評價曲線圖
其次,將本文算法與現有知名行人檢測算法進行漏檢率及檢測速度比較,如圖8 及表6 所示。其中VJ[13]、HOG[14]、ChnFtrs[15]為 傳 統 行 人 檢 測 算 法,F-DNN[16]、MS-CNN[17]、FasterRCNN+ATT[18]、SSD、RFBNet 為基于卷積神經網絡的行人檢測算法。可以看出:首先,基于深度學習的行人檢測算法在總體漏檢率上大幅領先傳統算法。但在小尺度行人檢測中,受制于多種原因,漏檢率普遍較高,與傳統檢測算法相比,差距不大。其次,在總體漏檢率上,本文算法排名第三,相較于排名第一的F-DNN 算法由于沒有在除Caltech 外的ETH[19]、TudBrussels Data[20]等多個數據集上進行訓練,導致總體漏檢率高于F-DNN7.5%。但是在小尺度行人檢測結果中,本算法的漏檢率低于F-DNN6.4%。最后,從檢測速度來看,本文算法對單張圖片的平均檢測時間為36 ms,相對于F-DNN算法檢測速度快近5倍,在保證精度的前提下,相較于其他算法具有最快的檢測速度,完全滿足復雜道路環境下實時檢測的要求。能獲得如此優異的實驗指標是因為:首先本文采用了基于直接分類回歸的檢測算法,相較于FasterRCNN+ATT等基于候選區域的Two-Stage方法,檢測速度提升明顯;其次本文通過反向融合的方式將多尺度特征圖通道間Shuffle后的深層特征組多級融合到淺層,經過前面通道Shuffle模塊后,深層特征間全局語義信息已經較為充分地混合,淺層特征不用逐級與深層特征混合也可以獲得較多的信息,保證了檢測速度。由此證明本文針對小尺度行人檢測的改進算法是切實有效的。

圖8 各算法在Caltech上評價曲線圖

表6 各算法速度比較

圖9 小尺度行人檢測結果對比

圖10 密集場景檢測結果對比

圖11 遮擋場景檢測結果對比

圖12 模糊場景行人檢測結果對比
在復雜道路場景中,小尺度行人由于離攝像頭距離較遠,常會存在尺度較小、密集出現、遮擋嚴重、圖像模糊的情況,為驗證本文算法改進效果,選取Caltech行人數據集中不同場景,針對上述情況進行效果驗證。如圖9~圖12 所示,左列為原RFBNet 算法檢測結果,右列為本文算法檢測結果。圖9中,針對遠處人行道上小尺度行人表現出更好的檢測性能,同時也檢出了第二張圖右邊部分遮擋的行人。圖10 中,由于圖中主要是尺寸較小且分布密集的行人,原算法檢測不全,而改進算法全部檢出。圖11 中,改進算法針對被汽車及廣告牌部分遮擋的小尺度行人表現出更好的適應性。圖12 中,由于圖像質量問題造成的行人邊緣模糊,改進算法也能更好地檢測。由此可見,本文改進算法不僅針對小尺度行人性能提升較大,且對遮擋、密集、模糊等場景具有更好的魯棒性。
本文提出的面向復雜道路場景小尺度行人的實時檢測算法主要進行了以下幾點改進和創新:(1)選取目標檢測模型(RFBNet)中的深層特征通道進行Shuffle,利用反向融合的方式將深層語義信息和淺層位置及紋理等幾何信息進行有效融合;(2)根據小尺度行人數據集的特點,在兼顧檢測效果和速度的前提下,引入VGG16 中的Conv3_3,并新增改進后的RFB 模塊,增強其感受野的同時保證收斂性;(3)針對評測和回歸損失函數中評價指標不等價問題,基于交并比和中心點距離對回歸損失函數進行改進。與原算法相比,本文算法能在保證實時性檢測的基礎上,顯著降低小尺度行人檢測漏檢率,并對遮擋、密集、模糊等場景具有更好的魯棒性。
雖然本文提出的算法針對小尺度行人檢測問題的準確率有一定提升,但是與實際應用仍然有一定距離,未來準備針對骨干網絡進行優化,選取或者設計更輕量且特征提取能力更強的骨干網絡;同時準備通過引入熱力圖數據集等多維度圖像數據集增加圖像輔助信息,提高模型的泛化能力。