在上期文章中,我們從Autopilot的感知堆棧的backbone網(wǎng)絡(luò)開始分析,從raw data到RegNet,再到BiFPN,最后來到多頭的Head結(jié)構(gòu),這就基本上給HydraNets的框架結(jié)構(gòu)定了性。在Tesla AI Day結(jié)束之后,很多關(guān)心自動駕駛產(chǎn)業(yè)發(fā)展的人,觀后感普遍是智商不夠,看不懂。而實際上,如果讀者不進入實際的研發(fā)領(lǐng)域,要理解Autopilot的工作機制、框架和基本脈絡(luò),實際上并沒有那么困難。而對于Autopilot整體框架的理解,一旦有心得,對于自動駕駛行業(yè)的從業(yè)者、愛好者和政策關(guān)注者,其實都是大有裨益的。
而作為一個典型的跨學(xué)科產(chǎn)業(yè),傳統(tǒng)封閉知識結(jié)構(gòu)的限制讓很多初次涉足自動駕駛行業(yè)的新手來說,都會感到明顯困難。一個突出的問題就是交叉學(xué)科概念實在太多太新了,往往名詞都看不懂,就不要說深究了。所以,小編寫這個系列文章的初衷就是盡可能拉低閱讀門檻,讓每個感興趣的讀者開卷有益。畢竟,Tesla這種具備開放心態(tài)的先鋒企業(yè),不是總能遇得到的。
所以關(guān)注這個系列的讀者,在看系列中任何一篇文章的時候,都可以聯(lián)系系列中的其它文章串起來看,各種新鮮的名詞解釋和上下文串講會協(xié)助諸位和小編一起跑完這個理解的過程的。
圖一【Tesla transformer-33.png】來自論文《EfficientDet: Scalable and Efficient ObjectDetection》中的插圖,獲取URLhttps://arxiv.org/pdf/1911.09070.pdf;
這是上一篇文章中我們所講的關(guān)鍵點BiFPN網(wǎng)絡(luò)結(jié)構(gòu),其中BiFPN和其他上下游的網(wǎng)絡(luò)結(jié)構(gòu)交代得比較清楚,所以小編在這里再強調(diào)一次。上圖左半部分為Google的EfficientNet,是一種典型的層次化的CNN Backbone結(jié)構(gòu),上圖中顯示為7層,每一層的分辨率逐漸降低,但是特征Feature map也是在這個過程中通過卷積計算來實現(xiàn)搜集的。重要的是,我們可以清晰地觀察到,從第3層到第7層的Feature map數(shù)據(jù)被依次輸入到BiFPN網(wǎng)絡(luò)內(nèi),從而可以利用BiFPN的融合結(jié)構(gòu)設(shè)計,將不同層次的feature按照預(yù)定義的規(guī)則融合到一起,制造更準(zhǔn)確的識別結(jié)果。
上圖(圖一)的最右側(cè)顯示了這個整體模型中的Task Head,顯示了優(yōu)化后的backbone所提供的feature map最終被用于何種任務(wù)的實現(xiàn)。其中一個是分類任務(wù)Class,另一個是定位任務(wù)Box共兩個任務(wù)。它們兩個共享了EfficentNet backbone+BiFPN的特征識別結(jié)果,實現(xiàn)了算力的共享和高效利用。
在一個典型的CNN網(wǎng)絡(luò)中(以下圖為例是VGG16)另一個直觀的案例,原始的Input image在后續(xù)的一些列卷積處理之后,最終按照任務(wù)的要求實現(xiàn)Output輸出。通常講,CNN被用于網(wǎng)絡(luò)內(nèi)容的識別,并在識別后按照識別結(jié)果的類別來報告輸出。下圖模型就是干這個的。
圖二【Tesla transformer-34.png】來自youtube.com中賬號@denisdmitriev的VGG16 Neural Networkvisualization視頻的插圖,獲取URLhttps://www.youtube.com/watch?v=RNnKtNrsrmg;
如果將這個VGG16的卷積模型拉伸開來,就可以清晰地展示出每一個卷積層、池化層的輸出直觀計算(or感知)結(jié)果,如下:
圖三【Tesla transformer-35、36.png】來自youtube.com中賬號@denis dmitriev的VGG16 Neural Network visualization視頻的插圖,獲取URLhttps://www.youtube.com/watch?v=RNnKtNrsrmg;
由于不同卷積算子的卷積計算,原始圖像中的蘋果(或者洋蔥),其不同的特征被捕捉出來,比如顏色、形狀、表皮類型、根莖形狀,甚至不同物種常常呈現(xiàn)的不同的凹凸不平的特點,都被CNN抓出來,并通過BiFPN類似的特征融合機制形成最終的認(rèn)知,或者提供給后端Task Head有效的、良好的認(rèn)知素材。從這個流程上看,CNN對于圖像信息特征的捕捉方式,幾乎和人類對于圖像的感知方式一致了。當(dāng)然,人類的感知能力除了視覺信息分析,我們還具備觸覺、味覺和更一般的“世界知識體系”……這是AI暫時所做不到的。比如,兩個在外觀上完全一致的蘋果和洋蔥,人類視覺無法判斷分類結(jié)果,自然會拿在手上掂量一下,甚至聞一下、嘗一口,最終總是可以找到正確答案的。
之前在這個系列的第一篇文章里,我們談到過AI技術(shù)演進的下一個方向,也有對于多模態(tài)信息的綜合感知,那是因為Transformer體現(xiàn)出了一定的多模態(tài)數(shù)據(jù)處理能力。其實CNN技術(shù)本身也有同時被應(yīng)用于圖形和語言的信息處理領(lǐng)域,但顯然自動駕駛領(lǐng)域內(nèi)的感知問題,在當(dāng)前階段還是應(yīng)該關(guān)注圖形數(shù)據(jù)(視覺傳感器)為核心,解決了視覺問題,大概99%的問題都被解決了。在此基礎(chǔ)之上的更進一步感知多模態(tài)信息,才扎實。
圖四【Tesla transformer-37.png】來自Tesla AI day主題演講視頻截圖,URLhttps://www.youtube.com/watch?v=j0z4FweCy4M&t=4115s;
Backbone+Task heads的整體架構(gòu)如上圖,這就是標(biāo)準(zhǔn)的多任務(wù)系統(tǒng)HydraNets。在這個多任務(wù)Heads框架中從左到右分別是Object Detection Task(應(yīng)該包含靜態(tài)和動態(tài)所有道路目標(biāo)的識別)、Traffic Lights Task(交通燈和其它交通標(biāo)識的識別)和Lane Prediction Task(車道線及可行駛區(qū)域識別)。實際上FSD beta現(xiàn)在這個階段,使用到CNN backbone的任務(wù)一定不止以上三個。細(xì)分任務(wù)的原則是一個Head task無法處理和涵蓋一個類別的任務(wù),就需要擁有獨立的Head Task。比如小編推測在Lan Prediction Task中,可能不僅僅是各種車道線的識別和預(yù)測,還有可能包含同樣關(guān)鍵的馬路邊緣路緣石邊界的識別。在這個具象的Task中,系統(tǒng)框圖只給出了regression方法(reg),在對于車道線的識別這是一個普遍的方法,因為車道線基本上可以用一個固定的二次函數(shù)、三次函數(shù)既可以描述出車道線走勢,所以機器學(xué)習(xí)里涉及的車道線識別方法,使用regression回歸方法來預(yù)測車道線的多項式系數(shù)即可,這是個慣用的標(biāo)準(zhǔn)做法。但對于馬路邊緣路緣石構(gòu)成的可行駛區(qū)域邊界的識別,因為路緣石邊界的不規(guī)則屬性,可能無法服用regression方法。感興趣的讀者可以參考PolyLaneNet車道線識別的方法,互聯(lián)網(wǎng)可查。
圖五【Tesla transformer-38.png】來自Youtube站點博主@Frenchie的測試視頻截圖,URLhttps://www.youtube.com/watch?v=rfTpt8phxL4;
上圖可以觀察到FSD beta的中控屏幕顯示的紅色曲線為路緣石線條,由于基建處理路緣石的考量不僅僅是勾畫車輛可行駛區(qū)域,相對地也要考慮行人道上的各種設(shè)備需求,因此它并不是一直和車道線保持并行,會有非規(guī)則曲線的場景出現(xiàn)。上圖中這個場景下,顯示的識別結(jié)果出現(xiàn)錯誤,且這個非規(guī)則的路緣石不可能用低次曲線擬合出來。
對于object和traffic light的預(yù)測分類(屬性)和位置,則使用了classification、regression和attribution方法。類似的可以借鑒和查詢的論文就更多了,YOLO系列就是一個完美的參考,互聯(lián)網(wǎng)可查。
除了多頭的任務(wù)本身,圖四所顯示的多任務(wù)架構(gòu)還需要注意的是Tesla在Backbone和Head之間插入了一個叫做multi-scale features的cache環(huán)節(jié)。這個環(huán)節(jié)在模型的測試過程中扮演了關(guān)鍵角色。按照Karpathy的解釋,訓(xùn)練過程如下:
1 首先進行的是end to end的聯(lián)合訓(xùn)練,輸入是視覺raw data,輸出是所有任務(wù)的輸出。監(jiān)督所有子任務(wù)的準(zhǔn)確度,并根據(jù)準(zhǔn)確度進行干預(yù)(系統(tǒng)自動執(zhí)行誤差的反向傳播)。這樣的訓(xùn)練結(jié)果將會導(dǎo)致所有子任務(wù)的“集體最優(yōu)結(jié)果”;
2 end to end的聯(lián)合訓(xùn)練會導(dǎo)致子任務(wù)集體最優(yōu),但因為子任務(wù)之間不可能做到邏輯上的完全隔離,因此集體最優(yōu)一定不是單個子任務(wù)的“個體最優(yōu)結(jié)果”,因此需要以單個任務(wù)為核心進行調(diào)優(yōu)fine tunning;
3 以單個子任務(wù)為核心的fine tunning的輸入為經(jīng)過聯(lián)合調(diào)優(yōu)后確立的backbone所輸出的multi-scale features,從位于中部的那個cache里直接獲??;輸出則為各自子任務(wù)的輸出,還是經(jīng)過監(jiān)督學(xué)習(xí)機制,最后將每個子任務(wù)收斂到各自的最優(yōu)狀態(tài);
4 然后重復(fù)1的end to end聯(lián)合訓(xùn)練……
上述這個迭代流程可以確保網(wǎng)絡(luò)整體效能最優(yōu),且各個子任務(wù)的準(zhǔn)確度最佳。橫向看,這并非Tesla的專利(小編:盡管Tesla有訓(xùn)練多任務(wù)系統(tǒng)的一些專利,我們之前的文章有涉及過),業(yè)內(nèi)處理自動駕駛系統(tǒng)內(nèi)的多任務(wù),大抵如此手法。但knowhow在于如何處理車載硬件的CPU算力——訓(xùn)練方法的有效性——最終模型輸出的準(zhǔn)確性,這三者之間的矛盾,達到和諧統(tǒng)一。這個Tesla當(dāng)然不會細(xì)說,就比如這個cache內(nèi)部的multi-scale feature,到底如何分配給不同的子任務(wù)可以協(xié)助子任務(wù)的預(yù)測水平實現(xiàn)最優(yōu)?這就是Tesla的秘密了。
別的不好說,但是顯然的是,誰的數(shù)據(jù)(有效數(shù)據(jù))最多最豐富最極端corner,誰就最有把握接近最佳模型。Tesla雖然扔掉了所有的毫米波雷達回波數(shù)據(jù),也不屑于Lidar的點云數(shù)據(jù),但在視覺領(lǐng)域的積累應(yīng)該還是有底氣的。
截至目前,HydraNets架構(gòu)已經(jīng)可以支撐標(biāo)準(zhǔn)的L2自動駕駛業(yè)務(wù)了。對于Tesla來說,自從和Mobileye分手之后,HydraNets的框架就已經(jīng)(也必須)開始部署了,無非是在框架內(nèi)選擇不同的具體技術(shù)進行性能更新而已。但實際上如果要往更高層級的自動駕駛自治邁進,對于HydraNets架構(gòu)的擴展就勢在必行了。
圖六【Tesla transformer-39、40.png】來自Tesla AI day主題演講視頻截圖,URLhttps://www.youtube.com/watch?v=j0z4FweCy4M&t=4115s;
以上兩張圖代表了兩種不同級別的自動駕駛應(yīng)用,想必各位讀者已經(jīng)耳熟能詳了。前者是典型的單目攝像頭所獲取的信息,以及背后的多任務(wù)HydraNets NN架構(gòu)的識別結(jié)果。從Mobileye開始普及典型的Level-2自動駕駛系統(tǒng)以來,Tesla Autopilot就一直是這個思路。唯一的變化就是2016年脫離和Mobileye的合作之后,Autopilot有一個階段是采用了Camera+mm Radar的傳感器組合,2021年上半年則轉(zhuǎn)向Full vision。
上圖前者的識別結(jié)果確實豐富,我們有過專門的公眾號文章對Autopilot在這個階段對于單目視覺信息的識別做了解讀。但這個識別結(jié)果,哪怕融合了毫米波雷達的速度信息,支持更高等級的自動駕駛?cè)蝿?wù)也是不夠用的。所以才有了上圖后者的需求,車輛哪怕是在封閉場地和低速的限制條件下,例如Smart summon(停車場智能召喚功能),也必須要掌握主車四周的全視角道路狀態(tài)(可行駛區(qū)域),才有可能進行路徑規(guī)劃,并發(fā)現(xiàn)召喚者。注:上圖中的九個視覺輸出中有兩個黑塊,意味著車身一共8個攝像頭,supper narrow遙距攝像頭并在Smart summon中參與道路3D信息捕獲和可行駛道路區(qū)域的識別。
對于Tesla Autopilot系統(tǒng)的識別堆棧談到這里,讀者應(yīng)當(dāng)注意這個主題的本質(zhì):花多少錢辦多少事兒。迄今為止對于CNN Backbone和純視覺的堅持,可以在大部分的Level-2任務(wù)上得到技術(shù)落地和回報,并在更大范疇的技術(shù)框架上一錘定音、不走回頭路以適應(yīng)越來越高的NN技術(shù)占比對于龐大有效的數(shù)據(jù)量的需求。只要這一步走對了,小編的角度看,Tesla就算成功了一半。自動駕駛系統(tǒng)在未來能走多遠(yuǎn)?走多快?這就不僅僅是一家公司的事情了,很多問題也還是基礎(chǔ)科學(xué)、科學(xué)技術(shù)產(chǎn)業(yè)化的問題。舉個非常簡單的例子,純視覺如何克服目標(biāo)深度信息預(yù)測的準(zhǔn)確度和時效性問題?神經(jīng)網(wǎng)絡(luò)算子新貴Transformer轉(zhuǎn)戰(zhàn)視覺信息處理的突破,是如何提供給Tesla一個良好的視覺場轉(zhuǎn)化工具的?這里面有偶然,但更多是必然,我們相信只要走在正確的路上,困難就總是暫時的。
具體而言,當(dāng)Tesla意識到前向單目攝像頭所捕獲的視覺信息,哪怕對其再精耕細(xì)作和堆砌大量數(shù)據(jù)訓(xùn)練出來的模型,這個能力進展也無法處理更高等級的自動駕駛技術(shù)需求的時候,并沒有將現(xiàn)有識別堆棧推倒重來,而是繼續(xù)向前選擇了顯性的C++人工代碼試圖提供車身四周完整的3D視角視覺信息……如下圖:
圖七【Tesla transformer-41.png】來自Tesla AI day主題演講視頻截圖,URLhttps://www.youtube.com/watch?v=j0z4FweCy4M&t=4115s;
這個被叫做“Occupancy Tracker”的人工代碼被嵌入到Smart summon這個應(yīng)用的Task head底部,完成從CNN backbone提取feature map后,需要參照車身攝像頭的幾何尺寸將其轉(zhuǎn)換到路徑規(guī)劃所需要的Birds-view map。
360度的俯視圖Birds-view map在大多數(shù)Level-2自動駕駛應(yīng)用場景中,并非必要。但在更高等級的自動駕駛系統(tǒng)中,多傳感器數(shù)據(jù)處理結(jié)果(小編:同構(gòu)或者異構(gòu)傳感器都可以)終結(jié)在Birds-view map俯視圖結(jié)構(gòu)上,并提供給后端路徑規(guī)劃,還是最合適的。人類構(gòu)建的公路系統(tǒng)是嚴(yán)格符合“連續(xù)平面”屬性的,因此忽略高度信息的俯視圖在規(guī)劃中,比車載相機獲取的或略深度信息的投影平面,更能表現(xiàn)出道路上各種物體的相對位置關(guān)系。但問題在于如果路面拓?fù)溥^于復(fù)雜,且視覺傳感器會因為各種遮擋場景而只獲取部分信息,在這個基礎(chǔ)上,人工代碼往往力不從心。
對于上圖七的觀察我們就可以看到,在CNN backbone上增加Birds-view map獲取的“Occupancy Tracker”代碼Head之后,可以實現(xiàn)從camera視覺信息到俯視圖的轉(zhuǎn)換,但問題同樣明顯:
1 Karpathy標(biāo)識這段代碼功能非常難以落地,具體表現(xiàn)為對于場景適應(yīng)能力很差,可能在一部分場景下表現(xiàn)尚可,但一旦出現(xiàn)特殊的道路拓?fù)洌蜁В?/p>
2 精度問題。
上圖七左上角是Birds-view map的輸出結(jié)果,車輛左轉(zhuǎn)彎之后,前方兩側(cè)都出現(xiàn)大面積的無法識別狀態(tài),右后側(cè)出現(xiàn)識別精度大誤差狀態(tài)(紅色線條重疊)。讀者可以想象,一旦車速增加、出現(xiàn)大面積的路邊遮擋物和道路拓?fù)鋭×腋淖兊鹊?,識別效果會進一步惡化。
圖八【Tesla transformer-42.png】來自Tesla AI day主題演講視頻截圖,URLhttps://www.youtube.com/watch?v=j0z4FweCy4M&t=4115s;
如果我們從smart summon應(yīng)用再往前走一步,在所有道路條件下提供投影成像到Birds-view map的轉(zhuǎn)換,再從路緣石邊界(上圖紅色線條)擴展到對于車道線(上圖藍(lán)色箭頭)的識別和轉(zhuǎn)換視角,則之前的Occupancy tracker所面臨的問題會被進一步放大。圖八中,我們可以看到在camera投影視圖中的路緣石邊緣識別結(jié)果,因為天然在精度上的誤差,經(jīng)由精確的幾何變換后,在俯視圖上的誤差得到進一步放大,甚至到會引發(fā)解讀歧義的問題:認(rèn)真看投影視圖中的紅色線條,是對路緣石的一種近似的擬合結(jié)果。CNN Backbone的各種CNN識別結(jié)果,在單目鏡頭的視覺投影信息中,只能依賴CNN的對于人類智能模擬之后的近似。Camera不可能提供和Lidar等同的測量精度,Camera+CNN更多意義上的操作本質(zhì)是“預(yù)測”。因此,建立在預(yù)測結(jié)果上,對于近似的預(yù)測結(jié)果進行“硬橋硬馬”的集合轉(zhuǎn)換,結(jié)果就只能是這個水平。
圖中的黃色和綠色箭頭所指位置,投影成像的線條近似,被轉(zhuǎn)換為以車輛攝像頭為圓心的圓弧段,沒錯,Occupancy Tracker認(rèn)為線段上的每一個點,到攝像頭的距離都是一樣的…….由此,更新Occupancy Tracker代碼,使用同質(zhì)的NN網(wǎng)絡(luò)來模擬人類的預(yù)測行為,來完成這個視場轉(zhuǎn)換任務(wù),就是Autopilot識別堆棧的下一個核心重點了!
審核編輯 :李倩
-
堆棧
+關(guān)注
關(guān)注
0文章
182瀏覽量
19753 -
自動駕駛
+關(guān)注
關(guān)注
784文章
13784瀏覽量
166380 -
Autopilot
+關(guān)注
關(guān)注
0文章
44瀏覽量
6846
原文標(biāo)題:Tesla Vision背后的變形金剛——系統(tǒng)需要的是測量還是預(yù)測?
文章出處:【微信號:阿寶1990,微信公眾號:阿寶1990】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論