《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 手機(jī)ADAS:基于OpenCL的車道線檢測(cè)應(yīng)用評(píng)估
手機(jī)ADAS:基于OpenCL的車道線檢測(cè)應(yīng)用評(píng)估
2017年電子技術(shù)應(yīng)用第4期
朱 笛,張文權(quán),蔡 行,黃 凱
中山大學(xué) 數(shù)據(jù)科學(xué)與計(jì)算機(jī)學(xué)院 無人系統(tǒng)研究所,廣東 廣州510006
摘要: 先進(jìn)駕駛輔助系統(tǒng)(Advanced Driving Assistant System,ADAS)有利于提高駕駛安全性。如今,Open Computing Language(OpenCL)框架以及集成Graphics Processing Unit(GPU)手機(jī)的出現(xiàn),使得在手機(jī)上高效運(yùn)行ADAS應(yīng)用成為可能。基于OpenCL框架實(shí)現(xiàn)了ADAS最典型的一個(gè)功能——車道線檢測(cè),并運(yùn)行在三款手機(jī)上。通過比較該應(yīng)用的檢測(cè)準(zhǔn)確度、幀處理速度、應(yīng)用能效,根據(jù)實(shí)驗(yàn)結(jié)果手機(jī)設(shè)備非常適合運(yùn)行基于視覺的ADAS應(yīng)用。
中圖分類號(hào): TN919;U463.6
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.04.001
中文引用格式: 朱笛,張文權(quán),蔡行,等. 手機(jī)ADAS:基于OpenCL的車道線檢測(cè)應(yīng)用評(pí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.
Mobile ADAS: an evaluation on OpenCL based lane detect application
Zhu Di,Zhang Wenquan,Cai Xing,Huang Kai
Unmanned System Institute,School of Data and Computer Science, Sun Yat-sen University,Guangzhou 510006,China
Abstract: Advanced Driving Assistant System(ADAS) are important to increase driving safety. Nowadays, the Open Computing Language(OpenCL) framework and mobile devices integrated with Graphics Processing Unit(GPU) has made it possible to launch ADAS applications on mobile devices efficiently. In this paper, a typical ADAS lane detection application based on OpenCL framework is implemented and launched on three mobile devices. By evaluating the accuracy, processing frame speed and energy efficiency of this application, it's concluded that the mobile devices are suitable for ADAS applications.
Key words : ADAS;mobile phone;OpenCL;lane detection

0 引言

    先進(jìn)駕駛輔助系統(tǒng)(Advancend Driving Assistant System,ADAS)常用于提高駕駛體驗(yàn)以及駕駛安全性,例如自適應(yīng)定速巡航系統(tǒng)[1]與智能速度調(diào)節(jié)系統(tǒng)[2]能有效減少司機(jī)的勞動(dòng)以及交通事故。由于ADAS對(duì)計(jì)算能力需求較高,通常運(yùn)行在特殊的處理單元中,這類車載電子設(shè)備行業(yè)中分為車載前裝、后裝。其中后裝市場(chǎng)中的Mobileye,能提示司機(jī)車道偏離以及提示車距過近。盡管在過去數(shù)十年里,ADAS技術(shù)高速發(fā)展[3],各類前裝、后裝ADAS產(chǎn)品的價(jià)格仍然是個(gè)大問題。

    如今,移動(dòng)設(shè)備計(jì)算能力的高速發(fā)展以及GPU在手機(jī)片上系統(tǒng)(System on Chip,SoC)上的集成使得在手機(jī)上運(yùn)行高計(jì)算需求的任務(wù)成為可能[4-5]。此外,智能手機(jī)配置的高清相機(jī)以及便于交互的觸摸屏,以及其低廉的價(jià)格,非常適合運(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é)計(jì)算。在業(yè)界,主要包括Nvidia支持的CUDA以及OpenCL兩個(gè)計(jì)算框架。相較于CUDA只支持在Nvidia的顯卡上運(yùn)行,OpenCL框架提供了異構(gòu)并行計(jì)算的解決方案,其中包括FPGA、GPU、CPU,尤其是其支持手機(jī)GPU。按照OpenCL API編寫的內(nèi)核函數(shù),能在處理核心(如:GPU、FPGA等設(shè)備)上并行運(yùn)行。通過OpenCL框架,能充分利用手機(jī)GPU進(jìn)行異構(gòu)并行計(jì)算[7-9],進(jìn)而高效運(yùn)行部分基于視覺的ADAS應(yīng)用。雖然iOS上的Metal框架與OpenCL比較類似,但目前而言,只有安卓系統(tǒng)支持基于OpenCL的應(yīng)用。

    基于性能評(píng)估的需要,本文選擇了3款手機(jī),分別為:小米5(Mi 5)、紅米Note2(Redmi Note 2)、華為榮耀6(Honor 6)。這三款手機(jī)囊括了市面上常見的SoC廠商(高通、聯(lián)發(fā)科、華為),均集成了支持OpenCL的GPU;同時(shí),這三款手機(jī)均位于1 000~2 000人民幣的區(qū)間,能表現(xiàn)手機(jī)ADAS的價(jià)格低、實(shí)用的特點(diǎn)。

1 安卓應(yīng)用設(shè)計(jì)與優(yōu)化

    本文及本應(yīng)用中所使用的車道線檢測(cè)算法來自文獻(xiàn)[10,11],此處不再贅述。選擇上述算法的原因如下:(1)并行性:上述算法主要基于粒子濾波,在預(yù)處理、車道線檢測(cè)、車道下跟蹤的過程都可并行化處理;(2)可調(diào)性:該算法對(duì)于車道線檢測(cè)的準(zhǔn)確度可通過粒子濾波的粒子數(shù)、采樣數(shù)等參數(shù)調(diào)節(jié)。在手機(jī)上運(yùn)行時(shí),可以基于手機(jī)配置調(diào)節(jié)車道線檢測(cè)的精度與效率。在該車道線檢測(cè)算法中,包括兩個(gè)調(diào)節(jié)參數(shù):Np,粒子濾波中粒子的數(shù)量;Nc,粒子濾波中重采樣過程中候選線的數(shù)量。通常而言,Np與Nc越大,車道檢測(cè)的準(zhǔn)確率就越高,但也意味著更高的計(jì)算量、更多的計(jì)算時(shí)間。

1.1 應(yīng)用設(shè)計(jì)

    為了對(duì)比實(shí)驗(yàn)的需要,需要為本應(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ā)時(shí)需要使用Java原生接口(Java Native Interface,JNI)。開發(fā)工具包括Eclipse與安卓原生開發(fā)套件(Android Native Develop Kit, NDK)。首先,通過開放計(jì)算語言(Open Computing Language,OpenCL)框架與開放計(jì)算機(jī)視覺(Open Computer Vsion,OpenCV)編寫車道線檢測(cè)的C/C++代碼;再使用NDK對(duì)其進(jìn)行編譯;再于編寫安卓應(yīng)用時(shí),通過JNI調(diào)用上述編譯好的C/C++內(nèi)核函數(shù)。在運(yùn)行該應(yīng)用之前需要安裝OpenCV4Android到手機(jī)上,以提供OpenCV的庫文件。對(duì)于本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ū)動(dòng)交由手機(jī)GPU進(jìn)行計(jì)算,最后返回結(jié)果至Java層供進(jìn)一步使用(主要是在屏幕上顯示)。

1.2 應(yīng)用優(yōu)化

    由于上述車道線檢測(cè)算法,主要用于桌面級(jí)平臺(tái),將其移植至移動(dòng)平臺(tái)后,針對(duì)手機(jī)計(jì)算能力以及內(nèi)存較小的特點(diǎn),進(jìn)行了針對(duì)優(yōu)化。

    在OpenCL框架中,工作組大小,亦即數(shù)據(jù)分割程度,與多處理核心的利用率直接相關(guān)[13],在本應(yīng)用中,針對(duì)各家手機(jī)GPU廠商的特點(diǎn),對(duì)工作組大小進(jìn)行優(yōu)化。其中根據(jù)Imagination與Mali公司的指引,工作組大小為128或256時(shí),能充分利用處理核心的性能[14-15]。通過實(shí)驗(yàn),發(fā)現(xiàn)在三款手機(jī)中工作組為128與256時(shí),三家廠商SoC的處理時(shí)間均較低,而榮耀6在工作組為256時(shí),處理時(shí)間反而上升了,如圖1所示。為了兼容更多的硬件,本文選擇128作為工作組大小。

adas1-t1.gif

    在手機(jī)平臺(tái)上,內(nèi)存的大小與帶寬均低于桌面級(jí)平臺(tái)[16]。然而,相較于桌面級(jí)平臺(tái)GPU擁有獨(dú)自的內(nèi)存,手機(jī)GPU與CPU共享集成在SoC上的內(nèi)存。在桌面級(jí)GPU運(yùn)行OpenCL與CUDA時(shí),將數(shù)據(jù)從主內(nèi)存拷貝到顯卡內(nèi)存進(jìn)行運(yùn)算,再將結(jié)果從顯卡內(nèi)存拷貝回主內(nèi)存中,即需要內(nèi)存拷貝操作。為了充分利用手機(jī)SoC片上內(nèi)存的特點(diǎn),通過內(nèi)存映射的機(jī)制,即通過“map()”與“unmap()”操作,將部分片上內(nèi)存的擁有者分配為GPU或CPU。通過這種方式,使用內(nèi)存映射而不是內(nèi)存拷貝的機(jī)制,將圖片數(shù)據(jù)從CPU的片上內(nèi)存映射到OpenCL的內(nèi)核中,并將OpenCL車道線檢測(cè)運(yùn)算的結(jié)果,映射回CPU,實(shí)現(xiàn)零拷貝。在手機(jī)上使用內(nèi)存拷貝與內(nèi)存映射機(jī)制時(shí)處理幀率如圖2所示,圖中,橫坐標(biāo)為粒子數(shù)Np,縱坐標(biāo)為幀每秒;對(duì)于Np<=29,Nc=29,否則Nc=212。使用內(nèi)存映射機(jī)制各幀的處理速度更為穩(wěn)定,并且明顯高于使用內(nèi)存拷貝機(jī)制。

adas1-t2.gif

    所以本文通過修改合適工作組以及使用內(nèi)存映射代替內(nèi)存拷貝的機(jī)制,對(duì)上述的車道線檢測(cè)算法進(jìn)行優(yōu)化。

2 實(shí)驗(yàn)結(jié)果

    如上文引言所述,在上述三款手機(jī)上,進(jìn)行了對(duì)比實(shí)驗(yàn)。其硬件配置如表1所示,囊括了中國市場(chǎng)上三家SoC廠商的系列:高通驍龍、聯(lián)發(fā)科、華為海思。同時(shí),這也涵蓋了三大手機(jī)GPU IP核提供商:高通、Imagination、ARM。同時(shí),這三款GPU都提供了對(duì)OpenCL的支持,其中高通Adreno 530完整地支持OpenCL 2.0,Imagination PowerVR G6200支持嵌入式OpenCL 1.2,ARM Mali T628 MP4完整地支持OpenCL 1.1。不同版本OpenCL對(duì)于部分?jǐn)?shù)據(jù)類型有優(yōu)化,此處以O(shè)penCL 1.1版本的特性為準(zhǔn)。同時(shí),這三款手機(jī)的電池容量也相近。實(shí)驗(yàn)過程中,使用本文實(shí)現(xiàn)的基于OpenCL的車道線檢測(cè),對(duì)性能與能耗進(jìn)行比較。

adas1-b1.gif

2.1 精確度與幀率

    精確度是車道線檢測(cè)的基本要求,該車道線檢測(cè)算法使用不同調(diào)節(jié)參數(shù)Np、Nc時(shí)對(duì)應(yīng)的準(zhǔn)確度已經(jīng)在FPGA以及桌面級(jí)GPU上已經(jīng)檢測(cè)過了[10],此處通過判斷不同粒子數(shù)Np下,各手機(jī)的車道線檢測(cè)幀率是否滿足使用需求。同時(shí),也比較了不同CPU模式以及CPU-GPU模式(即使用OpenCL框架進(jìn)行并行加速)下的情況,如圖3所示,圖中,橫坐標(biāo)為粒子數(shù)Np,縱坐標(biāo)為幀每秒;對(duì)于Np<=29,Nc=29,否則Nc=212??梢园l(fā)現(xiàn),在最高效果Np=8×29,Nc=212時(shí),在CPU-GPU模式下,除了紅米Note2約30 fps以外,另外兩款平臺(tái)均在40 fps以上,幀率最多降低了33%;而CPU模式均明顯低于20 fps,幀率降低了約67%。對(duì)于沒有使用GPU并行計(jì)算的GPU模式而言,下降十分顯著??梢奜penCL并行計(jì)算框架在高計(jì)算量時(shí),加速效果十分顯著。此外,Np=27,Nc=29時(shí),能滿足日常使用需求[10],此時(shí),CPU模式與CPU-GPU模式處理速度均在40 fps以上。故該車道線檢測(cè)應(yīng)用在滿足精度要求的情況下,仍然能夠高速地運(yùn)行,同時(shí),使用OpenCL并行加速的CPU-GPU模式能在高精度要求的情況下高速運(yùn)行。

adas1-t3.gif

2.2 能耗統(tǒng)計(jì)與分布

    若使用手機(jī)ADAS進(jìn)行駕駛輔助耗電量很大的話,用戶無法忍受下車的時(shí)候手機(jī)電量所剩無幾,所以該車道線應(yīng)用對(duì)續(xù)航的影響是個(gè)很重要的問題。對(duì)此,對(duì)本車道線檢測(cè)應(yīng)用進(jìn)行了電量消耗測(cè)試。為了盡可能地控制變量,如上文所述,本文選擇的三款平臺(tái)電池容量相當(dāng),約3 000 mAh??紤]到電池老化問題,選擇了三臺(tái)全新的手機(jī)進(jìn)行實(shí)驗(yàn)。為了模擬在車上使用本手機(jī)ADAS應(yīng)用進(jìn)行車道線檢測(cè)的環(huán)境,通過屏幕播放行車記錄儀的數(shù)據(jù),分別使用三臺(tái)手機(jī)分別在CPU模式下、CPU-GPU模式下,使用手機(jī)攝像頭獲取圖像進(jìn)行車道線檢測(cè),并記錄電池使用時(shí)間。實(shí)驗(yàn)過程中無其他后臺(tái)程序,車道線檢測(cè)參數(shù)為Np=27,Nc=29,同時(shí)三臺(tái)手機(jī)屏幕的亮度均調(diào)至最高。其運(yùn)行結(jié)果如圖4所示,能發(fā)現(xiàn),基本上都能在屏幕亮度最高的情況下使用2.5 h以上。同時(shí),使用OpenCL加速在高通驍龍與華為海思兩款SoC上增加0.5 h使用電量,而對(duì)于紅米Note2兩個(gè)模式的電池使用時(shí)間都較為接近。

adas1-t4.gif

    其中,三款手機(jī)兩個(gè)模式下的能耗分布如表2所示,數(shù)據(jù)來源于安卓系統(tǒng)提供的電池使用情況。能夠發(fā)現(xiàn),使用OpenCL框架進(jìn)行并行計(jì)算的CPU-GPU模式,應(yīng)用所消耗電量低于單純使用CPU計(jì)算的CPU模式。即,在本車道線檢測(cè)應(yīng)用中,使用OpenCL框架加速,也能降低電量的使用。在實(shí)際車上應(yīng)用該手機(jī)ADAS時(shí),還可以通過降低屏幕亮度以及使用車載電源充電的方式,延長(zhǎng)電池使用時(shí)間,保障手機(jī)用戶的體驗(yàn)。

adas1-b2.gif

3 結(jié)論

    本文在安卓平臺(tái)上使用了OpenCL框架,實(shí)現(xiàn)了車道線檢測(cè)的手機(jī)ADAS應(yīng)用。根據(jù)三款支持OpenCL框架的手機(jī)的實(shí)驗(yàn)結(jié)果,手機(jī)能提供足夠計(jì)算性能以及續(xù)航能力用于車道線檢測(cè)。如今移動(dòng)安卓手機(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ì)算機(jī)學(xué)院 無人系統(tǒng)研究所,廣東 廣州510006)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。