汽車產業在晶片廠家的推動下進入了算力比拼時代,一場算力競賽已經在各大晶片企業之間悄然興起。殊不知高算力背後是高功耗和低利用率的問題日益突出,算力不可能一直提高。
事件相機(Event-based camera)的出現憑藉自身極快的回應速度、減少無效資訊、降低算力和功耗、高動態範圍等優勢對高算力晶片形成致命打擊,它只需要傳統算力晶片1%甚至0.1%的算力就可完美工作,功耗是毫瓦級。可以説明自動駕駛車輛降低資訊處理的複雜度、提高車輛的行駛安全,並能夠在極亮或者極暗環境下正常工作。
像素與算力矛盾突出
需要處理的圖像像素過多與晶片算力不足的矛盾,已經成為了當前制約自動駕駛發展的瓶頸之一。
當今自動駕駛領域所運用的視覺辨識演算法,基本上都基於卷積神經網路,視覺演算法的運算本質上是一次次的卷積運算。這種運算並不複雜,本質上只涉及到加減乘除,也就是一種乘積累加運算。但這種簡單運算在卷積神經網路中是大量存在的,這就對處理器的性能提出了很高的要求。
以ResNet-152為例,這是一個152層的卷積神經網路,它處理一張224*224大小的圖像所需的運算量大約是226億次,如果這個網路要處理一個1080P的30影格的攝像鏡頭,他所需要的算力則高達每秒33兆次,十分龐大。
以百度的無人車為例,運算平臺約為800TOPS,其中1TOPS代表處理器可以每秒鐘進行一兆次操作。假設一個攝像鏡頭所需要的算力為33TOPS,更遑論無人車動輒配置十餘個攝像鏡頭,以及多個光學雷達和毫米波雷達。
為了準確檢測行人並預測其路徑,晶片往往需要多影格處理,至少是10影格,也就是330毫秒。這意味著相關系統可能需要數百毫秒才能實現有效探測,而對於一輛以60公里每小時行進中的車輛來說,330毫秒的時間就能行駛5.61公尺。如果為了保證足夠的安全,將影格數增加到每秒30影格,圖像資料很可能讓自動駕駛晶片不堪重負。
提高算力固然可以暫時解決問題,同時,算力的提高也伴隨著功耗的提高,但在新能源的大背景下,分配給晶片的能量越多,續航能力就會受到越大的影響。算力與能耗正在逐漸成為自動駕駛發展的一對矛盾。實際上自動駕駛領域99%的視覺資料在AI處理中是無用的背景。這就好像檢測鬼探頭,變化的區域是很小一部分,但傳統的視覺處理仍然要處理99%的沒有出現變化的背景區域,這不僅浪費了大量的算力,也浪費了時間。亦或者像在沙礫裡有顆鑽石,AI晶片和傳統相機需要辨識每一顆沙粒,篩選出鑽石,但人類只需要看一眼就能檢測到鑽石,AI晶片和傳統相機耗費的時間是人類的100倍或1000倍。對於人類來講,在靜止的畫面中注意到運動物體並不難。對於青蛙來說,它甚至只能看到運動的物體,對靜止的背景畫面視而不見。針對生物這一特性,事件相機的出現,成功解決了自動駕駛中視覺處理的問題。
事件相機的工作原理
事件相機(event cameras)是一種生物啟發的視覺感測器,以完全不同於標準相機的方式工作。事件相機不是以恒定速率輸出強度圖像影格,而是僅輸出局部像素級亮度變化的相關資訊。這些像素級亮度變化(稱為事件)超過設定閾值時,事件相機以微秒級解析度標記時間戳記,並輸出異步通信事件流。
事件相機的靈感來自人眼和動物的視覺,也有人稱之為矽視網膜。生物的視覺只針對有變化的區域才敏感,比如眼前突然掉下來一個物體,那麼人眼會忽視背景,會將注意力集中在這個物體上,事件相機就是捕捉事件的產生或者說變化的產生。
在傳統的視覺領域,相機傳回的資訊是同步的,所謂同步,就是在某一時刻t,相機會進行曝光,把這一時刻所有的像素填在一個矩陣裡回傳,一張照片就誕生了。一張照片上所有的像素都對應著同一時刻。至於影片,不過是很多影格的圖片,相鄰圖片間的時間間隔可大可小,這便是我們常說的影格率(frame rate),也稱為時延(time latency)。事件相機類似於人類的大腦和眼睛,跳過不相關的背景,直接感知一個場景的核心,創建純事件而非資料。事件相機的工作機制是,當某個像素所處位置的亮度發生變化達到一定閾值時,相機就會回傳一個上述格式的事件,其中前兩項為事件的像素座標,第三項為事件發生的時間戳記,最後一項取值為極性(polarity)0、1(或者-1、1),代表亮度是由低到高還是由高到低,也常被稱作Positive or Negative Event,又被稱作On or Off Event。我們透過下圖的小球實驗可以更直觀地發現:只要小球變化的時刻,就會產生事件流,而小球靜止的時刻,就不會產生事件流。
就這樣,在整個相機視野內,只要有一個像素值變化,就會回傳一個事件,這些所有的事件都是異步通信發生的(再小的時間間隔也不可能完全同時),所以事件的時間戳記均不相同,由於回傳簡單,所以和傳統相機相比,它具有低時延的特性,可以捕獲很短時間間隔內的像素變化,延遲是微秒等級的。
事件相機的優勢
相對於傳統相機,事件相機還有高影格率、低功耗、高動態範圍等優點:
- 高影格率。實際上,所謂的「影格率」概念,對事件相機是不存在的。事件相機每個感光單元都可以異步通信的形式記錄像素亮度變化,無需等待傳統相機每秒30次的「曝光」時機。基於沒有曝光的特點,事件相機的輸出頻率可以高達每秒100萬次,遠遠超過每秒30次傳統相機的影格率。
- 低時延。事件相機僅傳輸亮度變化,避免大量冗餘數據的傳輸,因此能耗僅用於處理變化的像素。大多數事件相機的功耗約在 10 mW 級,而有部分相機原型的功耗甚至小於10 μW,遠遠低於傳統基於影格的相機。
- 高動態範圍。事件相機的動態範圍高達140 dB,遠遠優於 60 dB 的影格相機。既能在光照條件良好的白天工作,也能在光線較暗的夜晚採集視場中的動態資訊。這是由於事件相機每個像素的光感受器以對數方式獨立工作,而非全域快門工作模式。因此,事件相機具有與生物視網膜相似的特性,其像素可以適應非常暗和非常亮的感光刺激。
傳統相機的動態範圍是無法做寬的,因為放大器會有線性範圍,照顧了低照度就無法適應強光,反過來適應了強光就無法顧及低照度。事件相機在目標追蹤、動作辨識等領域具備壓倒性優勢,尤其適合自動駕駛領域。
空中一個球的軌跡,
扔一個球,看看兩種相機的軌跡記錄:
事件相機的出現對高算力AI晶片是致命打擊,它只需要傳統高算力AI晶片1%甚至0.1%的算力就可完美工作,功耗是毫瓦等級。事件相機基於流水線時間戳記方式處理資料,而不是一格一格地平面處理各個像素。傳統卷積演算法可能無用,AI晶片最擅長的乘積累加運算可能沒有用武之地。為了準確檢測行人並預測其路徑,需要多格處理,至少是10影格,也就是330毫秒。這意味著相關系統可能需要數百毫秒才能實現有效探測,而對於一輛以60公里每小時行進中的車輛來說,330毫秒的時間就能行駛5.61公尺,而事件相機理論上不超過1毫秒。
事件相機的產品分類
當前,市場上主流的事件相機產品主要為三類:DVS、ATIS以及DAVIS,它們都採用了差分型視覺採樣模型。此外,也有一些其它類型的事件相機,比如CeleX、Vidar,但從商業化的進度來看,上述三類事件相機的商業化發展較快。
事件相機產業鏈的情況與傳統影格相機幾乎是相同的,主要包括上游是零組件供應商(鏡頭組零組件、膠合材料、圖像感測器晶片等)、中游是模組供應商與系統整合商等、下游是主機廠。產業鏈中的不同之處主要是在圖像感測器晶片、演算法軟體,比如更適合事件相機的晶片是類腦晶片、更適合的演算法則是脈衝神經網路。
第三代神經網路助力大規模應用
事件相機目前之所以沒有大規模應用在自動駕駛領域,歸根結底受限於神經網路演算法。實際上,相機獲取資訊僅僅是第一步,後續事件相機資訊的處理則是更為關鍵的一環。如下圖所示,傳統相機的輸出是一影格影格的靜止圖片,而事件相機則是一個個事件(Event)流。
一般來說,目前的神經網路都專注於如何提取每影格靜止圖片中的行人、汽車等目標,如YOLO,resnet等演算法。針對基於時間戳記的事件流,目前尚無有效的演算法進行目標辨識。而事件流處理演算法的缺失,與當前的神經網路結構是分不開的。
當前主流的神經網路被稱為第二代人工神經網路,以精確的浮點運算為基礎,缺失了在自然界中最重要的一個因素:時間。對於神經網路而言,輸出的結果會和輸入一一對應,任何時候輸入相同的圖片,神經網路都會輸出一樣的結果。
然而真實的大腦,是以這種浮點運算為基礎的嗎?顯然不是,真實的大腦是以脈衝為基礎的,以脈衝傳遞和處理資訊。這種以脈衝傳遞為基礎的神經網路是脈衝神經網路(spiking neural network,SNN),被譽為第三代人工神經網路。基於脈衝神經網路結構設計的晶片也被稱為類腦晶片。脈衝發生的時刻攜帶著重要資訊,脈衝神經網路天然具備對時序資訊處理的能力,這與事件相機基於時間戳記的事件流輸出十分吻合。此外,脈衝神經網路還具有事件驅動、異步通信運算、極低功耗等特性。
- 事件驅動。在我們的大腦中,同一時刻大約有90%以上的神經元都是沉默的。也就是說,當沒有事件輸入的時候神經元是不活動的。這與事件相機的事件流輸出十分契合,同時功耗也極大降低。
- 異步通信運算。脈衝神經網路不存在「主頻」的概念。傳統的電腦都需要一個時鐘,以確保所有的操作都在時間步上進行,這個時鐘的頻率被稱為主頻。目前主流的電腦主頻都達到每秒1GHz以上。然而,以IBM的神經態硬體TrueNorth為例,100Hz左右的脈衝發放率即可完成圖像辨識、目標檢測等任務。當前通用的電腦基本是馮紐曼結構,這種結構下,隨著CPU的運算速度遠遠超過記憶體的存取速度,已然形成難以逾越的計算瓶頸。然而,脈衝神經網路所有的記憶體和運算都體現在神經元的異步通信脈衝之中,有很大希望突破目前電腦運算能力瓶頸。
- 極低功耗。在2016年著名的人機圍棋大戰中,Google公司的AlphaGo系統每局圍棋博弈的平均耗電費用高達3000美元。而作為脈衝神經網路架構的人腦,功率僅僅為20W左右。此前,有學者將目標檢測中的經典演算法YOLO進行脈衝化,在完成相同任務的情況下,功耗降低了280倍左右,同時速度提高了2.3到4倍。總的來說,事件相機和脈衝神經網路的結合,正如人類用眼睛和大腦觀察四周:自動忽略周圍靜止的事物,對突然出現的運動物體予以重點關注和運算.
寫在最後
匹茲堡大學眼科教授、CMU機器人研究所兼職教授Ryad Benosman作為基於事件的視覺技術的奠基人之一,他認為:預計神經形態視覺(基於事件相機的電腦視覺)是電腦視覺的下一個方向。基於圖像相機的電腦視覺技術是非常低效的。Benosman將其比作中世紀城堡的防禦系統:駐守在城牆周圍的士兵從各個方向注視著接近的敵人。鼓手打著穩定的節拍,每敲一下,每個守衛就會大聲喊出他們所看到的東西。在所有的呼喊聲中,聽到一個守衛在遠處森林邊緣發現敵人發出的聲音會有多容易?
21世紀相當於鼓點的硬體是電子時鐘訊號,而衛兵是像素,每一個時鐘週期都會產生一大批資料並必須進行檢查,這意味著有大量的冗餘資訊和大量不必要的運算需要。
進入神經形態視覺。其基本理念是受生物系統工作方式的啟發,檢測場景動態的變化,而不是連續分析整個場景。在城堡比喻中,這將意味著讓守衛保持安靜,直到他們看到感興趣的東西,然後喊出他們的位置,發出警報。在電子版本中,這意味著讓單個像素決定它們是否看到了相關的東西。
Benosman教授說:像素可以自己決定他們應該發送什麼資訊,而不是獲取系統資訊,他們可以尋找有意義的資訊,即特徵。這就是與眾不同之處。與固定頻率的系統採集相比,這種基於事件的方法可以節省大量的功耗,並減少延遲。
現在的AI本質上還是一種蠻力計算,依靠海量資料和海量算力,對資料集和算力的需求不斷增加,這顯然離初衷越來越遠,文明的每一次進步都帶來效率的極大提高,唯有效率的提高才是進步,而依賴海量資料和海量算力的AI效率越來越低。
當前學術界已經掀起了對脈衝神經網路研究的熱潮,隨著人們對大腦認識的深入,以及國外的TrueNorth、SpiNNaker、Loihi和國內清華的天機芯(Tianjic)和浙大的達爾文等類腦晶片的研發。筆者堅信:事件相機與脈衝神經網路的完美結合在目標追蹤、動作辨識等領域具備壓倒性優勢,給自動駕駛行業帶來新的突破。
加入電腦王Facebook粉絲團