薛露 劉博翰
(1.廣東省科技基礎條件平臺中心 2.華南理工大學電子與信息學院)
基于分布場理論的行人檢測算法研究*
薛露1劉博翰2
(1.廣東省科技基礎條件平臺中心 2.華南理工大學電子與信息學院)
研究一種基于分布場理論的行人檢測算法,首先獲取深度圖像;其次混合高斯背景建模并初步提取運動行人前景;然后從前景中提取分布場后計算最小矩形包絡;最后提取行人。結合OpenCV現有的GPU庫對程序進行CUDA并行加速,并分別在PC平臺和嵌入式平臺NVIDIA Jetson TK1上實現。實驗結果表明:經過CUDA并行化后,程序在PC平臺和NVIDIA Jetson TK1平臺上都獲得了顯著加速效果。
行人檢測;分布場;CUDA
目前,視覺目標檢測與跟蹤是計算機視覺領域研究熱點之一,可應用于突發事件的物體跟蹤、視頻預警監控、人流跟蹤等社會安全和應急管理領域。有效提高目標的檢測速度是目標檢測效果的關鍵。行人檢測作為目標檢測的一個重要課題,具有算法復雜、計算量大等特點。隨著圖形處理器(graphic processing unit,GPU)的快速發展,基于GPU的目標檢測系統通過并行計算能夠極大提升計算速度。NVIDIA Jetson TK1是嵌入式GPU微型電腦,使用編程語言統一計算設備架構(compute unified device architecture,CUDA)進行驅動[1]。為達到實時檢測的要求,將GPU用于行人檢測是一種提升檢測速度的可行方案。本文研究一種基于分布場理論的行人檢測算法,并分別在PC平臺和NVIDIA Jetson TK1嵌入式開發平臺實現算法的CUDA并行加速,通過實驗數據分析,驗證經過CUDA并行化后,程序在不同平臺的加速效果,為目標檢測提供技術支持。
行人檢測算法基于分布場理論實現。分布場作為一種表示圖像的方法,其本質上是一個概率分布的數組[2],每個像素都是一個“場”。分布定義了一個像素取每一個特征值的概率。如果特征空間是灰度范圍內的強度,那么每個像素都是一個取值從0~255的概率分布。一個分布場代表一個(2+N)維的矩陣d,其前2維代表圖像的寬度和高度,另外的N維代表所選擇的特征空間。將一個圖像分解成分布場的結果是在每個像素點位置上的一個克羅內克函數。由此可知,分布場表示圖像的原始信息,同時還將圖像擴展到高維空間。
行人檢測算法通過深度攝像頭獲取深度圖像進行檢測,并將檢測結果反映到對應的彩色圖像上。首先,對獲取的深度圖進行腐蝕膨脹等預處理操作;其次,計算其分布場;然后,通過輪廓提取、計算矩形包絡等一系列圖像處理;最后,得到檢測結果。從數據格式來看,深度圖像屬于灰度圖像,其灰度值(0~255)反映了物體的深度信息,即與攝像頭距離的遠近?;叶戎翟礁撸矬w離攝像頭距離越近。程序從深度攝像頭獲取的深度圖像大小為320×240像素。為縮減數據規模,以8個灰度值為一層,那么一幀深度圖像計算得到的分布場規模為320×240×32像素。大規模矩陣運算通過CUDA并行加速,可提升檢測速度。行人檢測加速算法流程如圖1所示。

圖1 行人檢測加速算法流程
行人檢測加速算法采用開源計算機視覺庫(open source computer vision library,OpenCV)實現圖像處理與計算。為進一步利用GPU性能對程序進行加速,大部分OpenCV函數調用對應的GPU版本。分布場的計算通過編寫的CUDA kernel函數實現。OpenCV使用的圖像容器GpuMat可與kernel函數無縫對接。行人檢測加速算法計算過程:
1) 獲取圖像
采用華碩ASUS XtionPROLive深度攝像頭獲取深度圖像與彩色圖像。在算法中通過調用OpenNI庫中VideoFrameRef類的成員函數readFrame(),從設備獲取一幀深度圖像與一幀彩色圖像,并轉換成OpenCV的數據格式Mat。其中深度圖像的數據深度為CV_16UC1,彩色圖像的數據深度為CV_8UC3。深度圖像需進行歸一化處理,加強深度效果,彩色圖像需進一步將色彩空間轉換為BGR。獲取圖像流程如圖2所示。

圖2 獲取圖像流程
2) 圖像預處理
對得到的深度圖像進行預處理,初步提取行人。為調用GPU庫進行計算,首先創建GpuMat并將深度圖像上傳到顯存中,并調用GPU庫中的混合高斯背景建模MOG_GPU提取前景;然后對提取的前景圖像進行腐蝕膨脹處理,將圖像中的噪點濾除;處理后的圖像作為掩膜與原始深度圖像按位相與,即可從深度圖像中初步提取行人。預處理流程如圖3所示。

圖3 預處理流程
3) 計算分布場
程序中計算的分布場是320×240×32的三維矩陣。為便于訪問顯存,將其組織為32個320×240的二維矩陣并以8×4的形式合并存儲,如圖4所示。

圖4 分布場在顯存中的存儲形式
考慮硬件利用率問題,以16×16的形式組織每一個線程塊[3],整個線程網格的線程總數對應像素總數為320×240=76800,網格中一共有300個線程塊。用于計算分布場的CUDA核函數的線程網格如圖5所示。

圖5 CUDA核函數調用的線程網格結構
4) 分布場后處理
從顯存下載計算后的分布場,并對所有32層分布場的每一層都作同樣處理。以第layer層為例,首先從內存中提取出第layer層分布場數據;然后調用findContours函數對分布場提取輪廓;再使用boundingRect函數計算其最小矩形包絡[4],預設面積閾值minarea和寬高比閾值rectrate,用以判斷矩形包絡是否符合要求;最后使用groupRectangle函數對所有32層的計算結果進行矩形窗口合并,得到這一幀圖像的檢測結果。后處理流程如圖6所示。
為了驗證CUDA對行人檢測程序的加速效果,在PC和NVIDIA Jetson TK1開發平臺上分別運行基于分布場理論的行人檢測加速算法的串行版本程序(即未經CUDA加速的程序)和CUDA并行化的程序。PC平臺和NVIDIA Jetson TK1平臺統一使用華碩ASUS XtionPROLive作為深度攝像頭采集彩色圖像與深度圖像。PC平臺硬件參數如表1所示。NVIDIA
Jetson TK1的硬件參數如表2所示。

圖6 后處理流程

表1 PC平臺硬件參數

表2 NVIDIA Jetson TK1硬件參數
串行版本的程序和CUDA并行加速的程序在PC平臺和Jetson TK1平臺分別測試10次,記錄每次測試的平均每幀圖像處理時間(單位ms)。并計算PC平臺與Jetson TK1平臺的加速比S——即串行版本程序與CUDA并行加速程序的運行時間之比值。實驗結果如表3、算法性能對比如圖7所示。

圖7 算法性能對比

表3 實驗結果
從表3和圖7可知,PC平臺上的CUDA加速效果明顯,加速比為1.8140,即PC平臺上CUDA加速使算法的檢測速度提高了81.40%。同樣,在NVIDIA Jetson TK1平臺上也獲得較好的加速效果,加速比為1.4384。由圖7可以看到,經過CUDA加速后的行人檢測程序,在2個平臺上的運行速度基本一致。另外值得注意的是,同樣是串行版本的程序,在NVIDIA Jetson TK1平臺的檢測時間比在PC上快20.26%,這是因為在NVIDIA Jetson TK1平臺上使用的OpenCV版本是NVIDIA提供的Tegra專用版,針對Jetson平臺做了專門的優化和加速,因此可以獲得相比于PC平臺更快的處理速度。這也體現了使用NVIDIA Jetson TK1作為開發平臺的優勢之一。
檢測程序運行的效果如圖8所示。檢測程序從背景中分離出運動的行人以黑框標識為檢測結果。

圖8 行人檢測效果
由實驗結果可知,行人檢測算法經過CUDA并行化后,在PC平臺和NVIDIA Jetson TK1平臺上都獲得了較為顯著的加速效果。Jetson TK1平臺相比于PC平臺具有低功耗、可便攜的優勢,同時NVIDA官方提供了專門針對Jetson平臺優化的OpenCV庫及CUDA版本,能夠使程序性能獲得很好的提升。因此在該平臺上進行計算機視覺相關的開發具有長遠的應用前景。未來對復雜背景下的檢測精確度、進一步對程序并行化等進行深入研究。
[1] Wixson L. Detecting salient motion by accumulating directionally-consistent flow[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22(8): 774-780.
[2] Sevilla-Lara L, Learned-Miller E. Distribution fields for tracking[C]. IEEE Press, 2012: 1910-1917.
[3] Nicholas Wilt. CUDA專家手冊:GPU編程權威指南[M].蘇統華,馬培軍,劉曙,等,譯.北京:機械工業出版社, 2014: 148-165.
[4] Gary Bradski, Adrian Kaebler. 學習OpenCV [M].北京:清華大學出版社,2009: 38-48.
The Reasearch of Pedestrian Detection Algorithm Based on Distribution Field Theory
Xue Lu1Liu Bohan2
(1. Guangdong Science and Technology Infrastucture Center 2. South China University of Technology Institute of Electronics and Information)
This paper introduces a pedestrian detection algorithm based on distribution field theory. The algorithm firstly gains depth image from depth camera,extracts foreground and calculate its distribution field,finally extract the contour and calculate the minimum rectangle envelope to achieve pedestrian detection results. According to the high parallelism of the algorithm, the program is accelerated by CUDA as well as the GPU library of OpenCV and implemented on PC as well as NVIDIA Jetson TK1 platform. The experiment shows that this method is able to detect pedestrian from video sequence well, and the program speeds up significantly after CUDA acceleration on both PC and NVIDIA Jetson TK1 platform.
Pedestrian Detection; Distribution Field; CUDA
薛露,女,1987年生,碩士研究生,工程師,主要研究方向:算法研究、應急系統等。E-mail:1057845749@qq.com
廣東省科技基礎條件平臺中心,廣東省科技計劃項目-廣東省突發事件應急信息技術研究中心技術升級,項目編號2014A020219001。