0
本文作者: 逸炫 | 2016-04-18 17:13 |
編者注:本文作者為奇點大學創(chuàng)始教師之一、無人車專家Brad Templeton。
圖片來源:comma.ai
如今,世界上最讓人神往的黑科技大概就是深度神經(jīng)網(wǎng)絡了,尤其是卷積神經(jīng)網(wǎng)絡,例如“深度學習”。這些網(wǎng)絡正在征服人工智能和模式識別領域一些最大的難題。隨著它們的進步,AI領域見證了許多里程碑,出現(xiàn)了達到、或超過人類能力的計算機系統(tǒng)。前陣子刷爆你朋友圈的阿爾法狗,就是該領域內(nèi)一個新晉秀才。
尤其是在圖像識別領域。在最近幾年,神經(jīng)網(wǎng)絡系統(tǒng)在一些任務中已經(jīng)開始超過人類,例如識別照片中的路牌,甚至在醫(yī)學掃描影像中,比放射科醫(yī)生更能夠識別癌癥。
這些網(wǎng)絡正在影響機器人汽車的研發(fā)。他們?yōu)闄C器人技術和無人車駕駛帶來了視覺系統(tǒng)應用,帶來了重大進步,并且進步速度超過預期。兩年以前我說,在沒有激光雷達的情況下,視覺系統(tǒng)還不夠好,要應用在安全的無人車上還早著呢。雖然那一天還沒有到來,但是已經(jīng)非常近了,沒法再說“還早著呢“。與此同時,激光雷達和其他傳感器也在進步,并且價格降低。Quanergy(我是該公司顧問)計劃250美元的8線激光雷達今年可以出貨,100美元的高清激光雷達在未來幾年可以出貨。
深度神經(jīng)網(wǎng)絡是MobilEye的一個主要工具,MobilEye是制造相機系統(tǒng)和機器視覺ASIC的耶路撒冷公司,針對ADAS(高級駕車助理系統(tǒng))市場。這是在特斯拉無人駕駛中使用的芯片,特斯拉稱,它做了很多自己的定制研發(fā),而MobilEye稱重要的部分還是來自于他們。NVIDIA通過宣傳他們的高端GPU是汽車良好運行這些神經(jīng)網(wǎng)絡所必須的超級計算工具,強勢進入了無人車市場。當然,這兩家公司就GPU和ASCIC哪個更好沒法達成一致——這個我們之后細說。
二月我乘坐的一輛實驗車,把這個概念發(fā)揮到了極致。這個小創(chuàng)業(yè)公司Comma.ai由首個破解iPhone的黑客George Hotz帶領,因為短時間內(nèi)造出了功能類似其他汽車公司的無人車,吸引了媒體的目光。一月份的時候,我寫過一篇文章介紹他們的方法,包括他們?nèi)绾慰焖倨平馄嚨木W(wǎng)絡,簡化電腦對汽車的控制。
他們是利用了CNN(Convolutional Neural Network, 卷積神經(jīng)網(wǎng)絡),而且?guī)缀踔挥昧薈NN。他們的車從一個攝像頭把圖像導入網(wǎng)絡,從網(wǎng)絡中輸出命令,調(diào)整方向盤和速度,讓車子保持在車道內(nèi)。這樣,系統(tǒng)內(nèi)的傳統(tǒng)代碼很少,只有神經(jīng)網(wǎng)絡和一些控制邏輯。
來看看視頻,坐著無人車兜個風:
神經(jīng)網(wǎng)絡就是通過訓練得來。人們駕駛汽車,而汽車向駕車的人學習,懂得當視野里看見東西時該如何操作。為了幫助訓練,他們還給汽車配備了激光雷達,可以提供精確的環(huán)境3D掃描,可以更確定地監(jiān)測道路上其他車輛和行人。讓網(wǎng)絡在訓練中知道“在這些位置上真的有東西”,網(wǎng)絡可以學會只通過攝像畫面,就識別出同樣的東西。開車時,網(wǎng)絡得不到激光雷達數(shù)據(jù),但是它確實能輸出它認為其他汽車所在的位置,開發(fā)者因而可以測試它的視力如何。
這個方法既有趣,又驚悚。這讓我們可以開發(fā)靠譜的自動駕駛,但是與此同時,開發(fā)者也不太清楚其中的機制到底怎么一回事,而且,永遠也沒法搞懂它做出選擇的依據(jù)。如果它出錯,開發(fā)者大致也不知道為什么它會出錯,雖然他們可以給系統(tǒng)更多的訓練數(shù)據(jù),直到系統(tǒng)再也不犯錯。(他們還可以重播其他記錄數(shù)據(jù)的情景,來確保新的訓練數(shù)據(jù)不會帶來新的錯誤。)
你需要大量的數(shù)據(jù)。用視覺系統(tǒng)開車,你得把攝像頭提供的2D畫面分隔為獨立物體,建造一個你所看見的3D地圖。你可以用視差角度、相對運動和兩個攝像頭,就像人類一樣,但是你還得在這些形狀中識別模式,從不同的距離、角度和光照條件看到它們時都能識別。這長久以來都是是視覺領域的大挑戰(zhàn)之一——你必須了解物品在不同光線下的情況,在陽光下、在散光下、在夜晚(在汽車燈光和其他燈光的照射下)、當陽光直射攝像頭時、以及當樹木在你的目標物體上投下移動陰影時。你必須在所有這些情況下,區(qū)分人行道、車道線、路肩、碎片垃圾以及路上的其他車輛。
而且你必須做到完美,也許開一百萬英里只犯一次危險錯誤。一百萬英里在視頻里大約是二億七千萬幀畫面。幸運的是,不完美也沒關系。不能時時刻刻都識別每個物體也沒關系。如果這一幀漏掉了這個物體,下一幀識別出來就沒關系。真的,作為人類,你大概會同時看很多幀畫面從而追蹤運動,所有你只要別連續(xù)幾秒鐘都看走眼了就行。人類大腦雖然已經(jīng)棒呆了,但是也不能在一個絕對靜止的照片中毫無遺漏看到每一個細節(jié),但是在一兩秒中的視頻中,大腦可以很好識別每一樣東西。
就現(xiàn)在來說,大部分人們還不能如comma.ai所愿,答應讓神經(jīng)網(wǎng)絡擔當整個系統(tǒng)。這種方法也許能夠制造需要人類監(jiān)管的自動駕駛,但是對于完全自動且無監(jiān)管的駕駛操作,我不太確定這是否是一個好方法。但是如果你有攝像頭,神經(jīng)網(wǎng)絡會幫助你了解攝像頭看見的是什么。
如果告訴你,谷歌早期汽車幾乎都不用攝像頭,你也許會很震驚。激光雷達系統(tǒng)太好用了,以至于攝像頭唯一的用處大概是辨別紅綠燈(激光雷達不能分辨光和顏色)。從那以后,谷歌確立了作為神經(jīng)網(wǎng)絡技術領導者的地位,因此我們可以推測,谷歌內(nèi)部已經(jīng)努力在激光雷達、攝像頭和其他傳感器上做了“傳感器融合”,可能已經(jīng)非常擅長用神經(jīng)網(wǎng)絡來協(xié)助車輛。其他公司,例如Zoox和Daimler,也顯示了在融合攝像頭和激光雷達方面的實力。
2013年,我就激光雷達和攝像頭的對比發(fā)表了一篇文章。在文章中,我指出激光雷達現(xiàn)在是可行的,而且一定會更加便宜,但是視覺不一定,而且需要一個技術突破才能達到要求。雖然我們還沒有突破這個閾值,新的神經(jīng)網(wǎng)絡科技有希望讓技術實現(xiàn)超越。
激光雷達的不足之一是低像素。因此,雖然它不太可能監(jiān)測不到車前的障礙物,它有可能搞不懂這個障礙物是什么。用CNN融合激光雷達和攝像頭,可以讓系統(tǒng)變得更強,能夠識別物體意味著能夠更好預測未來方向。
攝像頭還可以彌補激光雷達的其他短處——近紅外線激光雷達對深色物體(例如,黑色車子)有大約100米的識別范圍。在高速公路上,100米的范圍一定不夠你用。視覺沒有范圍限制(除了在晚上),雖然東西離你越遠,你圖像像素的要求就越高,至少在你必須注意的范圍內(nèi)(主要是面前的路上)。像素越高,視覺處理所占用的CPU越多。因此MobilEye更新的組件中帶有3個視野。一個是“遠射鏡頭”的視覺,用來看正前方遠處的物體,還有兩個更寬的視野,用來看更近、更靠近兩側(cè)的物體。這是使用視覺的一個好策略。更棒的是,如果知道前面道路的起伏,你可以把注意力集中在路上,不用浪費像素或者處理路兩邊的東西。
一些人希望,視覺可以越來越好,足夠讓汽車像人一樣不需要地圖就能在任何道路上行駛。這項技術大致可以應用在非常簡單的道路上,例如高速公路,大致相同,容易理解。然而,這對人工智能研究來說是一種錯誤的思維方式。就像飛機并不像鳥兒那樣煽動翅膀飛行,機器系統(tǒng)也沒必要非得照搬人類的方式。不需要地圖就能夠良好分類視野中的物體,這樣的視覺系統(tǒng)也可以在沒有人類的幫助下建造地圖。當一輛車不止一次開過某個區(qū)域,制造地圖的系統(tǒng)就可以獲益,并且從足夠多的云端超級計算機中獲益。
我在1月寫了為何無人車中真正的阻礙是測試——雖然無人車成功面對這很多挑戰(zhàn),其中最大一個挑戰(zhàn)是(向你自己和其他人)證明你真的做到了。
這是神經(jīng)網(wǎng)絡面臨一個問題,因為很難知道他們是不是好用。你不知道為什么他們可以運行,你只能衡量他們的表現(xiàn)。你可以用舊的傳感數(shù)據(jù)重新測試你的神經(jīng)網(wǎng)絡,但是你很難百分白確定,剛才的訓練不會在新情境下帶來原本沒有的新問題。
另一方面,傳統(tǒng)系統(tǒng)過于復雜,以至于很難判斷他們的表現(xiàn)。如果測試題目是“開一百萬英里/公里,不發(fā)生兩起以上事故,包括在模擬器想象出來的、和真實世界中記錄的常復雜情況“,那么可能對策都是一樣的,系統(tǒng)到底是怎么樣做出決定,這無所謂。
神經(jīng)網(wǎng)絡還可能面臨一個奇怪的——我甚至想說“扭曲的”——法律優(yōu)勢。如果發(fā)生了事故,必然會引發(fā)一場混亂,大家想要弄明白事故發(fā)生的原因。尤其,原告的律師會熱切想要證明開發(fā)者一方存在某些失誤。
對于傳統(tǒng)代碼來說,你可能會發(fā)現(xiàn)原因是一種傳統(tǒng)的bug,例如臭名昭著的大小差一錯誤或其他類似錯誤。你會看到產(chǎn)生bug的原因(并能夠修正bug),然后你可以大聲宣布程序員,或者質(zhì)量控制,在某種程度上存在失誤。
但是對于神經(jīng)網(wǎng)絡,其中的bug并不是傳統(tǒng)代碼。如果神經(jīng)網(wǎng)絡發(fā)生錯誤,我們沒法清楚了解為什么,所以,不太可能說某人或某項操作失誤了,除非法庭裁決認為整個神經(jīng)網(wǎng)絡概念就是一個失誤。
那是一個更加復雜的問題,但是大致來說,如果團隊遵循良好的職業(yè)習慣,發(fā)現(xiàn)失誤就更難了。失誤不是某種錯誤,而是勤奮工作的好人應該避免的錯誤,不過,出現(xiàn)失誤并不是因為人們大意了。
這個扭曲的因素就是,你對系統(tǒng)的內(nèi)部機制了解越少,越不會被指責疏忽大意。
Via RoboHub
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。