北方工業大學 韓 月 鄭 諧 朱書豪 宋 帥 張 鵬 王卓然
?
基于ARM的嵌入式行人檢測系統
北方工業大學 韓 月 鄭 諧 朱書豪 宋 帥 張 鵬 王卓然
【摘要】在現有的行人檢測算法的基礎上,本文在基于ARM的嵌入式系統下采用深度攝像機獲取場景的深度信息和彩色信息,使用距離信息的閾值分割方法確定行人頭肩部出現的區域,然后對頭肩部區域提取梯度直方圖特征并采用支持向量機對目標進行分類和識別。
【關鍵詞】ARM;行人檢測;JNI
行人檢測技術作為智能交通的核心技術,其研究始于20世紀90年代,且每年都有大量的研究成果出現。隨著計算機硬件和視頻采集設備的發展,該領域提出了很多具有代表性的行人檢測算法[1][2][3]。來自法國的研究人員Navneet Dalal和Bill Triggs[3]2005年在CVPR提出的基于梯度方向直方圖和支持向量機的行人檢測算法取得了很好的檢測效果,目前已成為行人檢測領域的經典算法之一。行人檢測技術在日常生活中、客流量統計、交通監視等領域有著非常重要的實用價值和廣闊的發展前景。
近年來,隨著視頻采集設備的不斷發展,在基于視頻的行人檢測領域出現了一種新方法——基于深度圖的行人檢測方法,其為客流檢測技術研究提供了一個全新的切入點。該方法通過攝像機從三維立體的角度描述真實場景的深度信息,且不受光照變化和陰影等對檢測結果的干擾。此外,還可以利用不同目標之間的距離信息有效地克服在平面圖像中容易出現的遮擋造成的影響[4][5][6]。
本文是基于ARM的嵌入式平臺下使用OpenCV開發的行人檢測算法,經過測試,取得了較好的效果。下面我們將在第二節介紹系統硬件,第三節中介紹算法在系統上的實現。第四節中介紹系統測試的結果。
ARM處理器,是Acorn計算機有限公司推出的一款RISC微處理器。ARM處理器不僅具有低功耗、低成本和高性能等優勢,同時具有CISC(Complex Instruction Set Computer)以及RISC(Reduced Instruction Set Computer)兩種體系架構,可以根據不同的需求來選擇使用不同的架構。此外,ARM處理器在新近推出的架構中可以同時支持ARM指令集和Thumb指令集,采用雙指令集可以更加有效地使用內存空間。目前,搭載ARM處理器架構的設備數量也遠遠超過了Intel,占領移動終端市場的絕大部分,目前市場上使用用戶較多的三星、HTC、iPhone以及所有的安卓手機都是基于ARM架構的。ARM處理器不僅在移動終端具有不可撼動的地位,在PC端也有了新的發展,2011年時微軟就宣布Windows將正式支持ARM處理器,目前windows8已可以同時支持ARM和X86兩種架構。
故采用ARM處理器的嵌入式系統就具有強大的數據處理能力,且基于ARM的嵌入式系統可以在Linux等眾多操作系統上進行開發,這使其具有極大的開發潛力。
Android,是一個以Linux為基礎的開源移動設備操作系統,主要用于智能手機和平板電腦,由Google成立的Open Handset Alliance(OHA,開放手持設備聯盟)持續領導與開發中。Android已發布的最新版本為Android 5.1。Android是基于Linux內核的綜合操作系統,由于其平臺開放性以及由此帶來的豐富的APP資源,使得Android系統獲得了眾多開發者和消費者的支持。目前,Android在手機市場已占有較大份額,且發展前景良好。體感是基于體感設備的一項新興技術,體感設備不僅可以獲取空間的深度信息,還可以在此基礎上進行即時動態捕捉、影像辨識等。本文應用RK3288型號的Android開發板與深度攝像頭在Android4.4的環境下進行行人檢測的開發。硬件搭建如圖1所示:

圖1 系統硬件搭建
本文中行人檢測系統通過深度攝像機獲取行人的深度信息和彩色信息,再利用OpenCV對深度圖像進行深度過濾和彩色圖像進行行人檢測。由于Android開發板的性能限制,本文使用JNI調用native層的行人檢測算法。JNI是Java Native Interface的縮寫,它是一種機制,可以在java程序中調用其他native代碼,或者使native代碼調用java層的代碼。可以使諸如C/C++等語言編寫的代碼可以與運行于Java虛擬機(JVM),從而提高某些關鍵模塊的效率。具體的行人檢測算法流程圖如圖2所示。

圖2 行人檢測算法流程圖
2.1深度圖像處理
深度圖像的預處理過程是先剔除由攝像頭誤差產生深度圖像的四個邊緣的錯誤信息,然后再進行開運算用來去除較小的明亮區域在纖細點處分離物體,這樣在平滑較大物體的邊界的同時并不明顯改變其面積。
由于深度圖像是將物體的距離值轉化為灰度值,而深度攝像機的有效距離為1m~7m,所以我們對灰度圖像設定一個合理的閾值,然后進行二值化處理以進行深度過濾。過濾后可以看到行人的輪廓,并根據輪廓大小提取矩形區域,最終在此矩形區域中進行深度圖像的行人檢測,圖3為獲取的深度圖像及其過濾結果。

圖3 深度圖像及其過濾結果
2.2彩色圖像處理
本文中行人檢測算法采用的是Navneet Dalal和Bill Triggs于2005年提出的基于梯度方向直方圖和支持向量機的行人檢測算法。方向梯度直方圖特征通過計算和統計圖像局部區域的梯度方向直方圖作為該局部圖像區域的表征,能夠對圖像的邊緣信息、顏色信息等進行綜合描述。經過對圖像HOG特征提取后,對所提取的特征進行SVM分類。SVM分類器的作用就是對不同的特征信息按照一定規則計算出能夠對這些特征進行最優分割的超平面,從而實現目標的分類識別。本文選取5000個包含頭肩特征的正樣本和10000個負樣本進行SVM訓練。訓練流程如圖4所示。

圖4 SVM分類器訓練的流程框圖
2.3檢測結果
對系統進行測試,得到如圖5的檢測結果。圖5(a)是對真實場景的深度圖像過濾后的結果,其中白色方框中的區域設定閾值分割,圖5(b)彩色圖像中藍色方框是取深度過濾的區域和HOG檢測結果的交集的最終結果。可以看出,系統功能運行正常,且達到了行人檢測系統應滿足的要求。

圖5 檢測結果
本文在現有行人檢測算法的基礎上,引入了體感技術,使用體感攝像頭作為空間的信息采集設備,設計并實現了基于ARM的嵌入式行人檢測系統,該系統有效地利用了Android所特有的JNI技術,對算法進行了優化,極大地提高了執行效率。本文中提出的行人檢測算法,通過采集大量的現場圖片并標記形成正負樣本訓練集,隨后提取正負樣本中人體頭肩部區域的HOG特征使用SVM分類器進行訓練,最后采用基于深度圖像的閾值分割方法,并結合SVM分類器對行人進行目標檢測識別。
參考文獻
[1]D.Geronimo,A.M.Lopez and A.D.Sappa,et al.Survey of pedestrian detection for advanced driverassistance systems[J].IEEE Transactionson Pattern Analysis and Machine Intelligenc e,2010,32(7):1239-1258.
[2]M.Enzweiler,and D.Gavrila.Monocular pedestrian detection:survey and experiments[J].IEEE Transactions on Pattern Analysis andMachine Intelligence,2009,31(12):2179-2195
[3]Dalal Navneet,Triggs Bill.Histograms of oriented gradients for human detection[C].Computer Vision and Pattern Recognition,2005.CVPR 2005.IEEE Computer Society Conference on.IEEE,2005,1:886-893.
[4]Nick C.Tang,Yen-Yu Lin,Ming-Fang Weng,and Hong-Yuan Mark Liao,Cross-Camera Knowledge Transfer for Multiview People Counting.IEEE Transactions on image processing,2015,24(1):80-93.
[5]D.Geronimo,and A.M.Lopez.Vision-based Pedestrian Protection Systems for Intelligent Vehicles,BOOK,2014.
[6]Ikemura S,Fujiyoshi H.Real-time human detection using relational depth similarity features[C].Computer Vision-ACCV 2010,Lecture Notes in Computer Science.Los Alamitos,CA,United States:IEEE,2011:25-38.
韓月(1993—),女,河南南陽人,北方工業大學碩士研究生,研究方向:基于視頻圖像的算法的深入研究。
作者簡介:
項目支持:2015年北京市大學生科學研究與創業行動計劃項目。