文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.04.001
中文引用格式: 朱笛,,張文權(quán),蔡行,,等. 手機(jī)ADAS:基于OpenCL的車道線檢測應(yīng)用評估[J].電子技術(shù)應(yīng)用,,2017,43(4):3-6,,12.
英文引用格式: Zhu Di,,Zhang Wenquan,Cai Xing,,et al. Mobile ADAS: an evaluation on OpenCL based lane detect application[J].Application of Electronic Technique,,2017,43(4):3-6,,12.
0 引言
先進(jìn)駕駛輔助系統(tǒng)(Advancend Driving Assistant System,,ADAS)常用于提高駕駛體驗以及駕駛安全性,例如自適應(yīng)定速巡航系統(tǒng)[1]與智能速度調(diào)節(jié)系統(tǒng)[2]能有效減少司機(jī)的勞動以及交通事故,。由于ADAS對計算能力需求較高,,通常運(yùn)行在特殊的處理單元中,這類車載電子設(shè)備行業(yè)中分為車載前裝,、后裝,。其中后裝市場中的Mobileye,能提示司機(jī)車道偏離以及提示車距過近,。盡管在過去數(shù)十年里,,ADAS技術(shù)高速發(fā)展[3],各類前裝,、后裝ADAS產(chǎn)品的價格仍然是個大問題,。
如今,移動設(shè)備計算能力的高速發(fā)展以及GPU在手機(jī)片上系統(tǒng)(System on Chip,,SoC)上的集成使得在手機(jī)上運(yùn)行高計算需求的任務(wù)成為可能[4-5],。此外,智能手機(jī)配置的高清相機(jī)以及便于交互的觸摸屏,以及其低廉的價格,,非常適合運(yùn)行基于視覺的手機(jī)ADAS應(yīng)用[6],。不僅如此,在高通即將發(fā)布的驍龍835 SoC上已經(jīng)支持Tensorflow機(jī)器學(xué)習(xí)框架,,能通過手機(jī)運(yùn)行基于深度學(xué)習(xí)的ADAS應(yīng)用,。
目前,業(yè)界主要使用FPGA以及GPU的并行能力,,加速科學(xué)計算,。在業(yè)界,主要包括Nvidia支持的CUDA以及OpenCL兩個計算框架,。相較于CUDA只支持在Nvidia的顯卡上運(yùn)行,,OpenCL框架提供了異構(gòu)并行計算的解決方案,其中包括FPGA,、GPU,、CPU,,尤其是其支持手機(jī)GPU,。按照OpenCL API編寫的內(nèi)核函數(shù),能在處理核心(如:GPU,、FPGA等設(shè)備)上并行運(yùn)行,。通過OpenCL框架,能充分利用手機(jī)GPU進(jìn)行異構(gòu)并行計算[7-9],,進(jìn)而高效運(yùn)行部分基于視覺的ADAS應(yīng)用,。雖然iOS上的Metal框架與OpenCL比較類似,但目前而言,,只有安卓系統(tǒng)支持基于OpenCL的應(yīng)用,。
基于性能評估的需要,本文選擇了3款手機(jī),,分別為:小米5(Mi 5),、紅米Note2(Redmi Note 2)、華為榮耀6(Honor 6),。這三款手機(jī)囊括了市面上常見的SoC廠商(高通,、聯(lián)發(fā)科、華為),,均集成了支持OpenCL的GPU,;同時,這三款手機(jī)均位于1 000~2 000人民幣的區(qū)間,,能表現(xiàn)手機(jī)ADAS的價格低,、實用的特點。
1 安卓應(yīng)用設(shè)計與優(yōu)化
本文及本應(yīng)用中所使用的車道線檢測算法來自文獻(xiàn)[10,11],,此處不再贅述,。選擇上述算法的原因如下:(1)并行性:上述算法主要基于粒子濾波,在預(yù)處理,、車道線檢測,、車道下跟蹤的過程都可并行化處理;(2)可調(diào)性:該算法對于車道線檢測的準(zhǔn)確度可通過粒子濾波的粒子數(shù),、采樣數(shù)等參數(shù)調(diào)節(jié),。在手機(jī)上運(yùn)行時,可以基于手機(jī)配置調(diào)節(jié)車道線檢測的精度與效率,。在該車道線檢測算法中,,包括兩個調(diào)節(jié)參數(shù):Np,粒子濾波中粒子的數(shù)量;Nc,,粒子濾波中重采樣過程中候選線的數(shù)量,。通常而言,Np與Nc越大,,車道檢測的準(zhǔn)確率就越高,,但也意味著更高的計算量、更多的計算時間,。
1.1 應(yīng)用設(shè)計
為了對比實驗的需要,,需要為本應(yīng)用提供CPU運(yùn)行模式以及CPU-GPU運(yùn)行模式。分別表示車道線算法單純運(yùn)行在手機(jī)CPU上,;車道線算法通過OpenCL框架,,運(yùn)行在GPU上進(jìn)行并行加速。
為了在安卓手機(jī)上使用基于C/C++的OpenCL框架,,在應(yīng)用開發(fā)時需要使用Java原生接口(Java Native Interface,,JNI)。開發(fā)工具包括Eclipse與安卓原生開發(fā)套件(Android Native Develop Kit, NDK),。首先,,通過開放計算語言(Open Computing Language,OpenCL)框架與開放計算機(jī)視覺(Open Computer Vsion,,OpenCV)編寫車道線檢測的C/C++代碼,;再使用NDK對其進(jìn)行編譯;再于編寫安卓應(yīng)用時,,通過JNI調(diào)用上述編譯好的C/C++內(nèi)核函數(shù),。在運(yùn)行該應(yīng)用之前需要安裝OpenCV4Android到手機(jī)上,以提供OpenCV的庫文件,。對于本OpenCL安卓應(yīng)用運(yùn)行描述,,如文獻(xiàn)[12]所示,,應(yīng)用從Java代碼端開始,通過JNI調(diào)用執(zhí)行C/C++代碼,,進(jìn)一步調(diào)用OpenCL框架的函數(shù),,完成初始化過程,再次返回C/C++層進(jìn)行數(shù)據(jù)的填充,,隨后通過GPGPU驅(qū)動交由手機(jī)GPU進(jìn)行計算,,最后返回結(jié)果至Java層供進(jìn)一步使用(主要是在屏幕上顯示)。
1.2 應(yīng)用優(yōu)化
由于上述車道線檢測算法,,主要用于桌面級平臺,,將其移植至移動平臺后,針對手機(jī)計算能力以及內(nèi)存較小的特點,,進(jìn)行了針對優(yōu)化,。
在OpenCL框架中,工作組大小,,亦即數(shù)據(jù)分割程度,,與多處理核心的利用率直接相關(guān)[13],在本應(yīng)用中,,針對各家手機(jī)GPU廠商的特點,,對工作組大小進(jìn)行優(yōu)化。其中根據(jù)Imagination與Mali公司的指引,,工作組大小為128或256時,,能充分利用處理核心的性能[14-15]。通過實驗,,發(fā)現(xiàn)在三款手機(jī)中工作組為128與256時,三家廠商SoC的處理時間均較低,,而榮耀6在工作組為256時,,處理時間反而上升了,如圖1所示,。為了兼容更多的硬件,,本文選擇128作為工作組大小。
在手機(jī)平臺上,,內(nèi)存的大小與帶寬均低于桌面級平臺[16],。然而,相較于桌面級平臺GPU擁有獨自的內(nèi)存,,手機(jī)GPU與CPU共享集成在SoC上的內(nèi)存,。在桌面級GPU運(yùn)行OpenCL與CUDA時,將數(shù)據(jù)從主內(nèi)存拷貝到顯卡內(nèi)存進(jìn)行運(yùn)算,,再將結(jié)果從顯卡內(nèi)存拷貝回主內(nèi)存中,,即需要內(nèi)存拷貝操作,。為了充分利用手機(jī)SoC片上內(nèi)存的特點,通過內(nèi)存映射的機(jī)制,,即通過“map()”與“unmap()”操作,,將部分片上內(nèi)存的擁有者分配為GPU或CPU。通過這種方式,,使用內(nèi)存映射而不是內(nèi)存拷貝的機(jī)制,,將圖片數(shù)據(jù)從CPU的片上內(nèi)存映射到OpenCL的內(nèi)核中,并將OpenCL車道線檢測運(yùn)算的結(jié)果,映射回CPU,,實現(xiàn)零拷貝,。在手機(jī)上使用內(nèi)存拷貝與內(nèi)存映射機(jī)制時處理幀率如圖2所示,圖中,,橫坐標(biāo)為粒子數(shù)Np,,縱坐標(biāo)為幀每秒;對于Np<=29,Nc=29,,否則Nc=212,。使用內(nèi)存映射機(jī)制各幀的處理速度更為穩(wěn)定,并且明顯高于使用內(nèi)存拷貝機(jī)制,。
所以本文通過修改合適工作組以及使用內(nèi)存映射代替內(nèi)存拷貝的機(jī)制,,對上述的車道線檢測算法進(jìn)行優(yōu)化。
2 實驗結(jié)果
如上文引言所述,,在上述三款手機(jī)上,,進(jìn)行了對比實驗。其硬件配置如表1所示,,囊括了中國市場上三家SoC廠商的系列:高通驍龍,、聯(lián)發(fā)科、華為海思,。同時,,這也涵蓋了三大手機(jī)GPU IP核提供商:高通、Imagination,、ARM,。同時,這三款GPU都提供了對OpenCL的支持,,其中高通Adreno 530完整地支持OpenCL 2.0,,Imagination PowerVR G6200支持嵌入式OpenCL 1.2,ARM Mali T628 MP4完整地支持OpenCL 1.1,。不同版本OpenCL對于部分?jǐn)?shù)據(jù)類型有優(yōu)化,,此處以O(shè)penCL 1.1版本的特性為準(zhǔn)。同時,,這三款手機(jī)的電池容量也相近,。實驗過程中,,使用本文實現(xiàn)的基于OpenCL的車道線檢測,對性能與能耗進(jìn)行比較,。
2.1 精確度與幀率
精確度是車道線檢測的基本要求,,該車道線檢測算法使用不同調(diào)節(jié)參數(shù)Np、Nc時對應(yīng)的準(zhǔn)確度已經(jīng)在FPGA以及桌面級GPU上已經(jīng)檢測過了[10],,此處通過判斷不同粒子數(shù)Np下,,各手機(jī)的車道線檢測幀率是否滿足使用需求。同時,,也比較了不同CPU模式以及CPU-GPU模式(即使用OpenCL框架進(jìn)行并行加速)下的情況,,如圖3所示,圖中,,橫坐標(biāo)為粒子數(shù)Np,,縱坐標(biāo)為幀每秒;對于Np<=29,,Nc=29,,否則Nc=212??梢园l(fā)現(xiàn),,在最高效果Np=8×29,Nc=212時,,在CPU-GPU模式下,,除了紅米Note2約30 fps以外,另外兩款平臺均在40 fps以上,,幀率最多降低了33%,;而CPU模式均明顯低于20 fps,幀率降低了約67%,。對于沒有使用GPU并行計算的GPU模式而言,,下降十分顯著??梢奜penCL并行計算框架在高計算量時,加速效果十分顯著,。此外,,Np=27,Nc=29時,,能滿足日常使用需求[10],,此時,CPU模式與CPU-GPU模式處理速度均在40 fps以上,。故該車道線檢測應(yīng)用在滿足精度要求的情況下,,仍然能夠高速地運(yùn)行,,同時,使用OpenCL并行加速的CPU-GPU模式能在高精度要求的情況下高速運(yùn)行,。
2.2 能耗統(tǒng)計與分布
若使用手機(jī)ADAS進(jìn)行駕駛輔助耗電量很大的話,,用戶無法忍受下車的時候手機(jī)電量所剩無幾,所以該車道線應(yīng)用對續(xù)航的影響是個很重要的問題,。對此,,對本車道線檢測應(yīng)用進(jìn)行了電量消耗測試。為了盡可能地控制變量,,如上文所述,,本文選擇的三款平臺電池容量相當(dāng),約3 000 mAh,??紤]到電池老化問題,選擇了三臺全新的手機(jī)進(jìn)行實驗,。為了模擬在車上使用本手機(jī)ADAS應(yīng)用進(jìn)行車道線檢測的環(huán)境,,通過屏幕播放行車記錄儀的數(shù)據(jù),分別使用三臺手機(jī)分別在CPU模式下,、CPU-GPU模式下,,使用手機(jī)攝像頭獲取圖像進(jìn)行車道線檢測,并記錄電池使用時間,。實驗過程中無其他后臺程序,,車道線檢測參數(shù)為Np=27,Nc=29,,同時三臺手機(jī)屏幕的亮度均調(diào)至最高,。其運(yùn)行結(jié)果如圖4所示,能發(fā)現(xiàn),,基本上都能在屏幕亮度最高的情況下使用2.5 h以上,。同時,使用OpenCL加速在高通驍龍與華為海思兩款SoC上增加0.5 h使用電量,,而對于紅米Note2兩個模式的電池使用時間都較為接近,。
其中,三款手機(jī)兩個模式下的能耗分布如表2所示,,數(shù)據(jù)來源于安卓系統(tǒng)提供的電池使用情況,。能夠發(fā)現(xiàn),使用OpenCL框架進(jìn)行并行計算的CPU-GPU模式,,應(yīng)用所消耗電量低于單純使用CPU計算的CPU模式,。即,在本車道線檢測應(yīng)用中,,使用OpenCL框架加速,,也能降低電量的使用,。在實際車上應(yīng)用該手機(jī)ADAS時,還可以通過降低屏幕亮度以及使用車載電源充電的方式,,延長電池使用時間,,保障手機(jī)用戶的體驗。
3 結(jié)論
本文在安卓平臺上使用了OpenCL框架,,實現(xiàn)了車道線檢測的手機(jī)ADAS應(yīng)用,。根據(jù)三款支持OpenCL框架的手機(jī)的實驗結(jié)果,手機(jī)能提供足夠計算性能以及續(xù)航能力用于車道線檢測,。如今移動安卓手機(jī)已經(jīng)集成了高性能的SoC以及高分辨率的相機(jī),,十分適合基于視覺的ADAS手機(jī)應(yīng)用。市面上也有部分雙攝像頭的手機(jī),,未來或許可應(yīng)用基于雙目視覺的ADAS應(yīng)用,。不僅如此,隨著支持Tensorflow深度學(xué)習(xí)框架的驍龍835的上市,,手機(jī)上將有更多支持深度學(xué)習(xí)的硬件集成,。在不久的將來,將可以看到基于深度學(xué)習(xí)的ADAS應(yīng)用運(yùn)行在手機(jī)上,。
參考文獻(xiàn)
[1] JURGEN R K.Adaptive cruise control[J].Automotive News Europe,,2005,55(6):1943-1947.
[2] VAHIDI A,,ESKANDARIAN A.Research advances in intel-ligent collision avoidance and adaptive cruise control[J].IEEE Transactions on Intelligent Transportation Systems,,2003,4(3):143-153.
[3] BERNHART W,,WINTERHOFF M.Autonomous driving: disruptive innovation that promises to change the automotive industry as we know[C].Energy Consumption and Autonomous Driving,,2016,16(6):3-10.
[4] HEWENER H,,TRETBAR S.Mobile ultrafast ultrasound imaging system based on smartphone and tablet devices[C].Ultrasonics Symposium.IEEE,,2015:1-4.
[5] THABET R,MAHMOUDI R,,BEDOUI M H.Image processing on mobile devices:An overview[C].Image Processing,,Applications and Systems Conference.IEEE,2014:1-8.
[6] PETROVAI A,,DANESCU R,,NEDEVSCHI S.A stereovision based approach for detecting and tracking lane and forward obstacles on mobile devices[C].Intelligent Vehicles Symposium.IEEE,2015:634-641.
[7] ROSS J A,,RICHIE D A,PARK S J,,et al.A case study of OpenCL on an Android mobile GPU[C].High Performance Extreme Computing Conference.IEEE,,2014:1-6.
[8] BACKES L,,RICO A,F(xiàn)RANKE B.Experiences in speeding up computer vision applications on mobile computing platforms[C].International Conference on Embedded Computer Systems:Architectures,,Modeling,,and Simulation.IEEE,2015:1-8.
[9] WANG G,,XIONG Y,,YUN J,et al.Accelerating computer vision algorithms using OpenCL framework on the mobile GPU-A case study[C].IEEE International Conference on Acoustics,,Speech and Signal Processing.IEEE,,2013:2629-2633.
[10] HUANG K,HU B,,BOTSCH J,,et al.A scalable lane detection algorithm on COTSs with OpenCL[C].Design,Automation & Test in Europe Conference & Exhibition.IEEE,,2016:229-232.
[11] ACOSTA A,,ALMEIDA F.Parallel Implementations of the Particle Filter Algorithm for Android Mobile Devices[C].Euromicro International Conference on Parallel,Distributed and Network-Based Processing.IEEE,,2015:244-247.
[12] KO Y,,YI S,YI Y,,et al.Hardware-in-the-loop simulation of Android GPGPU applications[C].Embedded Systems for Real-time Multimedia,,IEEE,2014.
[13] ANDARGIE F A,,ROSE J.Performance characterization of mobile GP-GPUs[C].AFRICON.IEEE,,2015:1-6.
[14] Berkeley Design Technology Institute,Implementing computer vision functions with opencl on the qualcomm adreno 420[DB/OL]. [2017-02-28]http://www.bdti.com/MyBDTI/pubs/ComputerVision_OpenCL_Adreno420.pdf.
[15] Imagination Technology Limited,,Building Heterogeneous Systems with PowerVR OpenCL Programmers Reference[DB/OL].[2017-02-28].https://www.imgtec.com/down-loads/building-heterogeneous-systems-with-powervr-opencl-programmers-reference/.
[16] LEE J K,,LEE J Y.Android programming techniques for improving performance[C].Awareness Science and Techno-logy(iCAST),2011 3rd International Conference on.IEEE,,2011:386-389.
作者信息:
朱 笛,,張文權(quán),蔡 行,,黃 凱
(中山大學(xué) 數(shù)據(jù)科學(xué)與計算機(jī)學(xué)院 無人系統(tǒng)研究所,,廣東 廣州510006)