文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.04.001
中文引用格式: 朱笛,張文權,,蔡行,,等. 手機ADAS:基于OpenCL的車道線檢測應用評估[J].電子技術應用,,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 引言
先進駕駛輔助系統(tǒng)(Advancend Driving Assistant System,,ADAS)常用于提高駕駛體驗以及駕駛安全性,,例如自適應定速巡航系統(tǒng)[1]與智能速度調(diào)節(jié)系統(tǒng)[2]能有效減少司機的勞動以及交通事故。由于ADAS對計算能力需求較高,,通常運行在特殊的處理單元中,,這類車載電子設備行業(yè)中分為車載前裝、后裝。其中后裝市場中的Mobileye,,能提示司機車道偏離以及提示車距過近,。盡管在過去數(shù)十年里,ADAS技術高速發(fā)展[3],,各類前裝,、后裝ADAS產(chǎn)品的價格仍然是個大問題。
如今,,移動設備計算能力的高速發(fā)展以及GPU在手機片上系統(tǒng)(System on Chip,,SoC)上的集成使得在手機上運行高計算需求的任務成為可能[4-5]。此外,,智能手機配置的高清相機以及便于交互的觸摸屏,,以及其低廉的價格,非常適合運行基于視覺的手機ADAS應用[6],。不僅如此,,在高通即將發(fā)布的驍龍835 SoC上已經(jīng)支持Tensorflow機器學習框架,能通過手機運行基于深度學習的ADAS應用,。
目前,,業(yè)界主要使用FPGA以及GPU的并行能力,加速科學計算,。在業(yè)界,,主要包括Nvidia支持的CUDA以及OpenCL兩個計算框架。相較于CUDA只支持在Nvidia的顯卡上運行,,OpenCL框架提供了異構并行計算的解決方案,,其中包括FPGA、GPU,、CPU,,尤其是其支持手機GPU。按照OpenCL API編寫的內(nèi)核函數(shù),,能在處理核心(如:GPU,、FPGA等設備)上并行運行。通過OpenCL框架,,能充分利用手機GPU進行異構并行計算[7-9],,進而高效運行部分基于視覺的ADAS應用。雖然iOS上的Metal框架與OpenCL比較類似,,但目前而言,,只有安卓系統(tǒng)支持基于OpenCL的應用。
基于性能評估的需要,,本文選擇了3款手機,,分別為:小米5(Mi 5),、紅米Note2(Redmi Note 2),、華為榮耀6(Honor 6),。這三款手機囊括了市面上常見的SoC廠商(高通、聯(lián)發(fā)科,、華為),,均集成了支持OpenCL的GPU;同時,,這三款手機均位于1 000~2 000人民幣的區(qū)間,,能表現(xiàn)手機ADAS的價格低、實用的特點,。
1 安卓應用設計與優(yōu)化
本文及本應用中所使用的車道線檢測算法來自文獻[10,,11],此處不再贅述,。選擇上述算法的原因如下:(1)并行性:上述算法主要基于粒子濾波,,在預處理、車道線檢測,、車道下跟蹤的過程都可并行化處理,;(2)可調(diào)性:該算法對于車道線檢測的準確度可通過粒子濾波的粒子數(shù)、采樣數(shù)等參數(shù)調(diào)節(jié),。在手機上運行時,,可以基于手機配置調(diào)節(jié)車道線檢測的精度與效率。在該車道線檢測算法中,,包括兩個調(diào)節(jié)參數(shù):Np,粒子濾波中粒子的數(shù)量,;Nc,粒子濾波中重采樣過程中候選線的數(shù)量,。通常而言,,Np與Nc越大,車道檢測的準確率就越高,,但也意味著更高的計算量,、更多的計算時間。
1.1 應用設計
為了對比實驗的需要,,需要為本應用提供CPU運行模式以及CPU-GPU運行模式,。分別表示車道線算法單純運行在手機CPU上;車道線算法通過OpenCL框架,,運行在GPU上進行并行加速,。
為了在安卓手機上使用基于C/C++的OpenCL框架,在應用開發(fā)時需要使用Java原生接口(Java Native Interface,,JNI),。開發(fā)工具包括Eclipse與安卓原生開發(fā)套件(Android Native Develop Kit, NDK),。首先,通過開放計算語言(Open Computing Language,,OpenCL)框架與開放計算機視覺(Open Computer Vsion,,OpenCV)編寫車道線檢測的C/C++代碼;再使用NDK對其進行編譯,;再于編寫安卓應用時,,通過JNI調(diào)用上述編譯好的C/C++內(nèi)核函數(shù)。在運行該應用之前需要安裝OpenCV4Android到手機上,,以提供OpenCV的庫文件,。對于本OpenCL安卓應用運行描述,如文獻[12]所示,,應用從Java代碼端開始,,通過JNI調(diào)用執(zhí)行C/C++代碼,進一步調(diào)用OpenCL框架的函數(shù),,完成初始化過程,,再次返回C/C++層進行數(shù)據(jù)的填充,隨后通過GPGPU驅(qū)動交由手機GPU進行計算,,最后返回結果至Java層供進一步使用(主要是在屏幕上顯示),。
1.2 應用優(yōu)化
由于上述車道線檢測算法,主要用于桌面級平臺,,將其移植至移動平臺后,,針對手機計算能力以及內(nèi)存較小的特點,進行了針對優(yōu)化,。
在OpenCL框架中,,工作組大小,亦即數(shù)據(jù)分割程度,,與多處理核心的利用率直接相關[13],,在本應用中,針對各家手機GPU廠商的特點,,對工作組大小進行優(yōu)化,。其中根據(jù)Imagination與Mali公司的指引,工作組大小為128或256時,,能充分利用處理核心的性能[14-15],。通過實驗,發(fā)現(xiàn)在三款手機中工作組為128與256時,,三家廠商SoC的處理時間均較低,,而榮耀6在工作組為256時,處理時間反而上升了,,如圖1所示,。為了兼容更多的硬件,,本文選擇128作為工作組大小。
在手機平臺上,,內(nèi)存的大小與帶寬均低于桌面級平臺[16],。然而,相較于桌面級平臺GPU擁有獨自的內(nèi)存,,手機GPU與CPU共享集成在SoC上的內(nèi)存,。在桌面級GPU運行OpenCL與CUDA時,,將數(shù)據(jù)從主內(nèi)存拷貝到顯卡內(nèi)存進行運算,,再將結果從顯卡內(nèi)存拷貝回主內(nèi)存中,即需要內(nèi)存拷貝操作,。為了充分利用手機SoC片上內(nèi)存的特點,,通過內(nèi)存映射的機制,即通過“map()”與“unmap()”操作,,將部分片上內(nèi)存的擁有者分配為GPU或CPU,。通過這種方式,使用內(nèi)存映射而不是內(nèi)存拷貝的機制,,將圖片數(shù)據(jù)從CPU的片上內(nèi)存映射到OpenCL的內(nèi)核中,,并將OpenCL車道線檢測運算的結果,映射回CPU,實現(xiàn)零拷貝,。在手機上使用內(nèi)存拷貝與內(nèi)存映射機制時處理幀率如圖2所示,,圖中,橫坐標為粒子數(shù)Np,,縱坐標為幀每秒;對于Np<=29,,Nc=29,否則Nc=212,。使用內(nèi)存映射機制各幀的處理速度更為穩(wěn)定,,并且明顯高于使用內(nèi)存拷貝機制。
所以本文通過修改合適工作組以及使用內(nèi)存映射代替內(nèi)存拷貝的機制,,對上述的車道線檢測算法進行優(yōu)化,。
2 實驗結果
如上文引言所述,在上述三款手機上,,進行了對比實驗,。其硬件配置如表1所示,囊括了中國市場上三家SoC廠商的系列:高通驍龍,、聯(lián)發(fā)科,、華為海思。同時,,這也涵蓋了三大手機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對于部分數(shù)據(jù)類型有優(yōu)化,此處以OpenCL 1.1版本的特性為準,。同時,,這三款手機的電池容量也相近。實驗過程中,,使用本文實現(xiàn)的基于OpenCL的車道線檢測,,對性能與能耗進行比較。
2.1 精確度與幀率
精確度是車道線檢測的基本要求,,該車道線檢測算法使用不同調(diào)節(jié)參數(shù)Np,、Nc時對應的準確度已經(jīng)在FPGA以及桌面級GPU上已經(jīng)檢測過了[10],此處通過判斷不同粒子數(shù)Np下,,各手機的車道線檢測幀率是否滿足使用需求,。同時,也比較了不同CPU模式以及CPU-GPU模式(即使用OpenCL框架進行并行加速)下的情況,,如圖3所示,,圖中,橫坐標為粒子數(shù)Np,,縱坐標為幀每秒,;對于Np<=29,Nc=29,,否則Nc=212,。可以發(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以上,。故該車道線檢測應用在滿足精度要求的情況下,,仍然能夠高速地運行,同時,,使用OpenCL并行加速的CPU-GPU模式能在高精度要求的情況下高速運行,。
2.2 能耗統(tǒng)計與分布
若使用手機ADAS進行駕駛輔助耗電量很大的話,用戶無法忍受下車的時候手機電量所剩無幾,,所以該車道線應用對續(xù)航的影響是個很重要的問題。對此,,對本車道線檢測應用進行了電量消耗測試,。為了盡可能地控制變量,如上文所述,,本文選擇的三款平臺電池容量相當,,約3 000 mAh??紤]到電池老化問題,,選擇了三臺全新的手機進行實驗。為了模擬在車上使用本手機ADAS應用進行車道線檢測的環(huán)境,,通過屏幕播放行車記錄儀的數(shù)據(jù),,分別使用三臺手機分別在CPU模式下、CPU-GPU模式下,,使用手機攝像頭獲取圖像進行車道線檢測,,并記錄電池使用時間。實驗過程中無其他后臺程序,,車道線檢測參數(shù)為Np=27,,Nc=29,同時三臺手機屏幕的亮度均調(diào)至最高,。其運行結果如圖4所示,,能發(fā)現(xiàn),基本上都能在屏幕亮度最高的情況下使用2.5 h以上,。同時,,使用OpenCL加速在高通驍龍與華為海思兩款SoC上增加0.5 h使用電量,,而對于紅米Note2兩個模式的電池使用時間都較為接近。
其中,,三款手機兩個模式下的能耗分布如表2所示,,數(shù)據(jù)來源于安卓系統(tǒng)提供的電池使用情況。能夠發(fā)現(xiàn),,使用OpenCL框架進行并行計算的CPU-GPU模式,,應用所消耗電量低于單純使用CPU計算的CPU模式。即,,在本車道線檢測應用中,,使用OpenCL框架加速,也能降低電量的使用,。在實際車上應用該手機ADAS時,,還可以通過降低屏幕亮度以及使用車載電源充電的方式,延長電池使用時間,,保障手機用戶的體驗,。
3 結論
本文在安卓平臺上使用了OpenCL框架,實現(xiàn)了車道線檢測的手機ADAS應用,。根據(jù)三款支持OpenCL框架的手機的實驗結果,,手機能提供足夠計算性能以及續(xù)航能力用于車道線檢測。如今移動安卓手機已經(jīng)集成了高性能的SoC以及高分辨率的相機,,十分適合基于視覺的ADAS手機應用,。市面上也有部分雙攝像頭的手機,未來或許可應用基于雙目視覺的ADAS應用,。不僅如此,,隨著支持Tensorflow深度學習框架的驍龍835的上市,手機上將有更多支持深度學習的硬件集成,。在不久的將來,,將可以看到基于深度學習的ADAS應用運行在手機上。
參考文獻
[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.
作者信息:
朱 笛,張文權,,蔡 行,,黃 凱
(中山大學 數(shù)據(jù)科學與計算機學院 無人系統(tǒng)研究所,廣東 廣州510006)