嵌入式視覺解決方案將是汽車實(shí)現(xiàn)全自動(dòng)駕駛的關(guān)鍵驅(qū)動(dòng)因素。為汽車裝配眼睛 – 采用多個(gè)攝像頭和圖像傳感器 – 是第一步,而汽車解析來(lái)自這些圖像的內(nèi)容并且相應(yīng)采取行動(dòng)也至關(guān)重要。要做到這一點(diǎn),嵌入式視覺處理器的硬件必須經(jīng)過性能優(yōu)化,同時(shí)實(shí)現(xiàn)低功耗和小體積,擁有對(duì)硬件進(jìn)行高效編程的工具,并且擁有運(yùn)行這些處理器的算法。
過去,汽車安全的重大改進(jìn)(例如抗碎裂玻璃、三點(diǎn)式安全帶、氣囊)都是被動(dòng)安全措施,目的是盡量減少事故造成的傷害?,F(xiàn)在,我們的技術(shù)可主動(dòng)幫助駕駛員第一時(shí)間避免碰撞。高級(jí)駕駛員輔助系統(tǒng) (ADAS) 將幫助自動(dòng)駕駛車輛成為現(xiàn)實(shí)。盲點(diǎn)偵測(cè)可以在駕駛員試圖進(jìn)入被占用車道時(shí)發(fā)出提醒。車道偏離報(bào)警和車道保持輔助可在車輛偏離車道時(shí)提醒駕駛員,并主動(dòng)將車輛駛回原先車道。行人偵測(cè)可告知駕駛員注意車前或車后的行人,而自動(dòng)緊急剎車通過剎車而避免事故或者行人受傷。通過將ADAS能力結(jié)合在一起,我們離自動(dòng)駕駛車輛的目標(biāo)越來(lái)越近 —所有這些都通過高性能視覺處理而實(shí)現(xiàn)。
目前,汽車制造商在汽車中配備了更多攝像頭,如圖1所示。前置攝像頭可以偵測(cè)行人和其他障礙,并且采用適當(dāng)?shù)乃惴◣椭{駛員制動(dòng)。后置攝像頭 – 美國(guó)強(qiáng)制要求從2018年起的大多數(shù)新車配置后置攝像頭 – 可以通過提醒駕駛員注意不在視野內(nèi)的車后物體而挽救生命。駕駛艙內(nèi)面向駕駛員的攝像頭可以識(shí)別駕駛員分心,并發(fā)出提醒。最近,增加四到六個(gè)攝像頭可以提供車輛周圍360度的視圖。
圖1 配備高性能視覺處理器的攝像頭可以 “看到” 物體是否未在預(yù)期地點(diǎn)
用于對(duì)象檢測(cè)的視覺處理器
由于駕駛員面向前方,前置攝像頭似乎沒有必要。其價(jià)值在于,前置攝像頭在探測(cè)和提醒障礙時(shí)必須始終比駕駛員快。盡管ADAS系統(tǒng)的反應(yīng)快于駕駛員,但它需要借助嵌入式視覺提供對(duì)視頻流的實(shí)時(shí)分析,并知道采取哪種應(yīng)對(duì)措施。
視覺處理器基于異構(gòu)處理單元。這意味著編程任務(wù)被分配到具有不同強(qiáng)項(xiàng)的處理單元中(見圖2)。用于傳統(tǒng)32位標(biāo)量處理器(易于編程開發(fā)的處理器)的大部分代碼使用C或C++編寫。向量DSP單元將執(zhí)行大部分計(jì)算工作,因?yàn)樵搯卧獦O大的指令字可對(duì)收到的每個(gè)圖像的像素進(jìn)行大量并行計(jì)算。
圖2 視覺處理器基于異構(gòu)處理單元,包括標(biāo)量和極大指令字 (VLIW) 向量DSP單元
檢測(cè)車前行人是廣義的“物體檢測(cè)”的一部分。對(duì)于要檢測(cè)的每個(gè)物體,傳統(tǒng)計(jì)算機(jī)視覺算法采用手工方式。檢測(cè)算法的例子包括Viola-Jones和最近的定向梯度直方圖 (HoG)。HOG算法通過查看圖像內(nèi)的邊緣方向而試圖描述物體。HOG直到2014年才被視為一種先進(jìn)的行人檢測(cè)算法。
通過深度學(xué)習(xí)而進(jìn)行物體檢測(cè)的興起
盡管依據(jù)人類大腦建模的計(jì)算機(jī)系統(tǒng) – 神經(jīng)網(wǎng)絡(luò)的概念已經(jīng)出現(xiàn)了很長(zhǎng)時(shí)間,但直到最近,半導(dǎo)體才實(shí)現(xiàn)了處理器的性能,使其成為可行的現(xiàn)實(shí)。2012年,卷積神經(jīng)網(wǎng)絡(luò) (CNN) 進(jìn)入每年一度的ImageNet競(jìng)賽表明,在圖像分類方面,這種技術(shù)比傳統(tǒng)計(jì)算機(jī)視覺算法在準(zhǔn)確度上有重大改進(jìn)。由于準(zhǔn)確度更高,基于神經(jīng)網(wǎng)絡(luò)的圖像分類、檢測(cè)和識(shí)別技術(shù)得到了快速普及。
深度神經(jīng)網(wǎng)絡(luò)的重要突破是,對(duì)象檢測(cè)不必進(jìn)行手動(dòng)編碼。深度經(jīng)網(wǎng)絡(luò)允許各種特性自動(dòng)從訓(xùn)練實(shí)例中學(xué)習(xí)。如果神經(jīng)網(wǎng)絡(luò)有一個(gè)輸入和輸出層,而且至少有一個(gè)隱含的中間層,它就被視為具有“深度”學(xué)習(xí)能力。每個(gè)節(jié)點(diǎn)從前一層中多個(gè)節(jié)點(diǎn)的加權(quán)輸入結(jié)果進(jìn)行計(jì)算。CNN是目前為視覺處理高效實(shí)施深度神經(jīng)網(wǎng)絡(luò)的最先進(jìn)技術(shù)。CNN的效率更高,因?yàn)樗鼈冎貜?fù)利用圖像中的多個(gè)權(quán)重。
在嵌入式領(lǐng)域,早期的CNN采用GPU或者采用視覺處理器的向量DSP部分實(shí)現(xiàn)。然而,考察三個(gè)不同異構(gòu)處理單元中執(zhí)行的任務(wù)非常有幫助,如圖3所示。
圖3 向嵌入式視覺處理器添加CNN引擎可幫助系統(tǒng)通過訓(xùn)練而學(xué)習(xí)
CNN早期在硬件中的實(shí)施包括有限的乘累加 (MAC) 單元。例如,Synopsys的EV5x – 業(yè)內(nèi)首個(gè)可編程、可配置的視覺處理器IP內(nèi)核 – 實(shí)施了具有64個(gè)MAC的CNN引擎。EV5x的運(yùn)行頻率為500 MHz,可產(chǎn)生32 GMACs/s或64 GOPs/s的性能(乘法累加器在一個(gè)指令中執(zhí)行兩次運(yùn)算)。這一性能不足以處理整個(gè)1MP (1280 x 1024) 幀或圖像。然而,其處理能力足以在部分圖像上執(zhí)行CNN(比如64x64像素塊)。要處理整個(gè)圖像,行人檢測(cè)需要分兩個(gè)步驟進(jìn)行。向量DSP將對(duì)收到的每個(gè)視頻流中的圖像執(zhí)行計(jì)算密集型感興趣區(qū)域 (ROI) 算法。ROI采用滑動(dòng)窗口方法識(shí)別可能的行人候選對(duì)象(例如排除天空部分)。然后,這些“行人”圖像塊由CNN處理,確定是否真的是行人。實(shí)踐證明,基于CNN的行人決策解決方案比HoG等算法的精確度更高,也許更重要的是,與通過寫入新的手動(dòng)算法而檢測(cè)自行車而非行人相比,CNN更容易重新訓(xùn)練,從而用來(lái)查找自行車。
更大型的CNN用于全幀對(duì)象決策
隨著嵌入式CNN變得更加強(qiáng)大,它們不再僅僅限于處理收到的圖像。Synopsys最新的視覺處理器EV6x包含了一個(gè)配備880個(gè)MAC的CNN引擎 – 比前代產(chǎn)品的性能有了顯著提高。該產(chǎn)品的運(yùn)行頻率為800MHz,可生成 (880 x .8) = 704 GMACs/s或大約1400 GOPs/s。這一性能足以使用CNN處理整個(gè)1MP圖像。向量DSP對(duì)于預(yù)處理圖像(例如重新格式化和金字塔處理)以及執(zhí)行后處理任務(wù)仍然非常有用,例如非極大值抑制 (NMS)。如圖4所示,EV6x仍為異構(gòu)處理提供了標(biāo)量、向量和CNN單元。它還帶有多內(nèi)核特性,可通過輕松擴(kuò)展而配置多個(gè)視覺內(nèi)核。
圖4 DesignWare EV6x嵌入式視覺處理器包含用于預(yù)處理和后處理的標(biāo)量、向量和CNN處理
處理整個(gè)圖像幀的好處是CNN可以通過訓(xùn)練而檢測(cè)多個(gè)對(duì)象。如今,CNN圖形不僅僅用于尋找行人,而是可以通過訓(xùn)練而尋找自行車、其他機(jī)動(dòng)車輛、貨車等。采用HoG算法做到這一點(diǎn)需要針對(duì)每個(gè)新對(duì)象類型對(duì)算法進(jìn)行手動(dòng)編寫。
訓(xùn)練和部署CNN
如前文所述,CNN不采用編程方式。它需要經(jīng)過訓(xùn)練。Caffe或TensorFlow這樣的深度學(xué)習(xí)框架將使用較大的圖像數(shù)據(jù)集對(duì)CNN圖形進(jìn)行訓(xùn)練 – 通過多次迭代而對(duì)各個(gè)系數(shù)進(jìn)行優(yōu)化 – 從而檢測(cè)圖像中的具體特征。圖5顯示了CNN圖形訓(xùn)練的關(guān)鍵組件,其中,訓(xùn)練階段采用云端的GPU存儲(chǔ)體,以提供所需的大量處理能力。
圖5 圖形訓(xùn)練所需的組件
部署 – 或“推理”–階段在嵌入式系統(tǒng)上執(zhí)行。如Synopsys的MetaWare EV Toolkit等開發(fā)工具采用訓(xùn)練階段的32位浮點(diǎn)權(quán)重或系數(shù)輸出,并擴(kuò)展為定點(diǎn)格式。這樣做的目標(biāo)是采用最小的分辨率,因?yàn)檫@仍能產(chǎn)生與32位浮點(diǎn)輸出相當(dāng)?shù)木_度。對(duì)于嵌入式解決方案來(lái)說,更少的乘累加位數(shù)意味著計(jì)算CNN所需的功耗更低,芯片面積更小(從而降低成本)。根據(jù)Synopsys的計(jì)算,如果不進(jìn)行圖形的重新訓(xùn)練,需要至少10位定點(diǎn)的格式來(lái)保證和32位浮點(diǎn)Caffe輸出差不多的精度。
MetaWare EV工具采用權(quán)重和圖形拓?fù)?CNN圖形中存在的卷積,非線性,池化結(jié)構(gòu)和全面互連層),并且會(huì)把這些映射到專用CNN引擎的硬件中。假設(shè)沒有特殊圖形層,CNN現(xiàn)在可通過“編程” 檢測(cè)你想要識(shí)別的對(duì)象,只要這些內(nèi)容CNN事先訓(xùn)練過。
為了保持小巧的體積,CNN引擎經(jīng)過優(yōu)化,可執(zhí)行關(guān)鍵CNN特性,例如3x3和5x5矩陣相乘,但其優(yōu)化程度不夠,無(wú)法成為完全的硬件解決方案。通過編程保持靈活性非常重要。隨著CNN的持續(xù)演進(jìn) – 例如新的分層技術(shù)或池化方法 – 向量DSP可以在視覺處理中扮演另一個(gè)重要角色。由于向量DSP和CNN引擎在Synopsys EV6x中密切耦合,根據(jù)需要從CNN對(duì)向量DSP分派任務(wù)變得非常簡(jiǎn)單。整合進(jìn)MetaWare EV工具中的OpenVX運(yùn)行環(huán)境保證了這些任務(wù)根據(jù)其他向量DSP處理要求而定時(shí)運(yùn)行。向量DSP應(yīng)該是很好地前瞻到了CNN的發(fā)展。
圖6顯示了嵌入式視覺處理器的輸入和輸出。來(lái)自車輛攝像頭的流圖被送到預(yù)先配置了圖形算法和權(quán)重的CNN引擎中。CNN的輸出是經(jīng)過分類的圖像內(nèi)容。
圖6 嵌入式視覺處理器的輸入和輸出
場(chǎng)景細(xì)分和導(dǎo)航
截止到目前,我們已經(jīng)討論了可用于避免行人碰撞的(或者自行車、汽車或貨車)對(duì)象分類 – 這是ADAS的一個(gè)例子。性能足夠高的CNN也可用于場(chǎng)景細(xì)分 – 識(shí)別圖像中的所有像素。比起識(shí)別特定像素,場(chǎng)景細(xì)分的目標(biāo)主要是識(shí)別場(chǎng)景中對(duì)象類型間的界限。知道道路與場(chǎng)景中其他對(duì)象的相對(duì)關(guān)系對(duì)于車輛導(dǎo)航非常有幫助,并且使我們向自動(dòng)駕駛的目標(biāo)更近一步。
圖7 場(chǎng)景細(xì)分可識(shí)別對(duì)象類型間的界限
舉例來(lái)說,DesignWare® EV61 CNN上運(yùn)行的場(chǎng)景細(xì)分可采用11類對(duì)象(道路、天空、建筑物、行人等)對(duì)流式圖像進(jìn)行細(xì)分。通過使用五個(gè)通道的1920x1080圖像作為輸入,以800MHz的頻率運(yùn)行的CNN達(dá)到了18fps。如果沒有足夠的性能處理完整圖像(幀)的多個(gè)事例,CNN就很難實(shí)現(xiàn)場(chǎng)景細(xì)分。
汽車視覺中視覺處理的未來(lái)要求
視覺處理解決方案會(huì)隨著未來(lái)更高的處理性能需求而持續(xù)擴(kuò)張。對(duì)于車輛中現(xiàn)有的攝像頭,1MP圖像是合理的分辨率。然而,車輛中的攝像頭不斷增多,對(duì)分辨率的需求從1MP增加到3MP,甚至是8MP攝像頭。攝像頭分辨率越高,系統(tǒng)就可以檢測(cè)到更遠(yuǎn)處的對(duì)象。這樣可以分析更多的像素位,以確定前方是否有物體,例如行人。攝像頭幀率 (FPS) 也很重要。幀率越高,延時(shí)越短,而且停車距離也越短。對(duì)于以15 FPS運(yùn)行的1MP RGB攝像頭,需要處理的數(shù)量是1280x1024像素/幀 x 15幀/秒 x 三種顏色或者大約59M字節(jié)/秒。30fps的8MP圖像需要處理3264x2448像素/幀 x 30幀/秒 x 三種顏色,或者大約720M字節(jié)/秒。
這種卓越的處理性能不能帶來(lái)功耗或芯片面積不成比例的增加。汽車是屬于持續(xù)性價(jià)格承壓的消費(fèi)品,更低的功耗對(duì)其意義重大。視覺處理器的架構(gòu)必須針對(duì)功耗不斷優(yōu)化,并且還要保持其可編程性。
總結(jié)
隨著汽車應(yīng)用領(lǐng)域中對(duì)ADAS的要求持續(xù)提高,嵌入式視覺和深度學(xué)習(xí)技術(shù)也需要跟上發(fā)展步伐。對(duì)象檢測(cè)已經(jīng)從小規(guī)模識(shí)別發(fā)展為包含每個(gè)像素的全面場(chǎng)景識(shí)別,而且靈活性也變得和性能、功耗、面積同樣重要。Synopsys的DesignWare EV6x嵌入式視覺處理器可通過全面編程而處理新的圖形,并在極小的面積和功耗下提供了優(yōu)秀的性能。
作者:Gordon Cooper,Synopsys嵌入式視覺產(chǎn)品營(yíng)銷經(jīng)理