使用TI的Vision AccelerationPac,實(shí)現(xiàn)汽車可視探測(cè)
引言
到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ī)視覺(jué),其使用基于攝像頭的視覺(jué)分析,目的是提供高可靠、低成本的視覺(jué)解決方案。盡管基于攝像頭的傳感器成本低于其它技術(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視覺(jué)功能。Vision AccelerationPac是一種可編程加速器,擁有專用硬件單元和定制過(guò)程,可使用高級(jí)語(yǔ)言實(shí)現(xiàn)完全編程。它允許視覺(jué)開發(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)車加裝視覺(jué)和智能裝置可以減少人為操作失誤,降低交通事故發(fā)生率,從而挽救生命。另外,人們還認(rèn)為,汽車視覺(jué)系統(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ù)分析功能,讓汽車擁有類似人類視覺(jué)的能力。實(shí)時(shí)視覺(jué)分析引擎需要對(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è)攝像頭的視覺(jué)分析引擎輸入,從而實(shí)現(xiàn)同步關(guān)聯(lián)。低功耗、低延遲和可靠性也是汽車視覺(jué)系統(tǒng)的幾個(gè)關(guān)鍵方面。
TI技術(shù)實(shí)現(xiàn)者—Vision AccelerationPac
TI的Vision AccelerationPac是一種可編程加速器,專門用于滿足汽車、機(jī)器視覺(jué)和機(jī)器人市場(chǎng)計(jì)算機(jī)視覺(jué)應(yīng)用的處理、功耗、延遲和可靠性需要。Vision AccelerationPac包含一個(gè)或者多個(gè)嵌入式視覺(jué)引擎(EVE),用于實(shí)現(xiàn)嵌入式視覺(jué)系統(tǒng)的可編程性、靈活性、低延遲處理和功率效率以及小硅片面積,因此可實(shí)現(xiàn)性能與價(jià)格的優(yōu)異結(jié)合。相同功率級(jí)別下,相比現(xiàn)有ADAS系統(tǒng),每個(gè)EVE擁有8倍以上的高級(jí)視覺(jué)分析計(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,它是一種視覺(jué)優(yōu)化處理引擎,包括一個(gè)32位自適應(yīng)專用RISC處理器(ARP32)和一個(gè)512位矢量協(xié)處理器(VCOP),并使用內(nèi)置機(jī)制和獨(dú)特的視覺(jué)專用指令,用于同時(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ù)高功效視覺(jué)處理中,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ī)視覺(jué)處理級(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ī)視覺(jué)功能,其發(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)。
使用Vision AccelerationPac的圓形交通標(biāo)志識(shí)別舉例
典型的視覺(jué)分析處理涉及幾個(gè)階段(如圖3所示),包括圖像預(yù)處理與特性檢測(cè)、相關(guān)物體識(shí)別、圖像與模式匹配,最后才是決策判斷。TI的Vision AccelerationPac最適合于減輕視覺(jué)分析處理前三個(gè)階段的密集計(jì)算。決策判斷通常包括分類器、浮點(diǎn)運(yùn)算和矩陣轉(zhuǎn)換,C66x DSP內(nèi)核對(duì)它們的處理最為有效。正因如此,Vision AccelerationPac在SoC中與一個(gè)或者多個(gè)DSP配對(duì)使用。結(jié)果是,把視覺(jué)分析工作量合理是劃分開來(lái)。
TI的TDA2x可實(shí)現(xiàn)低功耗、高性能的視覺(jué)處理系統(tǒng)。它擁有兩顆C66x DSP內(nèi)核和一個(gè)Vision AccelerationPac,以及兩個(gè)嵌入式視覺(jué)引擎(EVE)。另外,它還包括一個(gè)視頻前端和汽車汽車聯(lián)網(wǎng)接口。下一頁(yè)的圖4顯示了TDA2xx SoC結(jié)構(gòu)圖。
下面,我們來(lái)探討Vision AccelerationPac如何能夠加速ADAS圓形交通標(biāo)志識(shí)別。
一些世界圓形交通標(biāo)志使用紅色圓圈作為分界線,因此第一步便是從YUV422輸入數(shù)據(jù)只提取紅色像素。第二步是,計(jì)算水平和垂直梯度,使用亮度和對(duì)比度來(lái)確證紅色邊界線。然后,使用霍夫變換算法找出圓形?,F(xiàn)在,使用數(shù)據(jù)庫(kù)中存儲(chǔ)的模式使圓形內(nèi)被識(shí)別相關(guān)區(qū)域圖像關(guān)聯(lián)起來(lái),以解釋交通標(biāo)志(80 MPH),最終做出決策判斷。在這種情況下,結(jié)論是限速80英里/小時(shí)。
圖3視覺(jué)分析處理流程圖
如下面圖5所示,Vision AccelerationPac可以高效地分擔(dān)圓形交通標(biāo)志識(shí)別處理的大多數(shù)工作量,包括基于互關(guān)聯(lián)的塊匹配模板加速器。DSP內(nèi)核用于提高最終決策的穩(wěn)健性。使用霍夫變換算法來(lái)查找圓形是一項(xiàng)高計(jì)算密集型工作,但使用Vision AccelerationPac時(shí),霍夫變換算法查找圓形僅需140字節(jié)個(gè)代碼空間,約(1.88*NUM_RADIUS) +1.81 cyc/pix個(gè)處理時(shí)間周期,其中,NUM_RADIUS為我們?cè)诨舴蚩臻g內(nèi)選擇搜索的半徑數(shù),因此它的視覺(jué)識(shí)別時(shí)間非常短,功耗非常低,并且硅片面積的性價(jià)比很高。以每秒30幀對(duì)一幅720 × 480圖像進(jìn)行完全交通標(biāo)志識(shí)別約需50 MHz,即小于10% EVE周期。保持了豐富的處理功能,表明一個(gè)EVE可以同時(shí)運(yùn)行多個(gè)視覺(jué)算法。
圖4 TDA2x結(jié)構(gòu)圖
圖5 使用Vision AccelerationPac實(shí)現(xiàn)圓形交通標(biāo)志識(shí)別
機(jī)器視覺(jué)Vision AccelerationPac—汽車或者攝像頭處理以外的應(yīng)用
Vision AccelerationPac可以使用的其它領(lǐng)域還有很多。除視頻攝像頭分析處理以外,Vision AccelerationPac的固點(diǎn)倍增器和硬件通道是雷達(dá)分析處理的理想選擇,因?yàn)樗梢愿咝У靥幚砜焖俑道锶~變換(FFT)和波束形成算法。利用Vision AccelerationPac來(lái)處理1024點(diǎn)FFT所花費(fèi)的時(shí)間小于3.5µ秒。因此,雷達(dá)可用作汽車攝像頭系統(tǒng)的補(bǔ)充,以探測(cè)許多不同的交通和氣象狀況。
汽車視覺(jué)所使用的相同機(jī)制,也適用于許多其它機(jī)器視覺(jué)行業(yè);工業(yè)自動(dòng)化、視頻安全監(jiān)控和警告系統(tǒng)、交通監(jiān)控和車牌識(shí)別便是例子。Vision AccelerationPac可用于擴(kuò)展DSP應(yīng)用,以一種更加自主和高功效的方式來(lái)解決今天的許多視覺(jué)分析問(wèn)題。
結(jié)論
Vision AccelerationPac是德州儀器創(chuàng)新型視覺(jué)分析解決方案。利用一種針對(duì)高效嵌入式視覺(jué)處理進(jìn)行高度優(yōu)化的靈活SIMD架構(gòu),Vision AccelerationPac擁有非常低的功耗和優(yōu)異的硅片面積效率。Vision AccelerationPac與C66x DSP內(nèi)核結(jié)合使用,可實(shí)現(xiàn)浮點(diǎn)和矩陣計(jì)算,從而極大地加速完整嵌入式視覺(jué)應(yīng)用處理鏈。除是一種高效、可靠的架構(gòu)以外,Vision AccelerationPac還使用一種簡(jiǎn)單的基于C/C++的編程模型,輸出非常緊湊的代碼。它意味著,Vision AccelerationPac實(shí)現(xiàn)的系統(tǒng)具有非常低的內(nèi)存占用,從而進(jìn)一步降低了視覺(jué)系統(tǒng)成本和功耗。TDA2x SoC及其Vision AccelerationPac,是實(shí)現(xiàn)智能汽車系統(tǒng)、工業(yè)機(jī)器和“可視”機(jī)器人視覺(jué)分析的一個(gè)理想平臺(tái),它們共同提高了我們的生活品質(zhì)。
TDAx SoC更多詳情,請(qǐng)?jiān)L問(wèn)www.ti.com/TDA2x。
參考文獻(xiàn)
(1) 谷歌在Va. Tech測(cè)試無(wú)人駕駛汽車
(2) 尼桑宣布史無(wú)前例的無(wú)人駕駛汽車發(fā)展計(jì)劃
作者:德州儀器 (TI) 戰(zhàn)略營(yíng)銷經(jīng)理Zhihong Lin、嵌入式視覺(jué)引擎首席架構(gòu)師Jagadeesh Sankaran博士和技術(shù)戰(zhàn)略主任Tom Flanagan
鳴謝
感謝Stephanie Pearson、Debbie Greenstreet、Gaurav Agarwal、Frank Forster、Brooke Williams、 Dennis Rauschmayer、Jason Jones、Andre Schnarrenberger、Peter Labaziewicz、Dipan Mandal、 Roman Staszewski和Curt Moore給本文提供的支持。