王丹峰 陳超波 馬天力 李長紅 苗春雨
1(西安工業大學電子信息工程學院 陜西 西安 710021)
2(西北機電工程研究所 陜西 咸陽 712099)
隨著無人駕駛汽車和智能監控等應用領域的發展,行人檢測技術[1]也進入人們視野。行人檢測技術是指判斷輸入視頻或圖像數據中是否存在行人,并對行人所在位置進行標定。由于經典的行人檢測算法依賴手工設計特定的特征算子提取行人特征,導致該類算法泛化能力差無法適應行人的姿態變化,并且計算難度大,限制了該算法在實際領域的應用。近幾年來,神經網絡在行人檢測[2]領域取得突破性成果,是特征學習最有效的方法之一。
基于神經網絡的兩大類檢測算法分別為基于區域選擇的方法和基于邏輯回歸的方法。基于區域選擇的方法主要思路是通過區域預選方法獲取目標可能存在區域,再利用卷積神經網絡提取特征,最后對目標位置和類別進行預測,主要方法有R-CNN[3]、SPP-Net[4]、Fast R-CNN[5]和Faster R-CNN[6]等。R-CNN利用選擇性搜索方法[7](Selective Search)獲取目標預選區域,再將各區域統一尺寸并送入CNN網絡[8]提取其特征,最后使用多個支持向量機[9]分類器對提取特征進行分類并且通過邏輯回歸獲取目標位置,相比傳統算法性能有了較大改善,但是其存在大量的冗余計算,訓練復雜度高,并且由于預選區域尺寸需要調整,導致部分特征信息丟失。SPP-Net在R-CNN的基礎上增添了SSP層,能夠使任意尺寸的預選區域變成統一大小的特征向量,消除了預選區域形變過程導致的特征信息損失,但是其特征提取和SVM分類網絡的單獨訓練,增加了網絡訓練復雜度。Ross Girshick提出了Fast R-CNN算法,該算法結合SPP-Net思想改進R-CNN,將輸入數據只進行一次特征提取,通過映射關系獲取預選區域的特征信息,并且同時訓練整個網絡以更新網絡結構參數。雖然Fast R-CNN消除了SPP-Net中訓練復雜的問題,但是Selective Search導致算法速率較慢,預選區域質量較差。Faster R-CNN使用基于CNN的區域建議網絡(Region Proposal Networks,RPN)代替Selective Search獲取預選區域,CNN提取的深度特征信息保證了預選區域的質量,同時RPN的使用提高了檢測速率。
基于邏輯回歸的檢測方法主要思路是去除區域建議環節,利用設置默認的錨框獲取預選區域,并直接對錨框中物體的位置和類別進行預測,代表性方法有YOLO[10]、SSD[11]、YOLOv2[12]和YOLOv3[13]。YOLO是基于回歸思想的網絡模型,實現了模型的端到端的訓練并且速率較快,但是其對訓練集中不存在的目標尺度魯棒性差使得檢測精確率降低。SSD采用特征融合的思想將低層結構信息和高層語義信息融合,提高了目標檢測精確率。YOLOv2與YOLO相比,采用anchor box[14]機制在保證分類精度不變的情況下,提高物體定位精度,同時增加Batch Normalization[15]層簡化模型訓練難度和使用多尺度訓練策略提高模型的魯棒性。YOLOv3結合殘差結構[16]改進YOLOv2模型構成Darknet53分類網絡,并使用3個尺度特征圖進行預測目標類別和位置,達到了速率和準確率的平衡,但是模型參數量和計算量較大,并由于使用單一卷積核進行特征提取導致特征信息缺乏泛化性,導致訓練難度大、速率慢、準確率低和漏檢等問題。
本文在YOLOv3模型框架基礎上,使用參數量和計算復雜度低的深度可分離卷積替代標準卷積操作,利用Inception結構增加網絡寬度和復雜度,提出了基于深度可分離卷積的YOLOv3行人檢測算法。最后在VOC2007數據集訓練和測試,并通過不同算法效果比較對該算法進行評價。
YOLOv3檢測方法是目標檢測領域最有效的算法之一,YOLOv3算法融合了GoogleNet網絡橫向特征拼接的思想,網絡結構如圖1所示。

圖1 YOLOv3網絡結構圖
YOLOv3網絡結構可分為分類網絡和檢測網絡兩個部分。分類網絡是使用殘差網絡構成一個含有53個卷積層的Darknet53網絡,該網絡能夠提取更深層次的語義信息,對圖像進行更精確的分類;檢測網絡是在Darknet53分類網絡基礎上實現目標檢測的網絡結構,其采用FPN(Feature Pyramid Networks for Object Detection)[17]方法對3個不同尺度的特征圖進行檢測,實現多尺度檢測。
YOLOv3模型輸入為416×416的圖像數據,通過分類網絡和檢測網絡的卷積操作將輸入劃分為S×S的網格,每個網格使用3個錨框對其中的目標進行預測,輸出為S×S×3×(5+C)。其中包含檢測框的中心坐標和寬高的4個值和置信度值,S是劃分的網格數量,C是類別數量。最后使用非極大抑制[18]確定圖中目標最終的坐標信息和類別的預測值。
基于密集連接的YOLOv3算法在原算法基礎上進行改進,如圖2所示。該算法將網絡結構簡化為Darknet49,用于單類物體檢測;再利用4個不同尺度的特征圖進行檢測,在增加的104×104的特征圖中使用更精確地錨框,提高算法對小目標的檢測精度;最后結合密集連接的思想,將不同尺度特征圖通過上采樣方式互相融合,提高網絡對各層級特征信息的利用。因此該檢測算法更適用于特征像素較少的目標。

圖2 密集連接的多尺度檢測
深度可分離卷積(Depth-wise Separable Convolution,DSC)[18]是將標準卷積結構進行拆分的產物。標準卷積結構(圖3(a))是將輸入數據的每個通道與一個特定卷積核實行卷積操作,并將各通道的卷積結果相加的過程。在深度可分離卷積結構中(圖3(b)),輸入數據的各通道進行深度卷積操作,再使用點卷積線性連接深度卷積的輸出。該網絡結構能夠極大降低模型參數量以及計算量,從而在檢測精度沒有明顯變化的情況下,提高檢測速率。設輸入數據為M×M×N,卷積核為K×K×P,并且步長為1時,標準卷積參數量為:
WSC=K×K×N×P
(1)
且對應的計算量為:
OSC=M×M×K×K×N×P
(2)
深度可分離卷積的參數量為:
WDSC=K×K×N+N×P
(3)
且對應的計算量為:
ODSC=M×M×K×K×N+M×M×N×P
(4)
因此,兩種結構對應參數量和計算量的比分別為:
(5)
(6)

(a) 標準卷積

(b) 深度可分離卷積
Inception是對不同大小卷積核卷積結果進行拼接的一種結構,如圖4所示。主要使用1×1卷積對輸入實現降維,再利用3×3和5×5卷積核對特征圖提取不同尺寸的特征信息。該模塊在不增加計算量的條件下,增強網絡結構復雜度,便于提取更為豐富的特征用于檢測。而且該網絡能夠降低參數量,有利于防止過擬合問題。

圖4 Inception結構
YOLOv3中使用Darknet53作為分類網絡,雖然Darknet53利用殘差結構增加網絡結構的復雜度以提取更高層的語義信息用于提升目標檢測精度,同時,大量運用1×1卷積核降低輸出維度以減少3×3卷積過程中的參數量,但是在實時行人檢測中,標準卷積操作會產生大量參數,使得網絡訓練難度增加并且檢測速率降低。
為了提高行人檢測的速率和降低網絡訓練難度,本文使用一種參數量少并且計算復雜度低的深度可分離卷積對殘差結構進行改進,用于提取輸入數據特征。
本文提出的基于深度可分離卷積的殘差結構如圖5所示。第一個DBL模塊運用1×1卷積核提高輸入特征圖維度,并將其作為輸入進行步長為2的深度可分離卷積操作;然后利用1×1卷積層將上一層輸出線性連接,同時使用線性激活函數降低對特征信息的損壞;接著執行步長為1深度可分離卷積和線性激活的1×1卷積層;最后將第一個線性激活和第二個線性激活的輸出執行相加操作作為輸出。

圖5 基于深度可分離卷積殘差結構
盡管殘差網絡可以避免由于卷積層數增加導致的梯度爆炸問題,但是隨著網絡深度的提升會增添大量的訓練參數,加劇端到端網絡的反向傳播難度,所以不能通過擴張網絡深度增加網絡復雜度。同時由于YOLOv3目標檢測算法網絡結構中只有單一的3×3卷積層對輸入進行特征提取,導致網絡只能夠提取一種尺寸的信息從而降低檢測算法的精度。因此,本文提出一種利用Inception結構改進YOLOv3的檢測網絡的方法,通過擴展檢測算法網絡的寬度和運用不同尺寸的卷積核來增加網絡復雜度,以提高檢測精度。
本文利用Inception結構對檢測網絡中的5個DBL模塊進行了改進,如圖6所示。第一、三、五層同樣使用1×1DBL模塊對輸入進行降維操作;在第二、四層使用Inception結構提取輸入數據的特征,在3×3和5×5卷積操作的分支中都存在1×1的降維卷積層,因此使得網絡在不明顯增加參數量和計算量的前提下,提高算法精確度。

圖6 基于Inception結構的DBL模塊
基于深度可分離卷積的YOLOv3行人檢測算法的實驗是使用Python語言在開源的Darknet深度學習框架下進行的,電腦搭載I7處理器、16 GB RAM和RTX2080顯卡的配置以及Ubuntu操作系統。
本文使用VOC2007數據集進行行人檢測實驗。由于VOC2007數據集中有20種類別的標簽信息,因此通過數據清洗只保留person類別的標簽信息,并將清洗后的數據分為訓練集、驗證集和測試集。表1為VOC2007數據集中person類別的數量。

表1 VOC2007數據集中行人數量
本文對基于深度可分離卷積的YOLOv3模型進行訓練。在訓練過程中,反向傳播階段使用Gradient Descent進行優化,batch-size設為8,動量值為0.9,權重衰減設為0.005,設置學習率初始值為0.000 1,并通過學習率檢測機制調整學習率大小,epoch設為50,每3個epoch保存一次模型并且保存最后一次模型,最終選取loss最低的模型用于檢測。
圖7為模型訓練過程中損失函數值的曲線圖,可以看出,在前10次學習訓練集時,由于權重初始化為隨機值使得loss迅速下降;在后40次中對表達行人特征的權重進行微調,loss緩慢下降并最終趨于穩定,最小值為4.96。從收斂曲線來看,網絡模型訓練已達到預期效果。

圖7 損失函數曲線圖
本實驗將精確度(AP)和每秒處理幀數(FPS)作為所提模型的評價指標。精確度計算公式為:
(7)
式中:TP是真正標簽;FP是假正標簽。
用VOC2007測試集驗證所提模型對行人的檢測效果,部分測試集圖像檢測結果如圖8所示。可以看出,本文算法能夠對測試集中的行人精確地識別并且定位。

圖8 基于深度可分離卷積的YOLOv3檢測結果圖
本文將Faster R-CNN、SSD300、SSD512、YOLOv3和基于深度可分離卷積的YOLOv3算法在VOC2007數據集上實行訓練與測試,并得到FPS、精確率、參數量和計算量等技術指標,如表2所示。可以看出,本文算法精確率達90.3%,并且由于計算復雜度的降低,實現了65.34幀/s的檢測速率。

表2 不同方法技術指標對比
表2中Faster R-CNN算法獲得了79.1%的精確率,比本文改進YOLOv3算法低11.2%;在檢測速率方面該算法僅有13.56幀/s,與本文所提算法相差很大,并未達到實時檢測的標準。
SSD300和SSD512是基于高斯金字塔結構的檢測算法。SSD300算法的精確率為75.5%,檢測速率為59.34幀/s。對于SSD512算法,由于該算法增大輸入數據尺寸獲得更多的目標描述信息,并且增加了網絡計算復雜度,使得該算法相比SSD300算法精確率提高4.7%,速率降低為28.89幀/s,兩者與本文改進YOLOv3算法相比均沒有明顯優勢。
YOLOv3、密集連接改進算法和本文算法是基于回歸思想的檢測算法。在檢測精度方面,由于本文算法在檢測網絡中應用Inception結構,提取了更加豐富的特征信息用于目標檢測,因而精確率比原YOLOv3模型和密集連接分別高6.7%和2.2%;在檢測速率方面,因本文算法使用深度可分離卷積代替YOLOv3中的標準卷積,使得參數量和計算量分別降低為95×106和24.22×109,以至檢測速率比原YOLOv3模型和密集連接分別高16.64幀/s和12.03幀/s。從以上分析中可以看出,本文提出的基于深度可分離卷積的YOLOv3行人檢測算法相比YOLOv3具有更好的精度和檢測速率;相比于基于密集連接改進算法,在檢測速率上具有明顯優勢。
圖9顯示了YOLOv3、基于密集連接的改進算法和基于深度可分離卷積的YOLOv3行人檢測算法對相同圖像數據的檢測結果。可以發現,在發生遮擋情況下,本文算法可以更好地將遮擋部分的行人準確檢測。另外,本文算法和基于密集連接的改進算法對特征像素較少的目標都有很好的檢測效果。

(a) YOLOv3

(b) 基于密集連接的YOLOv3

(c) 基于深度可分離卷積的YOLOv3
本文提出了基于深度可分離卷積的YOLOv3行人實時檢測算法,使用深度可分離卷積取代Darknet網絡中的標準卷積,減少了參數量和計算量,從而提高了檢測速率和降低了模型訓練復雜度;同時,該算法將Inception結構融入檢測網絡,提高了網絡結構復雜度和行人檢測精度。在VOC2007數據集上實驗得出,該算法的運行速率達到65.34幀/s,精確度為90.3%。下一步將對Darknet53網絡中殘差結構與Inception結構進行結合,提高行人檢測準確度。