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