王丹峰 陳超波 馬天力 李長紅 苗春雨
1(西安工業(yè)大學電子信息工程學院 陜西 西安 710021)
2(西北機電工程研究所 陜西 咸陽 712099)
隨著無人駕駛汽車和智能監(jiān)控等應用領域的發(fā)展,行人檢測技術[1]也進入人們視野。行人檢測技術是指判斷輸入視頻或圖像數(shù)據(jù)中是否存在行人,并對行人所在位置進行標定。由于經(jīng)典的行人檢測算法依賴手工設計特定的特征算子提取行人特征,導致該類算法泛化能力差無法適應行人的姿態(tài)變化,并且計算難度大,限制了該算法在實際領域的應用。近幾年來,神經(jīng)網(wǎng)絡在行人檢測[2]領域取得突破性成果,是特征學習最有效的方法之一。
基于神經(jīng)網(wǎng)絡的兩大類檢測算法分別為基于區(qū)域選擇的方法和基于邏輯回歸的方法?;趨^(qū)域選擇的方法主要思路是通過區(qū)域預選方法獲取目標可能存在區(qū)域,再利用卷積神經(jīng)網(wǎng)絡提取特征,最后對目標位置和類別進行預測,主要方法有R-CNN[3]、SPP-Net[4]、Fast R-CNN[5]和Faster R-CNN[6]等。R-CNN利用選擇性搜索方法[7](Selective Search)獲取目標預選區(qū)域,再將各區(qū)域統(tǒng)一尺寸并送入CNN網(wǎng)絡[8]提取其特征,最后使用多個支持向量機[9]分類器對提取特征進行分類并且通過邏輯回歸獲取目標位置,相比傳統(tǒng)算法性能有了較大改善,但是其存在大量的冗余計算,訓練復雜度高,并且由于預選區(qū)域尺寸需要調整,導致部分特征信息丟失。SPP-Net在R-CNN的基礎上增添了SSP層,能夠使任意尺寸的預選區(qū)域變成統(tǒng)一大小的特征向量,消除了預選區(qū)域形變過程導致的特征信息損失,但是其特征提取和SVM分類網(wǎng)絡的單獨訓練,增加了網(wǎng)絡訓練復雜度。Ross Girshick提出了Fast R-CNN算法,該算法結合SPP-Net思想改進R-CNN,將輸入數(shù)據(jù)只進行一次特征提取,通過映射關系獲取預選區(qū)域的特征信息,并且同時訓練整個網(wǎng)絡以更新網(wǎng)絡結構參數(shù)。雖然Fast R-CNN消除了SPP-Net中訓練復雜的問題,但是Selective Search導致算法速率較慢,預選區(qū)域質量較差。Faster R-CNN使用基于CNN的區(qū)域建議網(wǎng)絡(Region Proposal Networks,RPN)代替Selective Search獲取預選區(qū)域,CNN提取的深度特征信息保證了預選區(qū)域的質量,同時RPN的使用提高了檢測速率。
基于邏輯回歸的檢測方法主要思路是去除區(qū)域建議環(huán)節(jié),利用設置默認的錨框獲取預選區(qū)域,并直接對錨框中物體的位置和類別進行預測,代表性方法有YOLO[10]、SSD[11]、YOLOv2[12]和YOLOv3[13]。YOLO是基于回歸思想的網(wǎng)絡模型,實現(xiàn)了模型的端到端的訓練并且速率較快,但是其對訓練集中不存在的目標尺度魯棒性差使得檢測精確率降低。SSD采用特征融合的思想將低層結構信息和高層語義信息融合,提高了目標檢測精確率。YOLOv2與YOLO相比,采用anchor box[14]機制在保證分類精度不變的情況下,提高物體定位精度,同時增加Batch Normalization[15]層簡化模型訓練難度和使用多尺度訓練策略提高模型的魯棒性。YOLOv3結合殘差結構[16]改進YOLOv2模型構成Darknet53分類網(wǎng)絡,并使用3個尺度特征圖進行預測目標類別和位置,達到了速率和準確率的平衡,但是模型參數(shù)量和計算量較大,并由于使用單一卷積核進行特征提取導致特征信息缺乏泛化性,導致訓練難度大、速率慢、準確率低和漏檢等問題。
本文在YOLOv3模型框架基礎上,使用參數(shù)量和計算復雜度低的深度可分離卷積替代標準卷積操作,利用Inception結構增加網(wǎng)絡寬度和復雜度,提出了基于深度可分離卷積的YOLOv3行人檢測算法。最后在VOC2007數(shù)據(jù)集訓練和測試,并通過不同算法效果比較對該算法進行評價。
YOLOv3檢測方法是目標檢測領域最有效的算法之一,YOLOv3算法融合了GoogleNet網(wǎng)絡橫向特征拼接的思想,網(wǎng)絡結構如圖1所示。
圖1 YOLOv3網(wǎng)絡結構圖
YOLOv3網(wǎng)絡結構可分為分類網(wǎng)絡和檢測網(wǎng)絡兩個部分。分類網(wǎng)絡是使用殘差網(wǎng)絡構成一個含有53個卷積層的Darknet53網(wǎng)絡,該網(wǎng)絡能夠提取更深層次的語義信息,對圖像進行更精確的分類;檢測網(wǎng)絡是在Darknet53分類網(wǎng)絡基礎上實現(xiàn)目標檢測的網(wǎng)絡結構,其采用FPN(Feature Pyramid Networks for Object Detection)[17]方法對3個不同尺度的特征圖進行檢測,實現(xiàn)多尺度檢測。
YOLOv3模型輸入為416×416的圖像數(shù)據(jù),通過分類網(wǎng)絡和檢測網(wǎng)絡的卷積操作將輸入劃分為S×S的網(wǎng)格,每個網(wǎng)格使用3個錨框對其中的目標進行預測,輸出為S×S×3×(5+C)。其中包含檢測框的中心坐標和寬高的4個值和置信度值,S是劃分的網(wǎng)格數(shù)量,C是類別數(shù)量。最后使用非極大抑制[18]確定圖中目標最終的坐標信息和類別的預測值。
基于密集連接的YOLOv3算法在原算法基礎上進行改進,如圖2所示。該算法將網(wǎng)絡結構簡化為Darknet49,用于單類物體檢測;再利用4個不同尺度的特征圖進行檢測,在增加的104×104的特征圖中使用更精確地錨框,提高算法對小目標的檢測精度;最后結合密集連接的思想,將不同尺度特征圖通過上采樣方式互相融合,提高網(wǎng)絡對各層級特征信息的利用。因此該檢測算法更適用于特征像素較少的目標。
圖2 密集連接的多尺度檢測
深度可分離卷積(Depth-wise Separable Convolution,DSC)[18]是將標準卷積結構進行拆分的產(chǎn)物。標準卷積結構(圖3(a))是將輸入數(shù)據(jù)的每個通道與一個特定卷積核實行卷積操作,并將各通道的卷積結果相加的過程。在深度可分離卷積結構中(圖3(b)),輸入數(shù)據(jù)的各通道進行深度卷積操作,再使用點卷積線性連接深度卷積的輸出。該網(wǎng)絡結構能夠極大降低模型參數(shù)量以及計算量,從而在檢測精度沒有明顯變化的情況下,提高檢測速率。設輸入數(shù)據(jù)為M×M×N,卷積核為K×K×P,并且步長為1時,標準卷積參數(shù)量為:
WSC=K×K×N×P
(1)
且對應的計算量為:
OSC=M×M×K×K×N×P
(2)
深度可分離卷積的參數(shù)量為:
WDSC=K×K×N+N×P
(3)
且對應的計算量為:
ODSC=M×M×K×K×N+M×M×N×P
(4)
因此,兩種結構對應參數(shù)量和計算量的比分別為:
(5)
(6)
(a) 標準卷積
(b) 深度可分離卷積
Inception是對不同大小卷積核卷積結果進行拼接的一種結構,如圖4所示。主要使用1×1卷積對輸入實現(xiàn)降維,再利用3×3和5×5卷積核對特征圖提取不同尺寸的特征信息。該模塊在不增加計算量的條件下,增強網(wǎng)絡結構復雜度,便于提取更為豐富的特征用于檢測。而且該網(wǎng)絡能夠降低參數(shù)量,有利于防止過擬合問題。
圖4 Inception結構
YOLOv3中使用Darknet53作為分類網(wǎng)絡,雖然Darknet53利用殘差結構增加網(wǎng)絡結構的復雜度以提取更高層的語義信息用于提升目標檢測精度,同時,大量運用1×1卷積核降低輸出維度以減少3×3卷積過程中的參數(shù)量,但是在實時行人檢測中,標準卷積操作會產(chǎn)生大量參數(shù),使得網(wǎng)絡訓練難度增加并且檢測速率降低。
為了提高行人檢測的速率和降低網(wǎng)絡訓練難度,本文使用一種參數(shù)量少并且計算復雜度低的深度可分離卷積對殘差結構進行改進,用于提取輸入數(shù)據(jù)特征。
本文提出的基于深度可分離卷積的殘差結構如圖5所示。第一個DBL模塊運用1×1卷積核提高輸入特征圖維度,并將其作為輸入進行步長為2的深度可分離卷積操作;然后利用1×1卷積層將上一層輸出線性連接,同時使用線性激活函數(shù)降低對特征信息的損壞;接著執(zhí)行步長為1深度可分離卷積和線性激活的1×1卷積層;最后將第一個線性激活和第二個線性激活的輸出執(zhí)行相加操作作為輸出。
圖5 基于深度可分離卷積殘差結構
盡管殘差網(wǎng)絡可以避免由于卷積層數(shù)增加導致的梯度爆炸問題,但是隨著網(wǎng)絡深度的提升會增添大量的訓練參數(shù),加劇端到端網(wǎng)絡的反向傳播難度,所以不能通過擴張網(wǎng)絡深度增加網(wǎng)絡復雜度。同時由于YOLOv3目標檢測算法網(wǎng)絡結構中只有單一的3×3卷積層對輸入進行特征提取,導致網(wǎng)絡只能夠提取一種尺寸的信息從而降低檢測算法的精度。因此,本文提出一種利用Inception結構改進YOLOv3的檢測網(wǎng)絡的方法,通過擴展檢測算法網(wǎng)絡的寬度和運用不同尺寸的卷積核來增加網(wǎng)絡復雜度,以提高檢測精度。
本文利用Inception結構對檢測網(wǎng)絡中的5個DBL模塊進行了改進,如圖6所示。第一、三、五層同樣使用1×1DBL模塊對輸入進行降維操作;在第二、四層使用Inception結構提取輸入數(shù)據(jù)的特征,在3×3和5×5卷積操作的分支中都存在1×1的降維卷積層,因此使得網(wǎng)絡在不明顯增加參數(shù)量和計算量的前提下,提高算法精確度。
圖6 基于Inception結構的DBL模塊
基于深度可分離卷積的YOLOv3行人檢測算法的實驗是使用Python語言在開源的Darknet深度學習框架下進行的,電腦搭載I7處理器、16 GB RAM和RTX2080顯卡的配置以及Ubuntu操作系統(tǒng)。
本文使用VOC2007數(shù)據(jù)集進行行人檢測實驗。由于VOC2007數(shù)據(jù)集中有20種類別的標簽信息,因此通過數(shù)據(jù)清洗只保留person類別的標簽信息,并將清洗后的數(shù)據(jù)分為訓練集、驗證集和測試集。表1為VOC2007數(shù)據(jù)集中person類別的數(shù)量。
表1 VOC2007數(shù)據(jù)集中行人數(shù)量
本文對基于深度可分離卷積的YOLOv3模型進行訓練。在訓練過程中,反向傳播階段使用Gradient Descent進行優(yōu)化,batch-size設為8,動量值為0.9,權重衰減設為0.005,設置學習率初始值為0.000 1,并通過學習率檢測機制調整學習率大小,epoch設為50,每3個epoch保存一次模型并且保存最后一次模型,最終選取loss最低的模型用于檢測。
圖7為模型訓練過程中損失函數(shù)值的曲線圖,可以看出,在前10次學習訓練集時,由于權重初始化為隨機值使得loss迅速下降;在后40次中對表達行人特征的權重進行微調,loss緩慢下降并最終趨于穩(wěn)定,最小值為4.96。從收斂曲線來看,網(wǎng)絡模型訓練已達到預期效果。
圖7 損失函數(shù)曲線圖
本實驗將精確度(AP)和每秒處理幀數(shù)(FPS)作為所提模型的評價指標。精確度計算公式為:
(7)
式中:TP是真正標簽;FP是假正標簽。
用VOC2007測試集驗證所提模型對行人的檢測效果,部分測試集圖像檢測結果如圖8所示??梢钥闯觯疚乃惴軌驅y試集中的行人精確地識別并且定位。
圖8 基于深度可分離卷積的YOLOv3檢測結果圖
本文將Faster R-CNN、SSD300、SSD512、YOLOv3和基于深度可分離卷積的YOLOv3算法在VOC2007數(shù)據(jù)集上實行訓練與測試,并得到FPS、精確率、參數(shù)量和計算量等技術指標,如表2所示??梢钥闯?,本文算法精確率達90.3%,并且由于計算復雜度的降低,實現(xiàn)了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算法,由于該算法增大輸入數(shù)據(jù)尺寸獲得更多的目標描述信息,并且增加了網(wǎng)絡計算復雜度,使得該算法相比SSD300算法精確率提高4.7%,速率降低為28.89幀/s,兩者與本文改進YOLOv3算法相比均沒有明顯優(yōu)勢。
YOLOv3、密集連接改進算法和本文算法是基于回歸思想的檢測算法。在檢測精度方面,由于本文算法在檢測網(wǎng)絡中應用Inception結構,提取了更加豐富的特征信息用于目標檢測,因而精確率比原YOLOv3模型和密集連接分別高6.7%和2.2%;在檢測速率方面,因本文算法使用深度可分離卷積代替YOLOv3中的標準卷積,使得參數(shù)量和計算量分別降低為95×106和24.22×109,以至檢測速率比原YOLOv3模型和密集連接分別高16.64幀/s和12.03幀/s。從以上分析中可以看出,本文提出的基于深度可分離卷積的YOLOv3行人檢測算法相比YOLOv3具有更好的精度和檢測速率;相比于基于密集連接改進算法,在檢測速率上具有明顯優(yōu)勢。
圖9顯示了YOLOv3、基于密集連接的改進算法和基于深度可分離卷積的YOLOv3行人檢測算法對相同圖像數(shù)據(jù)的檢測結果??梢园l(fā)現(xiàn),在發(fā)生遮擋情況下,本文算法可以更好地將遮擋部分的行人準確檢測。另外,本文算法和基于密集連接的改進算法對特征像素較少的目標都有很好的檢測效果。
(a) YOLOv3
(b) 基于密集連接的YOLOv3
(c) 基于深度可分離卷積的YOLOv3
本文提出了基于深度可分離卷積的YOLOv3行人實時檢測算法,使用深度可分離卷積取代Darknet網(wǎng)絡中的標準卷積,減少了參數(shù)量和計算量,從而提高了檢測速率和降低了模型訓練復雜度;同時,該算法將Inception結構融入檢測網(wǎng)絡,提高了網(wǎng)絡結構復雜度和行人檢測精度。在VOC2007數(shù)據(jù)集上實驗得出,該算法的運行速率達到65.34幀/s,精確度為90.3%。下一步將對Darknet53網(wǎng)絡中殘差結構與Inception結構進行結合,提高行人檢測準確度。