當今的自動駕駛行業是一個百舸爭流的局面,總體來看,還是西方引導東方的探索摸索,以 google 為主的以激光雷達為主的流派和以 Tesla 為主的機器視覺流派引導了整個市場。從發展趨勢來看,兩種方法正在進一步融合,最終會各取優勢而相互補充發展。對整個自動駕駛領域,其核心技術是個擬人化的實現過程,即:感知->認知->決策->控制->執行五部分。感知,是所有智能體所要擁有的基本屬性,自動駕駛要解決的第一個問題,就是汽車的感知系統,AI 算法的核心就是要解決感知問題。汽車的感知系統是多種傳感器融合的系統。
圖 1 自動駕駛技術框架圖 來源:億歐智庫
如上圖所示,多傳感器融合共同組成自動駕駛的感知層已經成為行業共識,這是一個復雜的技術體系,本文主要討論最主要的感知部分:機器視覺,以攝像頭為主的計算機視覺解決方案,為汽車加上「眼睛」,能有效識別周邊環境及物體屬性。隨著 AI 算法的蓬勃發展, 機器視覺由基于規則向基于 CNN 神經網絡轉變。
圖 2 汽車傳感器示意圖 來源:億歐智庫
國內的主要發展方向集中在視覺上的突破,一種原因是激光雷達和毫米波雷達被國外幾個大公司控制,核心技術短期內難以突破,成本居高不下。而做機器視覺, 則成本低廉,且容易上手,國內攝像頭的供應鏈很完善,所以在這種情況下,國內廠商更傾向于 CNN 網絡的機器視覺能做更多的事情,其實這種選擇是正確的,國內廠商突破的最好的一個點就是視覺突破,視覺方案相對成熟和完善,可以利用國內的一些特點,找到差異化競爭的突破口,快速形成優勢,再逐步迭代更新技術。如開車時任意變道的行為,這個國外的汽車檢測方式是等尾部進入車道內再進行檢測,這明顯不符合國情,所以算法本土化,解決國人開車遇到的問題,就是差異化競爭,這也更需要對算法有自己的把控能力。
車載系統對 CNN 網絡的目標檢測識別的要求是很高的,而且越高越好,這不僅僅是為了檢測車道和障礙物,還會在自動駕駛中的另一個必不可少的條件:高精度地圖上有巨大的利用空間。因為傳統的地圖模式無法滿足自動駕駛的需求,它需要更多的維度信息,更新更及時,精度達到厘米級。精度要想達到厘米級,僅僅依靠衛星是遠遠不夠的,目前兩個解決方案,一個是 RTK 方案,即在地面上建立大量的基準站,由基準站來彌補 GNSS 定位的不足,這個方案精準,但卻很貴。另外一個方案就是先將地圖上的多維度信息保存到數據庫,然后通過車載上的多傳感器(攝像頭,雷達)所獲取到的特征信息和數據庫進行匹配,從而修正和彌補定位的精度問題,毫無疑問,這個方案更加實用和快速部署。國內地圖公司更傾向于用這種方式,這就更加要求攝像頭檢測物體特征精準度的問題了。
由算法的精度問題,不得不提算法的實現芯片方案,現在的精度最好的算法還是基于 CNN 的 AI 算法模型,CNN 算法要求的計算量是很大的,目前很多廠商都是直接用 nvidia 的 TX2 做為運算主要載體,在 TX2 上運行對 GPU 友好的算法,這里其實有個誤區,當算法對 GPU 不友好時,就直接宣判了該算法的死刑,這樣操作是不合理的,GPU 成了前進路上的一個拐杖,拐杖用的多了就產生了依賴性,反而喪失了發現更多空間的創造性,我們用兩條腿走路,還是要回歸到問題的本質,根據問題的具體需求來尋求最優的解決方案。自動駕駛車載系統的基本要求低延時低功耗 以及算法的復雜性和多變性,決定了用 FPGA 做車載加速方案是一個理想的選擇。用 FPGA 做加速方案的另外一個不可忽視的好處是:成本可以做的很低。
所以機器視覺的好的方案已經不單單是好的算法,而是一個在合理的硬件成本里得到一個最優算法的求解問題。由算法來保證識別精度,由硬件來保證算法的實現速度,由成本來保證兩者都需要性價比最優的搭配,這才是正確的解決思路。當然,想同時實現上述幾點,并非易事。路,要一步一步的走,坑,要一個一個的趟,我們上述的問題一個一個的分析。
算法同源不同行,孰高孰低檢測忙
在整個 AI 算法的大環境下,車載視覺系統的算法也是基于 CNN 的分割算法,這就引出目前主要的兩個算法 Faster RCNN 系列和 yolo 系列,兩者各有千秋,前者精度更準,后者速度更快。前者是 two-stage 的方案,即先用最好的網絡來找出特征值,然后再調整框來檢測目標。后者是 one-stage 的方案,即找特征值和畫框在一個網絡里完成。
通俗的理解,Faster RCNN 更符合人類「強強聯合」的概念,即:找出目前性能最好的網絡,然后再組裝成一起,產生更優的效果,它是基于多網絡融合的方案,所以它的特點就很明確:算的準,但是算的慢。yolo 的誕生,恰恰是解決了這個問題,yolo 的最大的特點就是快到沒朋友,但在精度方面卻遜色于 Faster RCNN。
數據對比:
圖 3 Faster R-CNN 是精度最高的 來源:網絡
COCO 數據集上,前 10 名中有 9 項都是來自于 Faster R-CNN 的變體。
這兩種方法都有很多變體,one-stage 的方法在精度上不斷想與 two-stage 的方法抗衡,two-stage 不斷的在加快計算速度,但在數據集上的結論以及越來越快的 Faster R-CNN 變體的可以說明,Faster R-CNN 的 檢測精度始終保持領先。但在速度上,yolo 是遙遙領先的。
圖 4 yolo 的速度是最快的 來源:網絡
正是 Yolo 在速度上明顯提高,YOLO 的確受到車載系統的青睞,Yolo 真的是車載系統的首選嗎?答案未必,正如上文所述,Faster RCNN 的精度是最好的,如果能將其速度也提上去,豈不是更好的選擇。
為此,我們先分析下 Faster RCNN 精度高的原因:
首先,前景背景分離的區別。Faster RCNN 是有前景背景分離的。這會要求在訓練該網絡時需要進行正負樣本都要訓練,也就是說正確的范疇我要負責,錯誤的范疇我也要負責。這會大大減少誤檢率的概率,所以 Faster RCNN 的查全率(recall)會特別的高。
而 yolo 則沒有這樣的算法結構,它只有正樣本訓練,不會區分前景和背景的區別。其實這一點是對自動駕駛不太友好的,例如之前 Tesla 的自動駕駛事故就是因為檢測算法沒有區分前景和背景,將迎面開來的白色卡車和背景中的白云混為一體,從而導致事故發生。
其次,畫框方式的區別。Faster RCNN 和畫框的方式和 yolo 是不一樣的,yolo 是將框的問題作為一個聚類問題解決,由算法去自適應物體形狀。而 Faster RCNN 是按照一定規則的框去逼近物體形狀。如下圖所示,9 個矩形共有 3 種形狀,長寬比為大約為(1:2,1:1,2:1)三種,通過 anchors 就引入了檢測中常用到的多尺度方法。
圖 5 框的類型 來源:網絡
這種人為定義的框的結構更能精準的標定物體,當然,任何優勢都是有代價的。Faster RCNN 為每一個點都配備這 9 種 anchors 作為初始的檢測框,所以在原始圖上,anchors 的個數特別多,然后讓 cnn 來判斷哪些是有目標的前景,哪些是沒有目標的背景,然后再對目標 anchors 進行排序和 NMS(非最大值抑制),即能得到最好的效果。能量是守恒的,當獲得優勢 A 時,并將付出 B 的代價,關鍵看代價是什么。feature map 每個點設置 9 個 Anchor,所以他的 anchor 是很多的,如下圖所示(網絡截圖):
圖 6 anchor 的框圖 來源:網絡
當然,好處也是很明顯的,舉個例子,如下圖:
圖 7 框的平移轉換示意圖 來源:網絡
每個 Anchor 的平移量和變換尺度,顯然即可用來修正 Anchor 位置了。紅色為提取的 foreground anchors,即便紅色的框被分類器識別為飛機,但是由于紅色的框定位不準,這張圖相當于沒有正確的檢測出飛機,每個 Anchor 的平移量和變換尺度,即可用來修正 Anchor 位置了,表現結果即是由只標出主體的紅框轉換為標記更準的綠框,顯然,綠框的精度更準。
相對來說,Yolo 系列不區分前景和背景,畫框的方式也是做一個回歸的問題,這會對密集的目標的畫框方式導致不準,yolo 會把密集的目標會畫成一個框。
圖 8 yolo 密集目標檢測 來源:雪湖實測
除了精度高之外,能做多網融合是 Faster RCNN 的另外一個很重要的特點。特別對于車載系統,由于現實的復制性和應用的廣泛性,經常會需要添加不同的網絡和良好的性能,如增加車道檢測等,可以將不同的網絡通過 interp(雙線性插值)層來進行實現不同網絡之間的平滑過渡。
利用這個特點,我們可以做很多啟發性的探索,前面提到,多傳感器融合來構建自動駕駛的感知層是行業共識,如激光雷達在自動駕駛中是個很核心的傳感器,有沒有將激光雷達和視覺同時融合到一個網絡中的方案呢?有人提出這樣的方案,如下:
圖 9 用 FasterRCNN 來融合激光雷達和視覺算法 來源:網絡
上圖的方案,總體上沿用了 Faster RCNN 的檢測框架,但是在輸入、proposal 的形式以及 Faster RCNN 網絡上做了較大的改動,以實現視覺與激光點云的信息融合。
這個網絡給了我們很大的啟示,多傳感器融合方案框架是自動駕駛的必備技能,我們必然要考慮不同的傳感器的特性和適應該傳感器的算法結構,然后將多種算法結構融合到一個算法框架中來,而 Faster RCNN 網絡本身就是基于多網絡融合的方案制成的,所以用 Faster RCNN 來做車載系統有其兼容多傳感器方案的巨大優勢。
既然 Faster RCNN 這么多的好處,為什么用的人少呢?主要原因就是算的慢,如下圖所示
由上面圖表可以看出,Faster RCNN 在 TX2 的運行結果是非常慢的。算法慢,便無解了嗎?未必。因為這里所謂的慢,是針對 GPU 而言的,是因為算法對 GPU 不友好導致的結果,而對 GPU 不友好,未必對其他異構計算平臺不友好,事實證明,這恰恰是 FPGA 的優勢所在。
安能得來偷天技?兼顧精度與速度
在 GPU 運行慢的網絡,可以在 FPGA 上進行加速實現。而要想提高速度,就要對網絡進行具體分析,是哪些層運算速度慢以及慢的原因在哪里?
圖 11 Faster RCNN 的框架圖 來源:網絡
如上圖所示,前半部分是基礎網絡來提取特征值,后半部分在畫框,RPN 網絡負責前景背景分離,排序算法負責篩選,最后全連接輸出結果。
總體運行結果,進一步分析每層的耗時:
圖 12 Faster RCNN 在 gpu 中每層的耗時 來源:雪湖實測
關鍵層 interp 層的分析:
圖 13 Interp 層分析 來源:雪湖實測
通過圖 12 的分析結果我們得出結論,耗時最長的都集中在了 proposal(排序)及以后的層(FC 層)。通過圖 13 Interp 層(雙線性插值)的分析,我們也得出結論,GPU 對 Interp 層的加速有限,速度沒有 CPU 的運算快。通過這些數據的分析,我們就能很明白的知道 GPU 的優勢和劣勢在哪里,GPU 的優勢在于能重復數據切片,在運算 cnn 圖片時它是有優勢的,因為圖片可以分成不同的 tile 片,然后 GPU 會對每個 tile 進行并行計算,當算法并不能很好的完成切片動作時,GPU 便沒有什么實質的優勢,從上圖可以看出,proposal 和 FC6 都很耗時,proposal 層就是在排序,排序對 GPU 是不友好的。Interp 層也是不好切片操作的,所以 proposal 模塊及以后耗時比較大。
知道了相應的數據和原理,在 FPGA 上就能很好解決這些問題,對 FPGA 來說,FPGA 是可編程的,是可以將整個算法一分為二的,在 proposal 之前是一部分,在 proposal 之后是一部分,兩者在全流水運算后是一個并行的狀態。這樣用并行的計算來抵消后面的耗時時間,就能大大的縮小計算時延。
針對 Interp 層,FPGA 可以將相應放大的系數存入 BRAM 中,這樣的時間更短,是 CPU 的 3 倍左右的速度。Interp 層的意義是很大的,因為前面我們分析過,自動駕駛的感知層很適合做多網絡融合的方案,而 Interp 層正式這些網絡結合的連接層,經過大量實驗證明,用 Interp 做分辨率的上下采樣切換,能最大的保留原始圖片的特征信息,從而使多個網絡間能夠平滑過渡。這也就意味著多網絡融合的方案更適合用 FPGA 來實現。
除了前面的優化方法之外,我們還可以考慮層合并,切割 featuremap,權重共享,減少 IO 讀寫時間等方式來進行進一步的優化。另外一個不得不提到優化方向就是量化成 8bit 數據進行計算,這樣 FPGA 中的 DSP 每次都能運算兩個數,這就可以使用性價比更高的 FPGA 芯片上進行運算,從而得到更高的收益。雪湖科技就是這樣做的。
圖 14 雪湖科技開發的 Faster RCNN 的性能參數
當然,并非說 yolo 算法沒有優勢,雪湖也對 yolo 系列做了 FPGA 加速的方案。
圖 15 雪湖開發的 yolov3-tiny 的性能參數
雪湖做的工作只是說明用什么樣的算法應該根據真實情況而定,而不單單是看 GPU 的運算指標,FPGA 有很多很驚艷的東西,它的潛力一直擺在那里,只是尚未被挖掘出來,雪湖在 FPGA 領域深耕多年,能把 FPGA 的潛力充分挖掘,只要能做到這一點,出來的結果就足夠驚艷。
風景莫道塞外好, 江南深處藏雪湖
開發 FPGA 是有難度的,要對 FPGA 的邏輯實現和算法優化有很深的理解之外,
沒有一支精干的團隊,沒有一個好的驗證平臺,沒有強有力的 EDA 開發工具,
將這么復雜的算法要在一個資源有限的 FPGA 芯片上實現并達到很高的吞吐量,難度是可想而知的。
雪湖科技在這方面下足了功夫,十年磨一劍,打造出一套完全自主產權的完整的先進的工具系統,同時,針對 CNN 的 AI 算法這塊,專門打磨出一套完整的開發/驗證系統。
圖 16 雪湖 CNN 算法實現框架圖 來源:雪湖科技
如上圖所示,我們將所有的計算模塊都進行封裝,并通過不同的 command 來執行不同的算子操作,最終會加快 CNN 算法的實現和落地。
將 AI 算法快速落地,是雪湖的優勢所在。雪湖,以算力為根本,為加速而存在,不止步于自動駕駛,不畏懼于技術變遷。以擁有完全自主產權的核心技術為榮,以創新和拼搏為榮。在 FPGA 芯片加速計算領域 (包括但不限于 AI 算法) 絕對是一道亮麗的風景線,正所謂:風景莫道塞外好,江南深處藏雪湖!
-
FPGA
+關注
關注
1626文章
21669瀏覽量
601866 -
自動駕駛
+關注
關注
783文章
13684瀏覽量
166150
原文標題:當Faster RCNN遇到FPGA,自動駕駛開始起飛!
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論