《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 手機(jī)ADAS:基于OpenCL的車(chē)道線檢測(cè)應(yīng)用評(píng)估
手機(jī)ADAS:基于OpenCL的車(chē)道線檢測(cè)應(yīng)用評(píng)估
2017年電子技術(shù)應(yīng)用第4期
朱 笛,張文權(quán),蔡 行,黃 凱
中山大學(xué) 數(shù)據(jù)科學(xué)與計(jì)算機(jī)學(xué)院 無(wú)人系統(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è)功能——車(chē)道線檢測(cè),并運(yùn)行在三款手機(jī)上。通過(guò)比較該應(yīng)用的檢測(cè)準(zhǔn)確度、幀處理速度、應(yīng)用能效,根據(jù)實(shí)驗(yàn)結(jié)果手機(jī)設(shè)備非常適合運(yùn)行基于視覺(jué)的ADAS應(yīng)用。
中圖分類(lèi)號(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的車(chē)道線檢測(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)行在特殊的處理單元中,這類(lèi)車(chē)載電子設(shè)備行業(yè)中分為車(chē)載前裝、后裝。其中后裝市場(chǎng)中的Mobileye,能提示司機(jī)車(chē)道偏離以及提示車(chē)距過(guò)近。盡管在過(guò)去數(shù)十年里,ADAS技術(shù)高速發(fā)展[3],各類(lèi)前裝、后裝ADAS產(chǎn)品的價(jià)格仍然是個(gè)大問(wèn)題。

    如今,移動(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)行基于視覺(jué)的手機(jī)ADAS應(yīng)用[6]。不僅如此,在高通即將發(fā)布的驍龍835 SoC上已經(jīng)支持Tensorflow機(jī)器學(xué)習(xí)框架,能通過(guò)手機(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編寫(xiě)的內(nèi)核函數(shù),能在處理核心(如:GPU、FPGA等設(shè)備)上并行運(yùn)行。通過(guò)OpenCL框架,能充分利用手機(jī)GPU進(jìn)行異構(gòu)并行計(jì)算[7-9],進(jìn)而高效運(yùn)行部分基于視覺(jué)的ADAS應(yīng)用。雖然iOS上的Metal框架與OpenCL比較類(lèi)似,但目前而言,只有安卓系統(tǒng)支持基于OpenCL的應(yīng)用。

    基于性能評(píng)估的需要,本文選擇了3款手機(jī),分別為:小米5(Mi 5)、紅米Note2(Redmi Note 2)、華為榮耀6(Honor 6)。這三款手機(jī)囊括了市面上常見(jiàn)的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)用中所使用的車(chē)道線檢測(cè)算法來(lái)自文獻(xiàn)[10,11],此處不再贅述。選擇上述算法的原因如下:(1)并行性:上述算法主要基于粒子濾波,在預(yù)處理、車(chē)道線檢測(cè)、車(chē)道下跟蹤的過(guò)程都可并行化處理;(2)可調(diào)性:該算法對(duì)于車(chē)道線檢測(cè)的準(zhǔn)確度可通過(guò)粒子濾波的粒子數(shù)、采樣數(shù)等參數(shù)調(diào)節(jié)。在手機(jī)上運(yùn)行時(shí),可以基于手機(jī)配置調(diào)節(jié)車(chē)道線檢測(cè)的精度與效率。在該車(chē)道線檢測(cè)算法中,包括兩個(gè)調(diào)節(jié)參數(shù):Np,粒子濾波中粒子的數(shù)量;Nc,粒子濾波中重采樣過(guò)程中候選線的數(shù)量。通常而言,Np與Nc越大,車(chē)道檢測(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)行模式。分別表示車(chē)道線算法單純運(yùn)行在手機(jī)CPU上;車(chē)道線算法通過(guò)OpenCL框架,運(yùn)行在GPU上進(jìn)行并行加速。

    為了在安卓手機(jī)上使用基于C/C++的OpenCL框架,在應(yīng)用開(kāi)發(fā)時(shí)需要使用Java原生接口(Java Native Interface,JNI)。開(kāi)發(fā)工具包括Eclipse與安卓原生開(kāi)發(fā)套件(Android Native Develop Kit, NDK)。首先,通過(guò)開(kāi)放計(jì)算語(yǔ)言(Open Computing Language,OpenCL)框架與開(kāi)放計(jì)算機(jī)視覺(jué)(Open Computer Vsion,OpenCV)編寫(xiě)車(chē)道線檢測(cè)的C/C++代碼;再使用NDK對(duì)其進(jìn)行編譯;再于編寫(xiě)安卓應(yīng)用時(shí),通過(guò)JNI調(diào)用上述編譯好的C/C++內(nèi)核函數(shù)。在運(yùn)行該應(yīng)用之前需要安裝OpenCV4Android到手機(jī)上,以提供OpenCV的庫(kù)文件。對(duì)于本OpenCL安卓應(yīng)用運(yùn)行描述,如文獻(xiàn)[12]所示,應(yīng)用從Java代碼端開(kāi)始,通過(guò)JNI調(diào)用執(zhí)行C/C++代碼,進(jìn)一步調(diào)用OpenCL框架的函數(shù),完成初始化過(guò)程,再次返回C/C++層進(jìn)行數(shù)據(jù)的填充,隨后通過(guò)GPGPU驅(qū)動(dòng)交由手機(jī)GPU進(jìn)行計(jì)算,最后返回結(jié)果至Java層供進(jìn)一步使用(主要是在屏幕上顯示)。

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

    由于上述車(chē)道線檢測(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]。通過(guò)實(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),通過(guò)內(nèi)存映射的機(jī)制,即通過(guò)“map()”與“unmap()”操作,將部分片上內(nèi)存的擁有者分配為GPU或CPU。通過(guò)這種方式,使用內(nèi)存映射而不是內(nèi)存拷貝的機(jī)制,將圖片數(shù)據(jù)從CPU的片上內(nèi)存映射到OpenCL的內(nèi)核中,并將OpenCL車(chē)道線檢測(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

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

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

    如上文引言所述,在上述三款手機(jī)上,進(jìn)行了對(duì)比實(shí)驗(yàn)。其硬件配置如表1所示,囊括了中國(guó)市場(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ù)類(lèi)型有優(yōu)化,此處以O(shè)penCL 1.1版本的特性為準(zhǔn)。同時(shí),這三款手機(jī)的電池容量也相近。實(shí)驗(yàn)過(guò)程中,使用本文實(shí)現(xiàn)的基于OpenCL的車(chē)道線檢測(cè),對(duì)性能與能耗進(jìn)行比較。

adas1-b1.gif

2.1 精確度與幀率

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

adas1-t3.gif

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

    若使用手機(jī)ADAS進(jìn)行駕駛輔助耗電量很大的話,用戶無(wú)法忍受下車(chē)的時(shí)候手機(jī)電量所剩無(wú)幾,所以該車(chē)道線應(yīng)用對(duì)續(xù)航的影響是個(gè)很重要的問(wèn)題。對(duì)此,對(duì)本車(chē)道線檢測(cè)應(yīng)用進(jìn)行了電量消耗測(cè)試。為了盡可能地控制變量,如上文所述,本文選擇的三款平臺(tái)電池容量相當(dāng),約3 000 mAh。考慮到電池老化問(wèn)題,選擇了三臺(tái)全新的手機(jī)進(jìn)行實(shí)驗(yàn)。為了模擬在車(chē)上使用本手機(jī)ADAS應(yīng)用進(jìn)行車(chē)道線檢測(cè)的環(huán)境,通過(guò)屏幕播放行車(chē)記錄儀的數(shù)據(jù),分別使用三臺(tái)手機(jī)分別在CPU模式下、CPU-GPU模式下,使用手機(jī)攝像頭獲取圖像進(jìn)行車(chē)道線檢測(cè),并記錄電池使用時(shí)間。實(shí)驗(yàn)過(guò)程中無(wú)其他后臺(tái)程序,車(chē)道線檢測(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ù)來(lái)源于安卓系統(tǒng)提供的電池使用情況。能夠發(fā)現(xiàn),使用OpenCL框架進(jìn)行并行計(jì)算的CPU-GPU模式,應(yīng)用所消耗電量低于單純使用CPU計(jì)算的CPU模式。即,在本車(chē)道線檢測(cè)應(yīng)用中,使用OpenCL框架加速,也能降低電量的使用。在實(shí)際車(chē)上應(yīng)用該手機(jī)ADAS時(shí),還可以通過(guò)降低屏幕亮度以及使用車(chē)載電源充電的方式,延長(zhǎng)電池使用時(shí)間,保障手機(jī)用戶的體驗(yàn)。

adas1-b2.gif

3 結(jié)論

    本文在安卓平臺(tái)上使用了OpenCL框架,實(shí)現(xiàn)了車(chē)道線檢測(cè)的手機(jī)ADAS應(yīng)用。根據(jù)三款支持OpenCL框架的手機(jī)的實(shí)驗(yàn)結(jié)果,手機(jī)能提供足夠計(jì)算性能以及續(xù)航能力用于車(chē)道線檢測(cè)。如今移動(dòng)安卓手機(jī)已經(jīng)集成了高性能的SoC以及高分辨率的相機(jī),十分適合基于視覺(jué)的ADAS手機(jī)應(yīng)用。市面上也有部分雙攝像頭的手機(jī),未來(lái)或許可應(yīng)用基于雙目視覺(jué)的ADAS應(yīng)用。不僅如此,隨著支持Tensorflow深度學(xué)習(xí)框架的驍龍835的上市,手機(jī)上將有更多支持深度學(xué)習(xí)的硬件集成。在不久的將來(lái),將可以看到基于深度學(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é)院 無(wú)人系統(tǒng)研究所,廣東 廣州510006)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 最近2019中文字幕免费看最新 | 亚洲第一色网 | 久久久久久久99精品免费观看 | 羞羞网站免费 | 成人伦理在线观看 | 国产一区视频在线免费观看 | 免费在线观看污污视频 | 3751性欧美视频在线播放 | 国产区精品一区二区不卡中文 | 天天狠天天透 | 美女一级毛片无遮挡内谢 | 久久综合色网 | 日本无遮挡亲吻膜下面免费 | 26uuu久久 | 尹人在线视频 | 一区二区三区福利视频 | 亚洲国产精品v在线播放 | 在线观看中文字幕码2022 | 日韩高清一区二区三区不卡 | 久久综合九色综合97飘花 | 精品精品 | 免费黄色网战 | 欧美成人免费网在线观看 | 热久久国产精品 | 欧美日韩成人在线 | 高清成人爽a毛片免费网站 高清国产精品久久久久 | 欧美欧洲性色老头老妇 | 成人私人影院www片免费高清 | 国产精品福利在线观看秒播 | 曰韩精品 | 97人人人人 | 视频一区 中文字幕 | ntr中文字幕亚洲综合 | 中文字幕成人网 | 欧美一级高清片在线 | 国产亚洲人成网站天堂岛 | 怡春院日本一区二区久久 | 生活一级毛片 | 国产精品成人第一区 | 18在线观看国内精品视频 | 黄网在线观看免费 |