作者:德州儀器(TI) 戰(zhàn)略營銷經(jīng)理Zhihong Lin、嵌入式視覺引擎首席架構師Jagadeesh Sankaran博士和技術戰(zhàn)略主任Tom Flanagan
引言
到2013年9月,,谷歌的自主駕駛汽車已在計算機控制下成功行駛了500000多英里,并且沒有發(fā)生過一起交通事故[1],。谷歌具有革命性的無人駕駛汽車項目旨在利用攝像頭,、雷達傳感器和激光測距儀(以及谷歌的地圖數(shù)據(jù)庫)監(jiān)測和引導汽車行駛,從而提高汽車駕駛的安全性和效率,。谷歌的無人駕駛汽車原型車使用了價值150,000美元的機器人組件,,包括價值70,000美元的激光雷達系統(tǒng),因此距離商用還有很長的路要走,。2013年8月,,尼桑汽車公司宣布計劃于2020年前推出無人駕駛汽車,以實現(xiàn)零交通事故死亡率,。自主駕駛汽車商用化進展的重點工作是,,如何讓自主駕駛汽車價格更低、可靠性和安全性更高,。實現(xiàn)自主駕駛汽車的關鍵技術之一是計算機視覺,,其使用基于攝像頭的視覺分析,目的是提供高可靠,、低成本的視覺解決方案,。盡管基于攝像頭的傳感器成本低于其它技術,但其處理要求會急劇增加,。今天的系統(tǒng)要求我們處理30幀每秒,、1,280x800分辨率的圖像,通常會同時要求運行5種以上的算法,。德州儀器最新的應用處理器TDA2x基于OMAP5技術,,擁有頂級的Vision AccelerationPac,可以高效率,、低成本,、可編程和靈活地實現(xiàn)高級駕駛輔助系統(tǒng)(ADAS),以支持自主駕駛汽車的20/20視覺功能,。Vision AccelerationPac是一種可編程加速器,,擁有專用硬件單元和定制過程,可使用高級語言實現(xiàn)完全編程,。它允許視覺開發(fā)人員使用標準處理器架構所不具備的一些高級性能,。使用高級語言實現(xiàn)的Vision AccelerationPac可編程支持,允許終端汽車制造廠商在算法調(diào)整方面進行探索,做出一些具有創(chuàng)新性的解決方案,。當這些算法遠未成熟時,,這種功能特別重要,并且對于縮短產(chǎn)品上市時間也至關重要,。
長眼睛的汽車
美國人口普查局的統(tǒng)計數(shù)據(jù)表明,,在美國,平均每年發(fā)生600萬起機動車交通事故,。16-24歲年青人的交通事故死亡率最高,。該統(tǒng)計數(shù)據(jù)還表明,大多數(shù)交通事故的原因均為人為操作失誤,。人們相信,,給機動車加裝視覺和智能裝置可以減少人為操作失誤,降低交通事故發(fā)生率,,從而挽救生命,。另外,人們還認為,,汽車視覺系統(tǒng)可以幫助緩解交通擁堵,,提高公路通行能力,提高汽車燃油效率,,并提高駕駛者的行車舒適性,。
高級駕駛輔助系統(tǒng)(ADAS)是朝著完全自主駕駛汽車的目標邁出的關鍵性一步。ADAS系統(tǒng)包括但不限于自適應巡航控制,、車道保持輔助,、盲點探測、車道偏離警告,、碰撞警告系統(tǒng),、智能速度自適應、交通標志識別,、行人保護與物體探測,、自適應燈光控制和自動泊車輔助系統(tǒng)。
攝像頭是一種低成本方法,,涵蓋許多交通應用環(huán)境,,可用于智能分析。立體前置攝像頭可用于自適應巡航控制,,監(jiān)控實時交通狀況,,幫助保持與前車的最佳距離。前置攝像頭還可用于車道保持輔助,,讓汽車保持在車道中間,,也可用于交通標志識別和物體探測,。側攝像頭可用于并道監(jiān)控、盲點探測和行人感知,。
攝像頭后臺數(shù)據(jù)分析功能,,讓汽車擁有類似人類視覺的能力。實時視覺分析引擎需要對每一個視頻攝像幀進行分析,,提取正確的信息來做出智能決策,。它不僅僅需要超強的計算能力,在瞬間對數(shù)據(jù)進行處理,,以讓快速運動的汽車做出正確的機動,,還需要寬I/O來提供多個攝像頭的視覺分析引擎輸入,從而實現(xiàn)同步關聯(lián),。低功耗、低延遲和可靠性也是汽車視覺系統(tǒng)的幾個關鍵方面,。
TI技術實現(xiàn)者—Vision AccelerationPac
TI的Vision AccelerationPac是一種可編程加速器,,專門用于滿足汽車、機器視覺和機器人市場計算機視覺應用的處理,、功耗,、延遲和可靠性需要。Vision AccelerationPac包含一個或者多個嵌入式視覺引擎(EVE),,用于實現(xiàn)嵌入式視覺系統(tǒng)的可編程性,、靈活性、低延遲處理和功率效率以及小硅片面積,,因此可實現(xiàn)性能與價格的優(yōu)異結合,。相同功率級別下,相比現(xiàn)有ADAS系統(tǒng),,每個EVE擁有8倍以上的高級視覺分析計算性能改善,。詳情,請參看圖1,。
圖1 Cortex-A15相同功率預算時計算性能為原來的8倍以上
下一頁中的圖2顯示了Vision AccelerationPac架構,。
Vision AccelerationPac內(nèi)有一個或者多個EVE,它是一種視覺優(yōu)化處理引擎,,包括一個32位自適應專用RISC處理器(ARP32)和一個512位矢量協(xié)處理器(VCOP),,并使用內(nèi)置機制和獨特的視覺專用指令,用于同時,、低開銷處理,。ARP32包括32KB的程序緩存,用于實現(xiàn)高效程序執(zhí)行,。它還擁有一個旨在簡化調(diào)試的內(nèi)置仿真模塊,,并與TI的Code Composer Studio™集成開發(fā)環(huán)境(IDE)兼容,。共有3個并行平面內(nèi)存接口,每個接口均有256比特加載與存儲帶寬,,共提供768比特寬內(nèi)存帶寬(是大多數(shù)處理器內(nèi)部內(nèi)存帶寬的6倍),,并擁有共計96KB L1數(shù)據(jù)內(nèi)存,可實現(xiàn)極低處理延遲的同步數(shù)據(jù)傳送,。每個EVE還具有一個本地專用直接內(nèi)存訪問(DMA),,用于主處理器內(nèi)存的數(shù)據(jù)進出傳輸,以實現(xiàn)快速數(shù)據(jù)傳送,,同時還有一個內(nèi)存管理單元(MMU),,用于地址翻譯和內(nèi)存保護。為了實現(xiàn)可靠運行,,每個EVE還在所有數(shù)據(jù)內(nèi)存上使用單比特誤差檢測,,對程序內(nèi)存使用雙比特誤差檢測。一個關鍵的架構級功能是DMA引擎,、控制引擎(RISC CPU)和處理引擎(VCOP)的完全并發(fā),。例如,它讓ARP32 RISC CPU可以在處理一個中斷命令或者執(zhí)行順序代碼的同時,,VCOP執(zhí)行一個循環(huán)并在底層對另一條語句解碼,,并在沒有任何架構或者內(nèi)存子系統(tǒng)停止工作的情況下傳送數(shù)據(jù)。另外,,它還通過硬件郵箱方法,,對處理器間通信提供嵌入式支持。大多數(shù)高功效視覺處理中,,EVE僅使用400mW的最大總功耗,,便實現(xiàn)了8GMAC處理性能和384Gbps數(shù)據(jù)帶寬。
圖2 Vision AccelerationPac架構
VCOP矢量協(xié)處理器是一種帶嵌入式環(huán)路控制和地址生成的單指令多數(shù)據(jù)(SIMD)引擎,。它提供每周期16個16位倍增器的雙8路SIMD,,以及500MHz頻率持續(xù)數(shù)據(jù)流量下8GMACS每秒的速度,其由舍入和飽和相關加載/存儲與內(nèi)置的零循環(huán)開銷維持,。它可以三源運行,,讓兩個矢量單元提高兩倍,每個周期多計算32個32位,。VCOP還具有8個地址生成單元,,每個均擁有4維地址功能,能夠存儲4個嵌套循環(huán)和3個內(nèi)存接口的地址,,從而實現(xiàn)4級嵌套循環(huán)零開銷,。它大大減少了迭代像素操作所需的計算周期。矢量協(xié)處理器擁有許多專用通道,,用于加速柱狀圖,、加權直方圖和查詢表,,并支持一般計算機視覺處理級,例如:梯度,、方向,、排序、位交錯/去交錯/置換,、全景圖像和局部二進制模式,。另外,矢量協(xié)處理器還具有一些實現(xiàn)靈活性和并發(fā)加載存儲運行的專用指令,,旨在加速重要解碼和分散/集合運行區(qū),,從而實現(xiàn)非鄰近內(nèi)存數(shù)據(jù)的高效處理。它最小化了傳統(tǒng)圖像處理程序所需的常見數(shù)據(jù)傳輸和拷貝,,實現(xiàn)超快處理性能,。同標準處理器架構相關的各種功能處理速度提高4到12倍是正常的。VCOP本身就支持分散/集合和重要處理區(qū)功能,。排序是一種常見的計算機視覺功能,,其發(fā)生在一些多用情況下,例如:追蹤目標特性識別和密集光流搜索匹配等,。EVE極大加快了自定義指令支持排序,從而使EVE能夠在15.2µ秒內(nèi)對2048個32位數(shù)據(jù)點進行排序,。
利用標準TI代碼生成工具套件可對Vision AccelerationPac進行完全編程,,允許直接編譯軟件,并在PC上運行來模擬,。通過TI的實時操作系統(tǒng)BIOS(RTOS),,ARP32 RISC內(nèi)核可以完全運行C/C++程序。通過TI的VCOP內(nèi)核C構建的C/C++專用子集,,對VCOP矢量協(xié)處理器編程,。VCOP內(nèi)核C是一種模板化的C++矢量庫,其通過一種高級語言顯示相關硬件的各種功能,。利用一些標準編譯器(例如:GNU GCC或者Microsoft® MSVC等),,可以在一臺標準的PC或者工作站上評估和驗證寫入VCOP內(nèi)核C的算法。它允許開發(fā)人員在算法開發(fā)過程初期融入矢量化和驗證位精確度,,并對大量數(shù)據(jù)集進行測試,,從而確保算法的穩(wěn)健性。只需使用TI的代碼生成工具對源代碼進行重新編譯,,這些算法便可直接運行在Vision AccelerationPac上,。寫入VCOP內(nèi)核C的程序有許多優(yōu)點;它們經(jīng)過優(yōu)化后可使用Vision AccelerationPac架構和指令集,,擁有特殊的循環(huán)結構,,可對矢量數(shù)據(jù)進行操作,,并且在C聲明和匯編語言之間有一個幾乎是一對一的映射,從而得到非常高效的代碼,,代碼體積和內(nèi)存占用較小,。
共有超過100個Vision AccelerationPac編程舉例。相比VCOP內(nèi)核C,,使用ARM® NEON® SIMD的陣列添加簡單例子表明,,在6個周期中,ARM可以增加4個32位值,,從而獲得1.5周期每輸出的內(nèi)循環(huán)性能,,同時,VCOP充分使用其768位加載存儲帶寬,,在一個周期內(nèi)獲得8個輸出,。該結果相當于1/8周期每輸出的吞吐量,其實現(xiàn)了12倍于ARM的總體周期到周期速度,。
Vision AccelerationPac內(nèi)部EVE的ARP32 RISC內(nèi)核針對控制代碼和順序處理進行了優(yōu)化,。它支持運行SYS/BIOS、TI的實時操作系統(tǒng),,因此提供了對線程,、信號和其它RTOS特性的支持。
EVE受到全套代碼生成工具的支持,,包括TI的Code Composer Studio IDE中集成的優(yōu)化編譯器即模擬器,。EVE通過硬件計數(shù)器對非侵入式性能監(jiān)控提供嵌入式支持。它允許用戶對多個性能信號進行監(jiān)控,,與此同時,,在無需進行任何代碼修改的情況下,應用程序運行并允許深度監(jiān)控應用程序的運行時間表現(xiàn),。
使用Vision AccelerationPac的圓形交通標志識別舉例
典型的視覺分析處理涉及幾個階段(如圖3所示),,包括圖像預處理與特性檢測、相關物體識別,、圖像與模式匹配,,最后才是決策判斷。TI的Vision AccelerationPac最適合于減輕視覺分析處理前三個階段的密集計算,。決策判斷通常包括分類器,、浮點運算和矩陣轉換,C66x DSP內(nèi)核對它們的處理最為有效,。正因如此,,Vision AccelerationPac在SoC中與一個或者多個DSP配對使用。結果是,,把視覺分析工作量合理是劃分開來,。
TI的TDA2x可實現(xiàn)低功耗,、高性能的視覺處理系統(tǒng)。它擁有兩顆C66x DSP內(nèi)核和一個Vision AccelerationPac,,以及兩個嵌入式視覺引擎(EVE),。另外,它還包括一個視頻前端和汽車汽車聯(lián)網(wǎng)接口,。下一頁的圖4顯示了TDA2xx SoC結構圖,。
下面,我們來探討Vision AccelerationPac如何能夠加速ADAS圓形交通標志識別,。
一些世界圓形交通標志使用紅色圓圈作為分界線,,因此第一步便是從YUV422輸入數(shù)據(jù)只提取紅色像素。第二步是,,計算水平和垂直梯度,,使用亮度和對比度來確證紅色邊界線。然后,,使用霍夫變換算法找出圓形?,F(xiàn)在,使用數(shù)據(jù)庫中存儲的模式使圓形內(nèi)被識別相關區(qū)域圖像關聯(lián)起來,,以解釋交通標志(80 MPH),,最終做出決策判斷。在這種情況下,,結論是限速80英里/小時,。
圖3視覺分析處理流程圖
如下面圖5所示,Vision AccelerationPac可以高效地分擔圓形交通標志識別處理的大多數(shù)工作量,,包括基于互關聯(lián)的塊匹配模板加速器。DSP內(nèi)核用于提高最終決策的穩(wěn)健性,。使用霍夫變換算法來查找圓形是一項高計算密集型工作,,但使用Vision AccelerationPac時,霍夫變換算法查找圓形僅需140字節(jié)個代碼空間,,約(1.88*NUM_RADIUS) +1.81 cyc/pix個處理時間周期,,其中,NUM_RADIUS為我們在霍夫空間內(nèi)選擇搜索的半徑數(shù),,因此它的視覺識別時間非常短,,功耗非常低,并且硅片面積的性價比很高,。以每秒30幀對一幅720 × 480圖像進行完全交通標志識別約需50 MHz,,即小于10% EVE周期。保持了豐富的處理功能,,表明一個EVE可以同時運行多個視覺算法,。
圖4 TDA2x結構圖
圖5 使用Vision AccelerationPac實現(xiàn)圓形交通標志識別
機器視覺Vision AccelerationPac—汽車或者攝像頭處理以外的應用
Vision AccelerationPac可以使用的其它領域還有很多,。除視頻攝像頭分析處理以外,Vision AccelerationPac的固點倍增器和硬件通道是雷達分析處理的理想選擇,,因為它可以高效地處理快速傅里葉變換(FFT)和波束形成算法,。利用Vision AccelerationPac來處理1024點FFT所花費的時間小于3.5µ秒。因此,,雷達可用作汽車攝像頭系統(tǒng)的補充,,以探測許多不同的交通和氣象狀況。
汽車視覺所使用的相同機制,,也適用于許多其它機器視覺行業(yè),;工業(yè)自動化、視頻安全監(jiān)控和警告系統(tǒng),、交通監(jiān)控和車牌識別便是例子,。Vision AccelerationPac可用于擴展DSP應用,以一種更加自主和高功效的方式來解決今天的許多視覺分析問題,。
結論
Vision AccelerationPac是德州儀器創(chuàng)新型視覺分析解決方案,。利用一種針對高效嵌入式視覺處理進行高度優(yōu)化的靈活SIMD架構,Vision AccelerationPac擁有非常低的功耗和優(yōu)異的硅片面積效率,。Vision AccelerationPac與C66x DSP內(nèi)核結合使用,,可實現(xiàn)浮點和矩陣計算,從而極大地加速完整嵌入式視覺應用處理鏈,。除是一種高效,、可靠的架構以外,Vision AccelerationPac還使用一種簡單的基于C/C++的編程模型,,輸出非常緊湊的代碼,。它意味著,Vision AccelerationPac實現(xiàn)的系統(tǒng)具有非常低的內(nèi)存占用,,從而進一步降低了視覺系統(tǒng)成本和功耗,。TDA2x SoC及其Vision AccelerationPac,是實現(xiàn)智能汽車系統(tǒng),、工業(yè)機器和“可視”機器人視覺分析的一個理想平臺,,它們共同提高了我們的生活品質(zhì)。
TDAx SoC更多詳情,,請訪問www.ti.com/TDA2x,。
參考文獻
(1) 谷歌在Va. Tech測試無人駕駛汽車
(2) 尼桑宣布史無前例的無人駕駛汽車發(fā)展計劃
鳴謝
感謝Stephanie Pearson、Debbie Greenstreet,、Gaurav Agarwal,、Frank Forster、Brooke Williams、Dennis Rauschmayer,、Jason Jones,、Andre Schnarrenberger、Peter Labaziewicz,、Dipan Mandal,、Roman Staszewski和Curt Moore給本文提供的支持。