張洋碩 苗壯 王家寶 李陽
摘 要:Movidius神經(jīng)計算棒是基于USB模式的深度學習推理工具和獨立的人工智能加速器,為廣泛的移動和嵌入式視覺設備提供專用深度神經(jīng)網(wǎng)絡加速功能。針對深度學習的嵌入式應用,實現(xiàn)了一種基于Movidius神經(jīng)計算棒的近實時行人目標檢測方法。首先,通過改進RefineDet目標檢測網(wǎng)絡結構使模型大小和計算適應嵌入式設備的要求;然后,在行人檢測數(shù)據(jù)集上對模型進行重訓練,并部署于搭載Movidius神經(jīng)計算棒的樹莓派上;最后,在實際環(huán)境中對模型進行測試,算法達到了平均每秒4幀的處理速度。實驗結果表明,基于Movidius神經(jīng)計算棒,在計算資源緊張的樹莓派上可完成近實時的行人檢測任務。
關鍵詞:行人檢測;深度學習;樹莓派;Movidius;嵌入式設備
中圖分類號:?TP183; TP391.4
文獻標志碼:A
Pedestrian detection method based on Movidius neural computing stick
ZHANG Yangshuo*, MIAO Zhuang, WANG Jiabao, LI Yang
College of Command and Control Engineering, Army Engineering University, Nanjing Jiangsu 210007, China
Abstract:?Movidius neural computing stick is a USB-based deep learning inference tool and a stand-alone artificial intelligence accelerator that provides dedicated deep neural network acceleration for a wide range of mobile and embedded vision devices. For the embedded application of deep learning, a near real-time pedestrian target detection method based on Movidius neural computing stick was realized. Firstly, the model size and calculation were adapted to the requirements of the embedded device by improving the RefineDet target detection network structure. Then, the model was retrained on the pedestrian detection dataset and deployed on the Raspberry Pi equipped with Movidius neural computing stick. Finally, the model was tested in the actual environment, and the algorithm achieved an average processing speed of 4 frames per second. Experimental results show that based on Movidius neural computing stick, the near real-time pedestrian detection task can be completed on the Raspberry Pi with limited computing resources.
Key words:?pedestrian detection; deep learning; Raspberry Pi; Movidius; embedded device
0 引言
行人檢測是目標檢測的重要分支,可用于多種不同領域,如視頻監(jiān)控、人員識別和智能汽車駕駛系統(tǒng)。在現(xiàn)實生活中,由于視頻或圖像中行人姿態(tài)、物體遮擋、服裝、燈光變化和復雜背景的多樣性,行人檢測在計算機視覺中仍是一個具有挑戰(zhàn)性的任務。近年來,深度學習極大地推動了行人檢測技術的發(fā)展,在計算機視覺領域引起了廣泛的關注;但是,深度學習中的行人檢測模型在面向實際應用時還存在著諸多問題亟待解決。
行人檢測根據(jù)處理過程一般可以分解為生成候選窗口、特征提取和特征分類三個步驟。經(jīng)典的行人檢測方法通常使用基于滑動窗口的方法生成候選窗口,使用梯度方向直方圖(Histogram of Oriented Gradients, HOG)[1]或尺度不變特征變換(Scale-Invariant Feature Transform, SIFT)[2]作為特征,并使用支持向量機(Support Vector Machine, SVM)或自適應集成分類器(AdaBoost)作為特征分類方法;但這些方法大多基于手工特征,刻畫的是低層次信息,缺乏對行人高層次語義信息的描述。近年來,隨著深度學習技術的發(fā)展,深度神經(jīng)網(wǎng)絡已被廣泛應用于行人檢測任務。與傳統(tǒng)方法不同的是,深度學習通過深層卷積網(wǎng)絡操作抽取圖像的高級語義信息來描述行人,具有更好的描述能力。與此同時,伴隨計算機硬件性能的不斷提高,行人檢測算法也在不斷優(yōu)化。郭愛心等[3]在更快、更富有特征層次的卷積神經(jīng)網(wǎng)絡(Faster Regions with Convolutional Neural Network feature, Faster R-CNN)通用目標檢測框架[4]的基礎上,針對行人特點提出了行人區(qū)域建議網(wǎng)絡;針對小尺度行人特征信息不足,提出了多層次特征提取和融合的方法;陳光喜等[5]通過設計一個網(wǎng)絡與統(tǒng)一的實時監(jiān)測目標檢測YOLOv2(You Only look Once)網(wǎng)絡[6]級聯(lián),解決了復雜環(huán)境下行人檢測不能同時滿足高召回率與高效率檢測的問題;徐超等[7]提出一種改進的基于卷積神經(jīng)網(wǎng)絡的行人檢測方法,使卷積神經(jīng)網(wǎng)絡能選擇出更優(yōu)模型并獲得定位更準確的檢測框;Hosang等[8]使用SquaresChnFtrs方法生成行人候選窗口并訓練AlexNet[9]進行行人檢測;Zhang等[10]使用區(qū)域提議網(wǎng)絡(Region Proposal Network, RPN)[4]來計算行人候選區(qū)域和級聯(lián)Boosted Forest[11]以執(zhí)行樣本重新加權來對候選區(qū)域進行分類;Li等[12]訓練多個基于Fast R-CNN[13]的網(wǎng)絡來檢測不同尺度的行人,并結合所有網(wǎng)絡的結果以產(chǎn)生最終結果。雖然上述工作對行人檢測進行很多探索,但是在面對實際應用時,卷積網(wǎng)絡模型還存在著模型大小、計算耗時等方面的問題。
本文將行人檢測算法放在搭載Movidius神經(jīng)計算棒(Neural Computational Stick, NCS) 的樹莓派上,來實現(xiàn)行人的快速檢測。樹莓派是一種計算資源緊張的設備,因此本文采用深度可分卷積對高精度的RefineDet網(wǎng)絡[14]進行改進,構建輕量級卷積神經(jīng)網(wǎng)絡。該網(wǎng)絡在選定的嵌入式視覺設備(Raspberry PI 3板)上的平均處理速度達到4幀/s(Frames Per Second, FPS)??紤]到有限的計算能力,它符合設計目標。因此,實時行人檢測任務可以通過僅執(zhí)行4FPS的檢測算法來完成。
本文的主要工作如下:
1)針對移動和嵌入式視覺設備的智能監(jiān)控,對RefineDet檢測網(wǎng)絡進行改進,構建一種輕量級卷積神經(jīng)網(wǎng)絡;
2)使用該網(wǎng)絡在資源受限的搭載Movidius神經(jīng)計算棒的樹莓派3上運行,以實現(xiàn)嵌入式設備的實時行人檢測。
1 改進的行人檢測網(wǎng)絡
1.1 行人檢測網(wǎng)絡框架
為了提高嵌入式視覺設備上運行目標檢測模型的效率,本文基于高精度的RefineDet,引入高效的深度可分卷積操作,采用類似MobileNet[15]結構來構建骨干網(wǎng)絡,改進后的L-RefineDet網(wǎng)絡架構如圖1所示。
該網(wǎng)絡架構主要包含三個部分:錨框細化模塊、傳遞連接模塊和目標檢測模塊。錨框細化模塊主要用來得到粗粒度的邊界框信息和去除一些負樣本,只對物體進行初步的分類和回歸,且分類只區(qū)分前景和背景;傳遞連接模塊是用于特征轉換操作。對高層次的特征進行反卷積操作,使得特征圖之間的尺寸匹配,然后與低層次的特征相加,使錨框細化模塊特征轉化為目標檢測模塊特征。目標檢測模塊用于將輸入的多層特征進行進一步的回歸和預測多分類標簽。
網(wǎng)絡架構采用MobileNet[15]中的conv11、conv13并在后面增加兩個卷積層Conv14_2,Conv15_2,共4個特征層作為特征抽取層,以獲得不同尺寸的特征。提取特征后進行融合操作,首先是Conv15_2特征層經(jīng)過一個傳遞連接模塊得到對應大小的矩形塊(P6),接著基于Conv14_2的矩形塊經(jīng)過傳遞連接模塊得到對應大小的矩形塊(P5),此處的傳遞連接模塊相比P6增加了反卷積支路,反卷積支路的輸入來自于生成P6的中間層輸出。P4和P3的生成與P5同理。
整體來看,一個子模塊提取粗粒度的邊界框信息,另一個子模塊進行細粒度的分類任務,因此能有更高的準確率,而且采用了特征融合,該算法對于小目標物體的檢測更有效。
1.2 網(wǎng)絡結構
網(wǎng)絡的輸入圖像尺寸為320×320,表1描繪了每層的網(wǎng)絡結構濾波器大小,其中Conv0至Conv13與MobileNet[15]中結構相同。為了處理不同尺寸的物體,總共提取4層特征用作檢測,即表1中名稱為Conv11、Conv13、Conv14_2、Conv15_2的特征層,尺寸分別是20×20、10×10、5×5、3×3。每個特征層與不同尺度的錨框相匹配,其中不同層次的錨框采用
單發(fā)多框目標檢測器 (Single Shot multibox Detector, SSD)[16]三種縱橫比設計。
為了增強模型的魯棒性,模型訓練時采用了隨機擴展、裁剪和翻轉等數(shù)據(jù)增強策略。在匹配步驟后,大多數(shù)錨框是負面的,為了緩解正負樣本不平衡問題,網(wǎng)絡的正負樣本界定的標準基本上和其他目標檢測算法類似,和真實的標注的交并比(Intersection-over-Union, IoU)超過閾值0.5的邊界框為正樣本,負樣本是根據(jù)邊界框的分類損失來選的,對分類損失進行降序排列,按照正負樣本1∶ 3的比例選擇損失靠前的負樣本。
1.3 深度可分卷積
改進網(wǎng)絡架構中的關鍵是深度可分卷積[15],因為它極大地降低了算法的復雜度,適用于嵌入式設備的應用。深度可分卷積[2]通過將每個常規(guī)卷積層分成兩部分:深度卷積層(depthwise convolution)和逐點卷積層(pointwise convolution),使計算復雜度更適合于的移動智能設備,其體系結構如圖2所示。
圖2比較了深度可分卷積和傳統(tǒng)卷積。傳統(tǒng)卷積輸入 F ∈ R Df×Df×M,其中Df×Df為圖像或特征圖大小和M輸入通道的個數(shù);輸出 G ∈ R Dg×Dg×M,其中Dg×Dg為輸出特征圖大小,N為輸出通道的個數(shù)。計算過程涉及到濾波器 K ∈ R Dk×Dk×M×N,其中Dk×Dk為濾波器核大小,M和N分別對應輸入和輸出通道的個數(shù)。計算過程如式(1):
G k,l,n=∑ i, j,m? K i, j,m,n⊙ F k+i-1,l+j-1,m
(1)
式(1)的計算復雜度如式(2):
O(conv)=Dk×Dk×M×N×Df×Df
(2)
深度可分卷積由兩部分組成:一個是深度卷積層,該層由M個濾波器{ K m∈ R Dk×Dk×1,m=1,2,…,M}組成,輸入 F ∈ R Df×Df×M,對每個通道計算輸出:
G m∈ R Dg×Dg×1; m=1,2,…,M
(3)
對M個輸出在第3個維度拼接:
G ′=cat ([ G 1, G 2,…, G M])∈ R Df×Df×M
(4)
另一個是逐點卷積層,該層由濾波器
Y ???^
∈ R 1×1×M×N組成,輸入 G ′∈ R Df×Df×M,輸出N個通道的特征圖結果 G ???^?? ∈ R Df×Df×N,計算過程如式(5):
G ???^?? k,l,n=∑ i, j,m
K ???^?? i, j,m,n
⊙ F k+i-1,l+j-1,m
(5)
深度可分卷積的計算復雜度如式(6):
O(depth)= Dk×Dk×M×N×Df×Df+N×M×Df×Df
(6)
深度可分卷積在每個卷積步驟之后,均接有一個批量標準化層和一個非線性激活的ReLU層。
基于式(2)和式(6),深度可分卷積和傳統(tǒng)卷積計算復雜度比較如式(7):
O(conv) O(depth) = 1 N + 1 D2k
(7)
深度可分卷積使網(wǎng)絡變得更快、更高效,非常適合移動和嵌入式視覺設備。
2 基于神經(jīng)計算棒的行人檢測
2.1 實驗裝置
2.1.1 樹莓派
上述改進模型最終部署于嵌入式視覺設備上,本文選用樹莓派3B+開發(fā)版,該開發(fā)板具備ARM v7 1.2 GHz處理器和1 GB RAM,計算能力一般,但其成本低、應用廣。
2.1.2 英特爾神經(jīng)計算棒
樹莓派計算能力有限,為了提升所提深度行人檢測模型的計算效率,采用Movidius神經(jīng)計算棒加速計算。NCS是英特爾推出的基于USB模式的加速設備,為計算能力不足的移動和嵌入式視覺設備提供深度學習加速功能。NCS不需要連接到云端,可以直接在本地編譯、部署,實現(xiàn)神經(jīng)網(wǎng)絡計算加速。Movidius神經(jīng)計算棒內置的Myriad 2 VPU提供了強大且高效的性能,支持在Tensorflow和Caffe框架上直接運行神經(jīng)網(wǎng)絡。
2.2 開發(fā)應用流程
本文采用Caffe框架來訓練模型,部署到搭載Movidius神經(jīng)計算棒的樹莓派上。NCS的環(huán)境分為兩部分:訓練端和測試端。
1) 訓練端為一臺帶GPU加速的主機,訓練Caffe模型,并編譯成NCS可以執(zhí)行的graph;
2) 測試端為一臺搭載Movidius的樹莓派開發(fā)板,運行編譯好的graph格式模型以檢測行人。
具體開發(fā)應用流程如圖3所示,主要包括三個步驟。
步驟1? 訓練。收集行人數(shù)據(jù)集,并在帶GPU運算能力的工作站或者服務器上進行訓練,得到Caffe格式的行人檢測模型。
步驟2? 編譯。NCS的VPU無法直接運行步驟1中訓練的Caffe模型,需要將模型轉化為VPU支持的專用文件格式(graph)。NCS提供了專門的工具,用于編譯、優(yōu)化Caffe模型。
步驟3? 預測。在樹莓派3B+嵌入式設備上部署graph格式行人檢測模型,加載graph文件到NCS執(zhí)行行人檢測。
步驟1和2通常在運行在訓練端,除訓練Caffe模型外,還安裝NCSDK編譯模塊mvNCCompile,用于將Caffe模型轉成NCS的graph;步驟3運行在測試端,安裝inference模塊,用來支持graph的運行。
2.3 模型訓練
標注完善、圖像質量高的PASCAL VOC數(shù)據(jù)集是計算機視覺領域中著名的數(shù)據(jù)集之一,包含日常生活中常見的20個類別,person就是其中一類。本文采用的數(shù)據(jù)集是基于PASCAL VOC 2007和PASCAL VOC 2012數(shù)據(jù)集提取只有person類別的目標圖片制作而成的VOC_person數(shù)據(jù)集,最終一共包含8000張訓練圖片和2600張驗證圖片,并將數(shù)據(jù)集轉化為LMDB格式文件以加快讀取速度。
本文使用Caffe深度學習框架來訓練模型。Caffe是一個高效的深度學習框架,支持命令行、Python以及Matlab程序接口。在訓練之前,通過計算每個RGB通道的平均值來對數(shù)據(jù)進行歸一化。所提出的模型采用隨機梯度下降法(Stochastic Gradient Descent, SGD)進行訓練,動量為0.9,衰減因子為00005。初始學習率為0.005,并使用multistep學習率衰減策略。在顯存為11GB的NVIDIA GTX1080Ti上訓練,整個訓練過程為200000次迭代。最終訓練出的權重文件大小可由302.6MB減小為62.6MB。
2.4 模型測試
將訓練好的caffemodel權重文件通過mvNCCompile模塊編譯成NCS 可執(zhí)行的graph,在測試端上進行測試。將graph加載到NCSDK中,推斷得到目標位置、類別、分數(shù)。
3 實驗結果與分析
實驗使用的檢測性能評價指標是平均每幅圖像誤檢率(False Positive Per Image, FPPI)[17],計算公式如下:
FPPI=FP/Nimg
(8)
其中: FPPI表示誤檢總數(shù);Nimg表示測試圖片總數(shù)。
表2顯示了本文算法L-RefineDet與其他行人檢測方法測試結果比較。其中包括不同算法在VOCperson數(shù)據(jù)集上的測試對比;不同算法在搭載Movidius的樹莓派上平均處理速度比較。
表2是本文算法L-RefineDet與其他行人檢測方法的測試結果。從實驗數(shù)據(jù)可以看出,本文算法L-RefineDet在VOCperson數(shù)據(jù)集上的FPPI為0.27,在搭載Movidius的樹莓派上平均處理速度達到4FPS,與其他行人檢測方法相比具有更高的精度和更快的速度。
表3是本文算法L-RefineDet與其他檢測模型大小的比較。與不采用深度可分卷積的RefineDet方法相比,本文算法L-RefineDet的模型更小,表明深度可分卷積能夠極大地降低算法的復雜度。
圖4為使用MobileNet-SSD檢測實時場景中行人的效果,圖5為改進的輕量級網(wǎng)絡在搭載Movidius神經(jīng)計算棒的樹莓派上處理實時場景中行人的效果,其中包括不同距離和角度的行人檢測、遮擋的行人檢測。
由圖4、5可以看出,從不同角度和距離捕捉人體對象對檢測算法具有很大挑戰(zhàn),當角度和距離不同時,不僅特征有所不同,而且有時人體只是部分可見或以不同的姿勢出現(xiàn)。MobileNet-SSD會對一些特殊角度的行人和小目標行人出現(xiàn)漏檢,同時對重疊行人出現(xiàn)漏報,L-RefineDet對行人檢測具有更好的魯棒性。 例如圖5(a)、(b)中,表明網(wǎng)絡對于小目標行人和不同角度的行人也有很好的檢測效果。圖5(c)中,表明網(wǎng)絡能夠區(qū)分重疊的行人。圖5(d)中,表明網(wǎng)絡能夠檢測出球門遮擋的行人。
4 結語
本文在嵌入式視覺設備下進行行人檢測的背景下,改進了一種輕量級的人體目標檢測算法,并在搭載Movidius神經(jīng)計算棒的樹莓派上運行。實驗結果表明該算法已經(jīng)達到了設計目標,取得了令人滿意的檢測速度和高準確度。但是單根NCS一次只能運行一個模型,可以考慮用多根NCS、多線程做檢測,以達到更高的速度。
參考文獻
[1]?TRIGGS B, DALAL N. Histograms of oriented gradients for human detection [C]// Proceedings of the 2018 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2005: 886-893.
[2]?LOWE D G. Object recognition from local scale-invariant features [C]// Proceedings of the 7th IEEE International Conference on Computer Vision. Piscataway, NJ: IEEE, 1999: 1150-1157.
[3]?郭愛心,殷保群,李運.基于深度卷積神經(jīng)網(wǎng)絡的小尺度行人檢測[J].信息技術與網(wǎng)絡安全,2018,37(7):50-53, 57. (GUO A X, YIN B Q, LI Y. Small-size pedestrian detection via deep convolutional neural network [J]. Information Technology and Network Security, 2018, 37(7): 50-53, 57.)
[4]?REN S, HE K, GIRSHICK R, et al. Faster R-CNN: towards real-time object detection with region proposal networks [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6):1137-1149.
[5]?陳光喜,王佳鑫,黃勇,等.基于級聯(lián)網(wǎng)絡的行人檢測方法[J].計算機應用,2019,39(1):186-191. (CHEN G X, WANG J X, HUANG Y, et al. Pedestrian detection method based on cascade networks [J]. Journal of Computer Applications, 2019, 39(1): 186-191.)
[6]?REDMON J, FARHADI A. YOLO9000: better, faster, stronger [C]// Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2017: 6517-6525.
[7]?徐超,閆勝業(yè).改進的卷積神經(jīng)網(wǎng)絡行人檢測方法[J].計算機應用,2017,37(6):1708-1715. (XU C, YAN S Y. Improved pedestrian detection method based on convolutional neural network [J]. Journal of Computer Applications, 2017,37(6): 1708-1715.)
[8]?BENENSON R, OMRAN M, HOSANG J, et al. Ten years of pedestrian detection, what have we learned? [C]// Proceedings of the 2014 European Conference on Computer Vision, LNCS 8926. Berlin: Springer, 2014: 613-627.
[9]?KRIZHEVSKY A, SUTSKEVER I, HINTON G E. ImageNet classification with deep convolutional neural networks [C]// Proceedings of the 2012 International Conference on Neural Information Processing Systems. North Miami Beach, FL: Curran Associates Inc, 2012: 1097-1105.
[10]?ZHANG L, LIN L, LIANG X, et al. Is Faster R-CNN doing well for pedestrian detection? [C]// Proceedings of the 2016 European Conference on Computer Vision, LNCS 9906. Cham: Springer, 2016: 443-457.
[11]??APPEL R, FUCHS T, DOLLR P. Quickly boosting decision? trees: pruning underachieving features early [C]// Proceedings of the 30th International Conference on Machine Learning. [S.l.]: JMLR, 2013, 28: III-594-III-602.
[12]?LI J, LIANG X, SHEN S, et al. Scale-aware Fast R-CNN for pedestrian detection [J]. IEEE Transactions on Multimedia, 2018, 20(4): 985-996.
[13]?GIRSHICK. R. Fast R-CNN [C]// Proceedings of the 2015 IEEE International Conference on Computer Vision. Piscataway, NJ: IEEE, 2015: 1440-1448.
[14]?ZHANG S, WEN L, BIAN X, et al. Single-shot refinement neural network for object detection [C]// Proceedings of the 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE, 2018: 4203-4212.
[15]?HOWARD A G, ZHU M, CHEN B, et al. MobileNets: efficient convolutional neural networks for mobile vision applications [J]. arXiv E-print, 2017: arXiv:1704.04861.?[2018-09-10]. https://arxiv.org/pdf/1704.04861.pdf.
[16]?LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector [C]// Proceedings of the 2016 European Conference on Computer Vision, LNCS 9905. Cham: Springer, 2016: 21-37.
[17]??WOJEK C, DOLLAR P, SCHIELE B, et al. Pedestrian detection: an evaluation of the state of the art [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2012, 34(4): 743-761.