使用TI的Vision AccelerationPac,實(shí)現(xiàn)汽車可視探
引言
本文引用地址:http://m.butianyuan.cn/article/196125.htm到2013年9月,谷歌的自主駕駛汽車已在計(jì)算機(jī)控制下成功行駛了500000多英里,并且沒(méi)有發(fā)生過(guò)一起交通事故[1]。谷歌具有革命性的無(wú)人駕駛汽車項(xiàng)目旨在利用攝像頭、雷達(dá)傳感器和激光測(cè)距儀(以及谷歌的地圖數(shù)據(jù)庫(kù))監(jiān)測(cè)和引導(dǎo)汽車行駛,從而提高汽車駕駛的安全性和效率。谷歌的無(wú)人駕駛汽車原型車使用了價(jià)值150,000美元的機(jī)器人組件,包括價(jià)值70,000美元的激光雷達(dá)系統(tǒng),因此距離商用還有很長(zhǎng)的路要走。2013年8月,尼桑汽車公司宣布計(jì)劃于2020年前推出無(wú)人駕駛汽車,以實(shí)現(xiàn)零交通事故死亡率。自主駕駛汽車商用化進(jìn)展的重點(diǎn)工作是,如何讓自主駕駛汽車價(jià)格更低、可靠性和安全性更高。實(shí)現(xiàn)自主駕駛汽車的關(guān)鍵技術(shù)之一是計(jì)算機(jī)視覺,其使用基于攝像頭的視覺分析,目的是提供高可靠、低成本的視覺解決方案。盡管基于攝像頭的傳感器成本低于其它技術(shù),但其處理要求會(huì)急劇增加。今天的系統(tǒng)要求我們處理30幀每秒、1,280x800分辨率的圖像,通常會(huì)同時(shí)要求運(yùn)行5種以上的算法。德州儀器最新的應(yīng)用處理器TDA2x基于OMAP5技術(shù),擁有頂級(jí)的Vision AccelerationPac,可以高效率、低成本、可編程和靈活地實(shí)現(xiàn)高級(jí)駕駛輔助系統(tǒng)(ADAS),以支持自主駕駛汽車的20/20視覺功能。Vision AccelerationPac是一種可編程加速器,擁有專用硬件單元和定制過(guò)程,可使用高級(jí)語(yǔ)言實(shí)現(xiàn)完全編程。它允許視覺開發(fā)人員使用標(biāo)準(zhǔn)處理器架構(gòu)所不具備的一些高級(jí)性能。使用高級(jí)語(yǔ)言實(shí)現(xiàn)的Vision AccelerationPac可編程支持,允許終端汽車制造廠商在算法調(diào)整方面進(jìn)行探索,做出一些具有創(chuàng)新性的解決方案。當(dāng)這些算法遠(yuǎn)未成熟時(shí),這種功能特別重要,并且對(duì)于縮短產(chǎn)品上市時(shí)間也至關(guān)重要。
長(zhǎng)眼睛的汽車
美國(guó)人口普查局的統(tǒng)計(jì)數(shù)據(jù)表明,在美國(guó),平均每年發(fā)生600萬(wàn)起機(jī)動(dòng)車交通事故。16-24歲年青人的交通事故死亡率最高。該統(tǒng)計(jì)數(shù)據(jù)還表明,大多數(shù)交通事故的原因均為人為操作失誤。人們相信,給機(jī)動(dòng)車加裝視覺和智能裝置可以減少人為操作失誤,降低交通事故發(fā)生率,從而挽救生命。另外,人們還認(rèn)為,汽車視覺系統(tǒng)可以幫助緩解交通擁堵,提高公路通行能力,提高汽車燃油效率,并提高駕駛者的行車舒適性。
高級(jí)駕駛輔助系統(tǒng)(ADAS)是朝著完全自主駕駛汽車的目標(biāo)邁出的關(guān)鍵性一步。ADAS系統(tǒng)包括但不限于自適應(yīng)巡航控制、車道保持輔助、盲點(diǎn)探測(cè)、車道偏離警告、碰撞警告系統(tǒng)、智能速度自適應(yīng)、交通標(biāo)志識(shí)別、行人保護(hù)與物體探測(cè)、自適應(yīng)燈光控制和自動(dòng)泊車輔助系統(tǒng)。
攝像頭是一種低成本方法,涵蓋許多交通應(yīng)用環(huán)境,可用于智能分析。立體前置攝像頭可用于自適應(yīng)巡航控制,監(jiān)控實(shí)時(shí)交通狀況,幫助保持與前車的最佳距離。前置攝像頭還可用于車道保持輔助,讓汽車保持在車道中間,也可用于交通標(biāo)志識(shí)別和物體探測(cè)。側(cè)攝像頭可用于并道監(jiān)控、盲點(diǎn)探測(cè)和行人感知。
攝像頭后臺(tái)數(shù)據(jù)分析功能,讓汽車擁有類似人類視覺的能力。實(shí)時(shí)視覺分析引擎需要對(duì)每一個(gè)視頻攝像幀進(jìn)行分析,提取正確的信息來(lái)做出智能決策。它不僅僅需要超強(qiáng)的計(jì)算能力,在瞬間對(duì)數(shù)據(jù)進(jìn)行處理,以讓快速運(yùn)動(dòng)的汽車做出正確的機(jī)動(dòng),還需要寬I/O來(lái)提供多個(gè)攝像頭的視覺分析引擎輸入,從而實(shí)現(xiàn)同步關(guān)聯(lián)。低功耗、低延遲和可靠性也是汽車視覺系統(tǒng)的幾個(gè)關(guān)鍵方面。
TI技術(shù)實(shí)現(xiàn)者—Vision AccelerationPac
TI的Vision AccelerationPac是一種可編程加速器,專門用于滿足汽車、機(jī)器視覺和機(jī)器人市場(chǎng)計(jì)算機(jī)視覺應(yīng)用的處理、功耗、延遲和可靠性需要。Vision AccelerationPac包含一個(gè)或者多個(gè)嵌入式視覺引擎(EVE),用于實(shí)現(xiàn)嵌入式視覺系統(tǒng)的可編程性、靈活性、低延遲處理和功率效率以及小硅片面積,因此可實(shí)現(xiàn)性能與價(jià)格的優(yōu)異結(jié)合。相同功率級(jí)別下,相比現(xiàn)有ADAS系統(tǒng),每個(gè)EVE擁有8倍以上的高級(jí)視覺分析計(jì)算性能改善。詳情,請(qǐng)參看圖1。
圖1 Cortex-A15相同功率預(yù)算時(shí)計(jì)算性能為原來(lái)的8倍以上
圖2顯示了Vision AccelerationPac架構(gòu)。
Vision AccelerationPac內(nèi)有一個(gè)或者多個(gè)EVE,它是一種視覺優(yōu)化處理引擎,包括一個(gè)32位自適應(yīng)專用RISC處理器(ARP32)和一個(gè)512位矢量協(xié)處理器(VCOP),并使用內(nèi)置機(jī)制和獨(dú)特的視覺專用指令,用于同時(shí)、低開銷處理。ARP32包括32KB的程序緩存,用于實(shí)現(xiàn)高效程序執(zhí)行。它還擁有一個(gè)旨在簡(jiǎn)化調(diào)試的內(nèi)置仿真模塊,并與TI的Code Composer Studio™集成開發(fā)環(huán)境(IDE)兼容。共有3個(gè)并行平面內(nèi)存接口,每個(gè)接口均有256比特加載與存儲(chǔ)帶寬,共提供768比特寬內(nèi)存帶寬(是大多數(shù)處理器內(nèi)部?jī)?nèi)存帶寬的6倍),并擁有共計(jì)96KB L1數(shù)據(jù)內(nèi)存,可實(shí)現(xiàn)極低處理延遲的同步數(shù)據(jù)傳送。每個(gè)EVE還具有一個(gè)本地專用直接內(nèi)存訪問(wèn)(DMA),用于主處理器內(nèi)存的數(shù)據(jù)進(jìn)出傳輸,以實(shí)現(xiàn)快速數(shù)據(jù)傳送,同時(shí)還有一個(gè)內(nèi)存管理單元(MMU),用于地址翻譯和內(nèi)存保護(hù)。為了實(shí)現(xiàn)可靠運(yùn)行,每個(gè)EVE還在所有數(shù)據(jù)內(nèi)存上使用單比特誤差檢測(cè),對(duì)程序內(nèi)存使用雙比特誤差檢測(cè)。一個(gè)關(guān)鍵的架構(gòu)級(jí)功能是DMA引擎、控制引擎(RISC CPU)和處理引擎(VCOP)的完全并發(fā)。例如,它讓ARP32 RISC CPU可以在處理一個(gè)中斷命令或者執(zhí)行順序代碼的同時(shí),VCOP執(zhí)行一個(gè)循環(huán)并在底層對(duì)另一條語(yǔ)句解碼,并在沒(méi)有任何架構(gòu)或者內(nèi)存子系統(tǒng)停止工作的情況下傳送數(shù)據(jù)。另外,它還通過(guò)硬件郵箱方法,對(duì)處理器間通信提供嵌入式支持。大多數(shù)高功效視覺處理中,EVE僅使用400mW的最大總功耗,便實(shí)現(xiàn)了8GMAC處理性能和384Gbps數(shù)據(jù)帶寬。
圖2 Vision AccelerationPac架構(gòu)
VCOP矢量協(xié)處理器是一種帶嵌入式環(huán)路控制和地址生成的單指令多數(shù)據(jù)(SIMD)引擎。它提供每周期16個(gè)16位倍增器的雙8路SIMD,以及500MHz頻率持續(xù)數(shù)據(jù)流量下8GMACS每秒的速度,其由舍入和飽和相關(guān)加載/存儲(chǔ)與內(nèi)置的零循環(huán)開銷維持。它可以三源運(yùn)行,讓兩個(gè)矢量單元提高兩倍,每個(gè)周期多計(jì)算32個(gè)32位。VCOP還具有8個(gè)地址生成單元,每個(gè)均擁有4維地址功能,能夠存儲(chǔ)4個(gè)嵌套循環(huán)和3個(gè)內(nèi)存接口的地址,從而實(shí)現(xiàn)4級(jí)嵌套循環(huán)零開銷。它大大減少了迭代像素操作所需的計(jì)算周期。矢量協(xié)處理器擁有許多專用通道,用于加速柱狀圖、加權(quán)直方圖和查詢表,并支持一般計(jì)算機(jī)視覺處理級(jí),例如:梯度、方向、排序、位交錯(cuò)/去交錯(cuò)/置換、全景圖像和局部二進(jìn)制模式。另外,矢量協(xié)處理器還具有一些實(shí)現(xiàn)靈活性和并發(fā)加載存儲(chǔ)運(yùn)行的專用指令,旨在加速重要解碼和分散/集合運(yùn)行區(qū),從而實(shí)現(xiàn)非鄰近內(nèi)存數(shù)據(jù)的高效處理。它最小化了傳統(tǒng)圖像處理程序所需的常見數(shù)據(jù)傳輸和拷貝,實(shí)現(xiàn)超快處理性能。同標(biāo)準(zhǔn)處理器架構(gòu)相關(guān)的各種功能處理速度提高4到12倍是正常的。VCOP本身就支持分散/集合和重要處理區(qū)功能。排序是一種常見的計(jì)算機(jī)視覺功能,其發(fā)生在一些多用情況下,例如:追蹤目標(biāo)特性識(shí)別和密集光流搜索匹配等。EVE極大加快了自定義指令支持排序,從而使EVE能夠在15.2µ秒內(nèi)對(duì)2048個(gè)32位數(shù)據(jù)點(diǎn)進(jìn)行排序。
利用標(biāo)準(zhǔn)TI代碼生成工具套件可對(duì)Vision AccelerationPac進(jìn)行完全編程,允許直接編譯軟件,并在PC上運(yùn)行來(lái)模擬。通過(guò)TI的實(shí)時(shí)操作系統(tǒng)BIOS(RTOS),ARP32 RISC內(nèi)核可以完全運(yùn)行C/C++程序。通過(guò)TI的VCOP內(nèi)核C構(gòu)建的C/C++專用子集,對(duì)VCOP矢量協(xié)處理器編程。VCOP內(nèi)核C是一種模板化的C++矢量庫(kù),其通過(guò)一種高級(jí)語(yǔ)言顯示相關(guān)硬件的各種功能。利用一些標(biāo)準(zhǔn)編譯器(例如:GNU GCC或者M(jìn)icrosoft® MSVC等),可以在一臺(tái)標(biāo)準(zhǔn)的PC或者工作站上評(píng)估和驗(yàn)證寫入VCOP內(nèi)核C的算法。它允許開發(fā)人員在算法開發(fā)過(guò)程初期融入矢量化和驗(yàn)證位精確度,并對(duì)大量數(shù)據(jù)集進(jìn)行測(cè)試,從而確保算法的穩(wěn)健性。只需使用TI的代碼生成工具對(duì)源代碼進(jìn)行重新編譯,這些算法便可直接運(yùn)行在Vision AccelerationPac上。寫入VCOP內(nèi)核C的程序有許多優(yōu)點(diǎn);它們經(jīng)過(guò)優(yōu)化后可使用Vision AccelerationPac架構(gòu)和指令集,擁有特殊的循環(huán)結(jié)構(gòu),可對(duì)矢量數(shù)據(jù)進(jìn)行操作,并且在C聲明和匯編語(yǔ)言之間有一個(gè)幾乎是一對(duì)一的映射,從而得到非常高效的代碼,代碼體積和內(nèi)存占用較小。
共有超過(guò)100個(gè)Vision AccelerationPac編程舉例。相比VCOP內(nèi)核C,使用ARM® NEON® SIMD的陣列添加簡(jiǎn)單例子表明,在6個(gè)周期中,ARM可以增加4個(gè)32位值,從而獲得1.5周期每輸出的內(nèi)循環(huán)性能,同時(shí),VCOP充分使用其768位加載存儲(chǔ)帶寬,在一個(gè)周期內(nèi)獲得8個(gè)輸出。該結(jié)果相當(dāng)于1/8周期每輸出的吞吐量,其實(shí)現(xiàn)了12倍于ARM的總體周期到周期速度。
Vision AccelerationPac內(nèi)部EVE的ARP32 RISC內(nèi)核針對(duì)控制代碼和順序處理進(jìn)行了優(yōu)化。它支持運(yùn)行SYS/BIOS、TI的實(shí)時(shí)操作系統(tǒng),因此提供了對(duì)線程、信號(hào)和其它RTOS特性的支持。
EVE受到全套代碼生成工具的支持,包括TI的Code Composer Studio IDE中集成的優(yōu)化編譯器即模擬器。EVE通過(guò)硬件計(jì)數(shù)器對(duì)非侵入式性能監(jiān)控提供嵌入式支持。它允許用戶對(duì)多個(gè)性能信號(hào)進(jìn)行監(jiān)控,與此同時(shí),在無(wú)需進(jìn)行任何代碼修改的情況下,應(yīng)用程序運(yùn)行并允許深度監(jiān)控應(yīng)用程序的運(yùn)行時(shí)間表現(xiàn)。
評(píng)論