今天在 Tensorflow公號看到推文Pixelopolis:由 TensorFlow Lite 構(gòu)建無人駕駛微型汽車 ,作者介紹了他們在今年Google I/O大會上展示的TensorFlot Lite構(gòu)建的無人駕駛微型汽車的展品:Pixcelopolis。
▲ TensorFlow Lite構(gòu)建的無人駕駛微型車
每輛微型汽車都裝配有一部 Pixel 手機(jī),使用手機(jī)上的攝像頭檢測和理解周圍的信號。手機(jī)使用了 Pixel Neural Core 邊緣計算芯片( Edge TPU 支持的機(jī)器學(xué)習(xí)),可感應(yīng)車道、避免碰撞和讀取交通標(biāo)志。
相比于基于云計算來實(shí)現(xiàn)視頻處理和物體檢測,邊緣計算可以減少延遲對控制的影響(也許在5G下延遲影響小一點(diǎn))。
▲ 通過手機(jī)識別各種目標(biāo)的Pixelpolis
下圖是整個展品的布局,模仿了一個小型城鎮(zhèn)廣場周圍的交通環(huán)境。參觀者可以通過手機(jī)端的一個應(yīng)用模擬“站點(diǎn)”來選擇出現(xiàn)的目的地。展品中的微型車就可以駕駛到目的地,整個過程用戶可以查看車輛周圍以及所檢測到的物體。
▲ 演示區(qū)的道路設(shè)計
車模所有對外界的感知都來自于微型車膜前面的手機(jī)攝像頭,有它獲取前方的圖片并手機(jī)內(nèi)部署的神經(jīng)網(wǎng)絡(luò)完成車道保持、停車定位、障礙檢測等。通過手機(jī)底部的USB-C接口擴(kuò)展來與底層控制板通訊,完成電機(jī)控制等。
▲ 手機(jī)應(yīng)用程序與Pixelopolis交互
▲ 手機(jī)端可以查看車輛周圍所檢測到的物品
展品作者采取了與 論文:End-to-end Learning for Self-Driving Cars中相類似的技術(shù)錄像,使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來檢測每幀圖像內(nèi)的交通指示線,并給出方向盤的調(diào)整量。增加了LSTM利用前期拍攝的多個圖像幀進(jìn)行改進(jìn)。
▲ CNN 模型的輸入和輸出
控制器的模型很簡單,下面代碼就給出了網(wǎng)絡(luò)的結(jié)構(gòu)構(gòu)成。
net_in = Input(shape = (80, 120, 3))x = Lambda(lambda x: x/127.5 - 1.0)(net_in)x = Conv2D(24, (5, 5), strides=(2, 2),padding=“same”, activation=‘elu’)(x) x = Conv2D(36, (5, 5), strides=(2, 2),padding=“same”, activation=‘elu’)(x)x = Conv2D(48, (5, 5), strides=(2, 2),padding=“same”, activation=‘elu’)(x)x = Conv2D(64, (3, 3), padding=“same”,activation=‘elu’)(x) x = Conv2D(64, (3, 3), padding=“same”,activation=‘elu’)(x)x = Dropout(0.3)(x)x = Flatten()(x)x = Dense(100, activation=‘elu’)(x)x = Dense(50, activation=‘elu’)(x)x = Dense(10, activation=‘elu’)(x) net_out = Dense(1, name=‘net_out’)(x)model = Model(inputs=net_in, outputs=net_out)
一個神經(jīng)網(wǎng)絡(luò)是否能夠達(dá)到很好的性能,關(guān)鍵在于如何準(zhǔn)備好讓它學(xué)習(xí)的訓(xùn)練樣本。為此。作者使用Unity, Udacity來構(gòu)建了模擬器,自動生成訓(xùn)練車輛的圖像數(shù)據(jù)。
通過在軌道上設(shè)置多個路徑點(diǎn), 微型汽車 可以行駛到不同的地點(diǎn),并從中收集數(shù)據(jù)。在此模擬器中,我們每 50 毫秒收集一次圖像數(shù)據(jù)和轉(zhuǎn)角數(shù)據(jù)。
▲ 模擬器中的軌道中上設(shè)有多個路徑點(diǎn)
大家都知道,軟件虛擬出的場景圖片和實(shí)際拍攝到的圖片會有很大的差別,包括光線、周圍環(huán)境以及其他的噪聲。為了使得訓(xùn)練的神經(jīng)網(wǎng)絡(luò)能夠適應(yīng)實(shí)際要求,需要對數(shù)據(jù)進(jìn)行增強(qiáng)。
他們將以下變量添加到場景中:隨機(jī)的 HDRI 球體(具有不同的旋轉(zhuǎn)模式和曝光值)、隨機(jī)的環(huán)境亮度和顏色以及隨機(jī)出現(xiàn)的車輛。
▲ 各種環(huán)境下的數(shù)據(jù)增強(qiáng)
下圖給出了經(jīng)過訓(xùn)練之后,卷積神經(jīng)網(wǎng)絡(luò)的第一層對于輸入圖片的輸出??梢钥闯?,它已經(jīng)能夠很好地將圖片中道路信息邊緣信息能夠很好的提取,對于背景可以進(jìn)行有效的壓制。
▲ 第一層神經(jīng)網(wǎng)絡(luò)的輸出
使用神經(jīng)網(wǎng)絡(luò)進(jìn)行控制的一個最大的問題,就是車模有時會出現(xiàn)莫名其妙的動作。比如下面這個場景,明明已經(jīng)成功的拐過彎道,進(jìn)入平坦順直的道路,車模則抽風(fēng)地沖出跑道了。
這主要是因?yàn)樗?xùn)練的樣本沒有能夠均勻包含各種道路情況,模型比較脆弱。
▲ 早期版本中玩具車偏離了軌道
為此,在場景中添加了各種形狀的曲線,以豐富原來訓(xùn)練數(shù)據(jù)庫中大多數(shù)的直線軌道數(shù)據(jù)。
▲ (左)方形軌道與(右)彎曲軌道
功夫不負(fù)有心人,修正數(shù)據(jù)集不均衡的問題后,車輛便開始能夠在彎道處正確轉(zhuǎn)向。
▲ 車輛在彎道可以成功轉(zhuǎn)彎
似乎理性的增加數(shù)據(jù)可以提高車模的性能,但有時候僅僅采用小的技巧便可以解決大問題。比如當(dāng)微型車模運(yùn)行到展品邊緣時,就會看到很多展臺外面的場景。外面的場景多變,很難通過數(shù)據(jù)來表征這些變化。怎么辦?
作者就用了一個字:切!
將輸入圖像的下面四分之一切出來,送入神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,就有效化解了上述的問題。
▲ 展品上的軌道,以及在展品邊緣看到的圖像
為了能夠進(jìn)行車輛定位以及檢測其它干擾車輛,在手機(jī)Pixcel 4上的Neural Core Edge TPU上運(yùn)行了 ssd_mobilenet_edgetpu 模型,這是來自 TensorFlow 目標(biāo)檢測模型庫 。每幀檢測時間僅用6.6毫秒,在實(shí)時應(yīng)用中游刃有余。
為了是檢測神經(jīng)網(wǎng)絡(luò)模型能夠適應(yīng)展品場景需要,作者同樣使用了模擬器和真實(shí)場景中的數(shù)據(jù)來訓(xùn)練模型。為了提高檢測魯棒性,使用了 Unreal Engine 4 來隨機(jī)生成物體和背景。使用 labelImg 工具進(jìn)行對樣本進(jìn)行了手動標(biāo)注。
▲ 進(jìn)行目標(biāo)識別的數(shù)據(jù)庫
使用神經(jīng)網(wǎng)絡(luò)最大的工作量是在準(zhǔn)備訓(xùn)練數(shù)據(jù)集合。之后的網(wǎng)絡(luò)搭建和訓(xùn)練則非常容易,分分鐘搞定。檢查一下,網(wǎng)絡(luò)識別交通標(biāo)志的效果還是很不錯的。
▲ 網(wǎng)絡(luò)識別效果
最后一個工作,就是需要將網(wǎng)絡(luò)部署到手機(jī)平臺上。這需要借助于TensorFlow Lite 將模型進(jìn)行個數(shù)轉(zhuǎn)換,并在Android下編寫相應(yīng)的Python腳本來進(jìn)行部署。
作者還設(shè)想著,通過視覺SLAM能夠?yàn)樗麄兊倪@個展品增加車輛全程定位。真的是一個手機(jī)平臺可以練習(xí)很多算法。
▲ 視覺SLAM定位
為了實(shí)現(xiàn)一個頂著手機(jī)運(yùn)行的微型車膜,作者也是費(fèi)力不斷改進(jìn)機(jī)械結(jié)構(gòu),經(jīng)過了五代設(shè)計最終得到了一個合理的機(jī)械設(shè)計??梢詫⑹謾C(jī)、控制板、電池、電機(jī)等集成在一個小巧乖致的微型車模中。
▲ 第一代設(shè)計
▲ 第二代設(shè)計
▲ 第三代射擊
▲ 第四代設(shè)計
▲ 第五代設(shè)計
下面給出了嵌入在車體內(nèi)部的控制板、電機(jī)、電池等配件。
▲ 底層運(yùn)動控制單片機(jī)板
▲ (左)屏蔽罩和電機(jī),(右)電源插座、電源開關(guān)、電機(jī)啟動按鈕、電機(jī)重置按鈕、開發(fā)板狀態(tài) LED、電機(jī)狀態(tài) LED
▲ 3000mAh 鋰離子電池(左)與 18650 鋰離子電池(右)
的確,一輛小小的微型車模,包括了計算機(jī)視覺、深度學(xué)習(xí)、傳感器融合、定位、路徑規(guī)劃、控制、系統(tǒng)集成等多個學(xué)科內(nèi)容。通過這個環(huán)節(jié)幾乎可以將一個專業(yè)所需要學(xué)習(xí)的多個課程集成在一起。這不,在Udacity平臺上,還真的提供了無人駕駛汽車納米學(xué)位項(xiàng)目 供希望獲得全面培訓(xùn)的工程師和學(xué)生學(xué)習(xí)。
教育部自動化類高等教學(xué)委員會在清華召開了院長會議,其中李少遠(yuǎn)老師對今年大學(xué)生學(xué)科競賽實(shí)踐教學(xué)進(jìn)行了總結(jié)。以在剛剛過去的暑期中,新冠疫情影響下,成功舉辦的全國大學(xué)生智能車競賽為例,探索面向未來實(shí)踐發(fā)展。希望智能車競賽為工科學(xué)生的大學(xué)期間專業(yè)課程實(shí)踐提供更好的鍛煉平臺。
責(zé)任編輯:haq
-
鋰電池
+關(guān)注
關(guān)注
260文章
8155瀏覽量
170984 -
芯片
+關(guān)注
關(guān)注
456文章
51045瀏覽量
425564 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7588瀏覽量
89021 -
無人駕駛
+關(guān)注
關(guān)注
98文章
4083瀏覽量
120716 -
TensorFlow Lite
+關(guān)注
關(guān)注
0文章
26瀏覽量
644
發(fā)布評論請先 登錄
相關(guān)推薦
評論