這個美國高中生用兩年時間復(fù)現(xiàn)出英偉達(dá)端到端無人駕駛的論文,并在此基礎(chǔ)上進(jìn)一步改進(jìn),得到了Nvidia的offer,卻執(zhí)意進(jìn)入大學(xué)學(xué)習(xí)。
Sully Chen
Sully Chen 是南加州大學(xué)維特比工程學(xué)院的研究員,他喜歡數(shù)學(xué)、物理、人工智能以及醫(yī)學(xué),目前他正致力于如何通過大數(shù)據(jù)和機(jī)器學(xué)習(xí)來改善醫(yī)療保健和醫(yī)學(xué)預(yù)防。三年前,當(dāng)他還在加州帕洛斯弗迪斯高中念書的時候,就對自動駕駛汽車產(chǎn)生了濃厚的興趣,準(zhǔn)備著手制造自己的機(jī)器。
熱愛的數(shù)學(xué)成為后期研究的重要基礎(chǔ)
十歲開始編程,并參與了很多項目的 Sully Chen 雖然稱不上是天才,但他對數(shù)學(xué)近乎癡迷。2015年初,同齡的高中生還在學(xué)習(xí)排列組合,而他在一個視頻中偶然發(fā)現(xiàn)了遺傳算法和神經(jīng)網(wǎng)絡(luò),這個視頻用計算機(jī)仿真出遺傳算法的特性,虛擬生物似乎在沒有人為輸入的情況下神奇地演變出復(fù)雜的行為,“這像極了我在生物課上學(xué)到的交叉和隨機(jī)變異,但我仍不相信這樣的計算機(jī)模擬是真的。”
很自然地,他編寫了自己的模型去驗證了它的可行性。通過親身實踐,更讓他無法自拔,他花了兩個星期開完了一學(xué)期的人工智能MIT公開課。與backprop(反向傳播算法)斗爭了好幾個星期,仍不能真正的理解。查閱大量論文,指南和博客后,最終在 Michael Nielsen 關(guān)于《神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)》博客中解決了自己的困惑,并用C++編了一個神經(jīng)網(wǎng)絡(luò)庫,以加深自己理解。
構(gòu)造一臺無人車面臨無數(shù)的挑戰(zhàn)
憑借著對機(jī)器學(xué)習(xí)“淺薄”的認(rèn)知,Sully Chen開始了制作自己的機(jī)器。
通過視覺算法來實現(xiàn)無人駕駛,第一個要解決的挑戰(zhàn)就是數(shù)據(jù)收集問題,需要協(xié)調(diào)好攝像頭和方向盤角度。攝像頭比較簡單,他用膠帶粘在了擋風(fēng)玻璃上,而方向盤角度如何控制呢?
他首先嘗試了一種加速度計和Arduino(數(shù)據(jù)儀器)連接到方向盤上,并將時間數(shù)據(jù)與攝像頭同步。這種方法并不理想,由于加速度計比較敏感,加速度數(shù)據(jù)與視頻數(shù)據(jù)如何分開成了當(dāng)時Sully需要面對的另一個挑戰(zhàn)。
第一種方式行不通,Sully開始了新的嘗試,使用現(xiàn)代汽車配備的OBD-II端口訪問CAN-BUS。這種方法又要面臨新的挑戰(zhàn),但最終實現(xiàn)了超精確方向盤測量,證明這種方法是值得的。
挑戰(zhàn)1:如何從 BD-II端口讀取CAN-BUS?解碼和處理CAN-BUS信號是一個復(fù)雜的過程,需要很長時間才能編寫和調(diào)試。幸運(yùn)的是,前人(深圳矽遞科技)已經(jīng)做到了。Sully使用這個代碼和相對便宜的Arduino屏蔽,就能夠輕松地從汽車中提取和讀取CAN-BUS數(shù)據(jù)。
挑戰(zhàn)2:如何將CAN-BUS數(shù)據(jù)的亂碼轉(zhuǎn)變?yōu)榉较虮P讀數(shù)?下圖是提取的CAN-BUS數(shù)據(jù)。
從數(shù)百個CAN-BUS渠道的解析中,找到一個方向盤角度的信息通道,對于一個高中生而言,難度可想而知。Sully 用最笨的辦法做到了!他手動監(jiān)控每個通道,慢慢轉(zhuǎn)動方向盤,需按照接受數(shù)據(jù)的平滑變化值。經(jīng)過大量的實驗,終于找到了方向盤的通道,用同樣的方法也找到了油門、制動器以及速度的通道。
挑戰(zhàn)3:如何把CAN-BUS中的數(shù)據(jù)轉(zhuǎn)換成可讀數(shù)據(jù)?找到通道后,通過測量實際角度與通道數(shù)值進(jìn)行線性變換,就能從CAN中讀出車輛的即時數(shù)據(jù)。
攔路虎順利擺平之后,開始瘋狂收集數(shù)據(jù)。為此,Sully 曠了很多課。當(dāng)數(shù)據(jù)通過機(jī)器學(xué)習(xí)訓(xùn)練算法時,一切變得有趣起來。
復(fù)現(xiàn)并優(yōu)化Nvidia論文,引起Nvidia官方的重視
用機(jī)器學(xué)習(xí)訓(xùn)練模型時,第一次嘗試用Caffe 在 AlexNet上訓(xùn)練分類模型。他將數(shù)據(jù)劃分成每個大小為10度的黑盒子,方向盤角度在0-9度,10-19,20-29等之間得到相應(yīng)的圖像。采用了分類輸出的線性組合獲得最終預(yù)測。由于當(dāng)時并不能真正理解的統(tǒng)計數(shù)據(jù),一切變得非常糟糕。這讓Sully 幾乎失掉了信心,他專門建了一個存放錯誤代碼和實踐的垃圾文件箱,用來提醒自己要從失敗中總結(jié)經(jīng)驗,學(xué)到新東西。現(xiàn)在這個垃圾文件箱還存在著,而且越積越大,它的存在也證明了自己一路以來的進(jìn)步。
2016年8月,Nvidia發(fā)布了一篇論文《End to End Learning for Self-Driving Cars》,詳細(xì)解讀了英偉達(dá)在端到端無人駕駛的探索,這讓Sully 有了第二次嘗試,他準(zhǔn)備復(fù)現(xiàn)一下Nvidia論文
Nvidia模型使用以下架構(gòu):
這個架構(gòu)輸出的是前十個神經(jīng)元的簡單線性組合,Sully認(rèn)為還可以改進(jìn)。他通過對線性組合應(yīng)用正切函數(shù)來改變這一點,這種方法更直觀從視覺數(shù)據(jù)中“恢復(fù)”曲率角度,而不必重新學(xué)習(xí)將斜率或切線轉(zhuǎn)換為弧度測量的方法。
研讀完Nvidia論文的高中生,在TensorFlow中寫了大約一個晚上的代碼,并用當(dāng)時便宜的750ti GPU上訓(xùn)練了它,結(jié)合Adam優(yōu)化器等訓(xùn)練。最終,取得了不錯的成果!
一個高中生花費兩年時間完成了這個龐大的項目,Sully感嘆道“這次經(jīng)歷教會了我大量的信息,技術(shù)和編碼實踐。Nvidia甚至帶我去他們的自動駕駛實驗室參觀他們的技術(shù)!“Nvidia為這位高中生提供一份不低的工資,但被他拒絕了,Sully進(jìn)入了大學(xué),開始了自己本科的學(xué)習(xí)。
-
人工智能
+關(guān)注
關(guān)注
1792文章
47442瀏覽量
239020 -
無人駕駛
+關(guān)注
關(guān)注
98文章
4077瀏覽量
120639 -
英偉達(dá)
+關(guān)注
關(guān)注
22文章
3800瀏覽量
91348
原文標(biāo)題:美國高中生兩年時間搭建自動駕駛汽車,重現(xiàn)了Nvidia論文
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論