各位朋友,專家,下午好,我來自深圳自行科技,今天介紹的題目是基于FPGA平臺的ADAS和高度自動駕駛解決方案。
首先簡單介紹下自行科技,自行科技是一家專注在智能汽車電子領域的創業公司,在基于嵌入式人工智能的ADAS和自動駕駛產品上持續研發,致力于推出滿足智能汽車前裝要求的核心模組和系統。自行科技提供的產品包括L0/L1級的車內車外聯合ADAS產品, 以及L2+的模組和解決方案。公司的創始團隊來自中興、華為,并吸收了汽車產業的專家,在深圳和武漢設立了兩個研發中興,核心研發團隊35人。
今天具體介紹三個方面的內容:一是,對于ADAS和自動駕駛產業,核心問題是什么;二是,我們如何解決的的;三是,我們做了什么產品。
首先看一下自動駕駛的目標,自動駕駛可以分為成長期和成熟期兩大發展階段,成長期就是ADAS,ADAS產品大部分還是基于傳統的車身結構、車電架構、公共設施和法律法規實現的,目標是助人感知,助人決策,而自動駕駛需要創新的車身結構、車電架構,以及公共設施和法律法規的完善,目標是類人感知,類人決策,甚至類人感知、類人決策還不夠,最終應該是超人感知、超人決策。比如:自動駕駛在夜晚環境下的感知最終應該超越人類,而在決策效率和決策安全方面應該超過目前的有人駕駛。
ADAS和自動駕駛之間存在非常大的Gap,至少經歷三個大的階段逐步實現自動駕駛。第一是以獨立功能為主的安全預警類產品,在這個階段道路感知逐漸成熟;第二個階段是以傳感器融合和功能融合為主的主動干預類產品,在這個階段決策控制走向成熟;第三個階段是自動駕駛,整個自動駕駛系統,以及道路設施、法律法規逐漸完善成熟。特別提一下: L0-L1的駕駛安全很多是由于駕駛員疲勞和注意力分散造成,L2-L3會存在駕駛員過度使用輔助駕駛和自動駕駛造成安全事故,L4和L5則需要新一代的智能座艙匹配自動駕駛,那么車內注意力輔助和人臉識別會在自動駕駛路徑上有獨特的作用,比如及時提醒,以及個性定制化的服務。
對于自動駕駛中的核心問題,至少有六個:高可靠、高性能、高速度、低功耗、低成本、和專業化。高可靠主要是要有車規級的軟硬件系統,能夠保障3年6萬公里的壽命要求;高性能和速度主要是靠高效率的算法、高計算力的硬件,能夠保證各種環境下準確和實時的感知、決策和執行。低功耗、低成本是車廠能夠批量安裝的重要保障;專業化主要是要合乎規范和測試流程,并提供良好的用戶體驗。
針對ADAS和自動駕駛的發展階段和核心問題,自行科技的定位是提供適配當前市場需求的ADAS和自動駕駛核心模組和系統,在這個系統中,深度學習是算法核心,FPGA是計算核心。
其實,基于FPGA平臺來實現深度學習挑戰非常巨大,我們對神經網絡和FPGA做了非常大量優化,從而實現單目的有效感知,并使得基于FPGA平臺的CNN網絡在多傳感器融合、自動駕駛規劃和執行方面具有通用價值。優化時需要考慮性能、速度、價格和功耗四個方面問題。
接下來,針對這些優化問題,重點講下我們是怎么做的。
對于神經網絡的優化我們主要考慮幾個問題:泛化能力、回歸精度、處理速度、和網絡深度。泛化能力是環境多樣性和目標多樣性下可靠感知的重要保障;回歸精度是目標測距和目標跟蹤準確性的重要保障;處理速度是ADAS和自動駕駛實時性的重要保障,至少20-30fps的速度才有可能;網絡深度則對多種指標產生影響,同時也有利于擴展新的功能模塊;
下面是我們對神經網絡整體的一個優化策略:從性能因子來看,圖像尺寸和網絡深度對性能影響最大,網絡寬度次之,最后是權值精度;從速度因子來看,正好相反,權值精度對速度影響最大,網絡寬度次之,最后是圖像尺寸和網絡深度;所以,權值精度的優化是神經網絡優化的重點,同時對數據存儲與數據計算做高速并行,從而實現性能優先的速度優化。這里,網絡深度和尺寸的Benchmark:512*512 SSD
舉個例子,權值優化主要是采用低精度權值代替32位浮點型權值,在實際的產品中我們采用的是1比特權值,也就是二值網絡。二值網絡優點在于擺脫了浮點計算,擺脫了對FPGA中受限資源DSP的依賴,采用加法、減法、或者移位操作來實現卷積等計算。說明一下,二值網絡在大幅降低計算量的同時,性能降到浮點型網絡的90%左右,但隨著網絡深度的增加,可以逼近浮點網絡。
二值網絡還有個特點,它依然保持了網絡的對稱性,非常利于后面要講的FPGA加速。相比權值稀疏化而言,稀疏化計算量雖然也降低了,但是網絡不對稱,網絡延時不對稱,受限于最大延時路徑,負載平衡可以得到某種緩解。對于VGG16,基于二值網絡,輸入輸出各做32路并行,卷積9路并行,可提升9000倍的計算速度。
像SDD這種網絡,即使做了二值化,計算量也非常大。在FPGA平臺上實現難度依然很大,我們已經做了一年多FPGA優化工作。為了讓CNN,尤其是大型CNN在低成本的FPGA內運行,我們做了一個關鍵性工作,就是在FPGA內將CNN平臺化,用FPGA的各類資源將CNN的各個單元模塊化,在CNN網絡解釋器的協調下快速構建新的網絡和網絡升級。
FPGA的并行優化,有四種,卷積操作并行、特征圖內并行、特征圖間并行、層/幀并行,我們主要做了卷積并行和特征圖并行。
還有一個需要提一下,就是外部數據交換和優化。經過對FPGA平臺的深度優化,性能有多大改善呢?以ZYNQ7020為例,可以看到,YOLO Tiny可達到60幀的處理速度,VGG16達到26幀的處理速度,SDD300也達到了16幀的處理速度,而且性能并未下降,功耗和價格也維持在合理可控的范圍。對于更復雜的器件,更復雜的SDD500可達到20~30幀的幀率。
通過對神經網絡和FPGA平臺的優化,我們的單目視覺模組在環境多樣性和目標多樣性下表現出了良好性能。例如:雨天、夜晚、雪天和隧道出口都能可靠的識別。對于側向車輛、局部暴露車輛、以及異型車輛也能可靠識別,尤其在我們國家,道路復雜、路況混亂,對ADAS和自動駕駛來講也是個不小的挑戰。
除去目標多樣性與環境多樣性,對于單目感知,視場與識別精度的平衡也是一個重要問題。隨著視角的增大,系統可以感知更多的道路信息,更好地進行趨勢預測,但同時也會降低目標的識別精度。我們的解決辦法是將像素投放到盡量大的視場里,確保道路語義解析和趨勢預測,同時加強小目標的識別精度,對于轎車、大型車和行人,在像素高度為20、25、30時,都可以做到可靠識別。
總結一下,我們的單目視覺可以做到:對于各類車輛做到多姿態,多角度的識別,最大的可靠識別距離100m;對于各類行人和非機動車,最大可靠識別距離可以做到50m,并支持夜間行人識別功能。
下面介紹下我們做的產品,目前,車內車外ADAS的產品樣機都已完成,今年可以量產供貨。
車外ADAS系統,也就是前向ADAS系統,我們提供預警類的PCW、FCW和LDW三大核心功能,也可以支持AEB和ACC、LKA等干預類產品。
車內ADAS系統,也就是駕駛員注意力輔助系統,包括駕駛員疲勞預警和身份識別。
大家可能已經注意,注意力輔助系統中還包含了身份識別或者人臉識別功能,人臉識別對于乘用車的個性化駕駛艙,以及未來新的商業模式都是十分必要的。我們提供軟硬件兩種服務,對于硬件服務,ARM上可實現3s的識別速度,而在FPGA上可實現毫秒級的處理速度,方法是深度學習。
這是我們正在進行的一個自動駕駛方案項目。我們與某電動巴士企業合作,在大學校區或者景區內聯合開發一款自動駕駛大巴,用于固定線路接送行人。目前我們的方案就是采用強可靠的功能設計,以及高冗余的架構設計,實現絕對高安全等級的自動駕駛系統。我們在車身周圍安置了多組攝像頭與雷達,分別管理車輛不同方向的不同功能,然后進行信號融合處理和決策規劃,最后把自動駕駛關鍵決策信息傳遞給車輛主控。我們希望系統最終的安全性等級可以達到ASIL D級。
目前,我們已經與多家客戶展開緊密合作。從傳統車廠到新能源和互聯網造車公司,也包括許多商用車客戶與Tier1級別的汽車零部件供應商。
以上就是我今天想和各位朋友分享的主要內容。期待和各位在核心模組與控制器、整體解決方案或者定制化開發等方面取得合作,感謝大家的關注!
原文鏈接:http://www.sohu.com/a/147105481_391994