深度學習在無人駕駛汽車上面的運用有哪些?
&>&> 本問題已加入 人工智慧 · 自動駕駛 圓桌中,歡迎關注圓桌參與更多討論 &<&<
要回答這個問題,我們首先要看看為了實現自動駕駛(特指L3以及更高級別的),有哪些問題是需要被解決的。
我們首先來從人作為駕駛員來拆分這個問題,為了拿到駕照,你需要做到:
-作為駕駛者,你必須擁有對車輛所有控制項的控制;
-在駕駛過程中,需要按照法律法規,行駛在規定道路內;
-駕駛同時,要根據看到的路人,其他車輛,以及標牌來規劃路線,改變駕駛狀態,包括路口紅綠燈判斷,跟車車距調整,緊急情況應對;
-啟動/泊車/入庫
我們再來看看如果讓自動駕駛來完成的話會如何實現:
第一個任務對於自動駕駛來說不是問題,而且是自動駕駛的硬體基礎
接下來的任務都很大程度上可以被歸為一個領域的應用:計算機視覺。
在傳統的機器視覺研究中(深度學習流行前),基於邊緣檢測實現的道路檢測,基於HOG/SIFT特徵的行人、車輛檢測,基於HSV空間區域色彩判定實現紅綠燈檢測,這些都是已經被實現的技術,上過數字圖像處理的人大致都用matlab擼過一遍這些代碼,然而為什麼集齊了龍珠卻召喚不出自動駕駛的神龍?一方面因為這些方法太過專精,只對特定區域有效,另一方面駕駛場景何其複雜,我們也無法設計出能夠覆蓋所有情況的系統,光是條件語句就能寫死人(插一句話,即使到今天,自動駕駛中還有大量的預定義場景,乃至被人放上知乎試圖嘲諷如何看待百度無人車, 三千多個場景,一萬多個if? ,然後被無情打臉2333)
自從2012年開始,CNN網路在物體分類場景識別中一步步取得高分,神經網路模型不斷被改良,以至於在資料庫中達到人類水平的正確率,上面的問題很大程度得到了解決,我們從軟體、硬體、數據三個角度分別闡述。
首先在識別任務中,CNN是可以理解圖片中結構關係的神經網路,可以精確識別圖像中的行人、車輛、路牌等等,但是這還不夠,除了是什麼,還有在哪裡的問題,同時還需要有實時性,要是等CNN幾百萬個參數算完,人早就給撞死了。RCNN以及後續的Fast-RCNN以及Faster-RCNN(嘖嘖嘖這命名品味)逐步做到了能夠實時給出圖像中物體位置。更進一步,有人開始使用CNN來分割圖像,試圖估測出每個部分與攝像頭的距離2015 cvpr paper:
還有試圖根據素材材質分割圖像,判別目標輪廓MAC-CNN:
比起單純的用bounding box圈出目標,這樣的識別更接近人類的感覺,對於自動駕駛來說,也就越容易接近人類水平。
目標識別的同時自動駕駛還需要再此基礎上操縱車輛, RNN是用來處理序列的神經網路,RNN以圖像(或者CNN處理過的數據)和人類駕駛員的操作序列為輸入,學習人類的駕駛之外,使自動駕駛得以應對各種路況(這方面我接觸不是太多,如有錯誤,歡迎指正!)。
深度學習主要用感測器來智慧操縱車輛,與這些建立在車輛上的自動駕駛不同,福特有更激進的想法,試圖用基於城市的連接,車輛之間的鏈接,道路設施的鏈接,來創造一個完全智能調度的移動出行網路:
這當然是可能的,但是難度遠大於基於每輛車的方案(隱私,城市規劃),並且深度學習涉及不多,這裡不再贅述。
硬體方面,神經網路的興起伴隨著GPU被大量應用。深度的神經網路中參數量動輒百萬而且具有對不同數據相同操作的特點,適合併行計算的GPU被大量應用。在這次深度學習浪潮中,可以說最大的得利者不是用深度學習挖金礦的,而是賣鋤頭的英偉達。在英偉達顯卡壟斷深度學習硬體市場的背景和黃教主All-In深度學習的宣言下,英偉達的股票一年漲了三倍。但是具體到自動駕駛,大家都希望有專用的晶元,輕量化低功耗,而不是載著核彈到處跑,英偉達之前的Jetson系列嵌入式板子,把原本用到手機的平台拉來跑神經網路,倒是取得奇效,但是這些平台的性能還是過低,深一點的網路經常5fps都跑不到,用來識別貓貓狗狗是夠了,拿來當老司機還是不靈,今年英偉達在CES上新發布的幾款自動駕駛晶元,希望能使這個領域也有豐富的硬體資源供開發者榨取。
感測器作為神經網路的輸入,大部分廠商和開發者處於成本考慮都使用的普通攝像頭或者RGBD(深度)攝像頭,精度更高成本也更高的激光雷達,雖說被谷歌號稱降到了1/10,那也是7500美元的高檔貨,這方面的取捨是每個廠商要面臨的選擇,也是消費者選擇的重要參考。
同時還有路線規劃問題,需要高精度地圖和準確定位的輔助,這也是英偉達拉百度來當合作夥伴的原因,在國內還是得承認百度在自動駕駛上的巨大優勢。
最後是數據,可以說數據是驅動AI的燃料,雖然我們前兩年火熱的大數據熱度褪去被噴過度炒作,但是海量的數據被收集這個事實倒是幫了深度學習的大忙,也不是說這些數據可以用來訓練自動駕駛模型,而是成熟的數據收集、傳輸、儲存、以及分散式並行計算為深度學習提供了很大的方便,從hadoop的機器學習組件到spark上的caffe,這兩個領域將會是相互促進的互利關係。即便如此,深度學習需要的帶有標記(label)的數據仍然是稀缺資源,為了防止在某一資料庫上過擬合到地老天荒,資料庫開源成為流行。還有去年大流行的GAN,讓這個領域重新注意到了比起判別模型,生成模型用來解決數據短缺的思路。
更妙的思路我認為是大牛雲集的OpenAI開源的universe,讓研究者在GTA5中訓練自動駕駛,在遊戲中設置各種場景和路線來測試AI,具體推薦專欄文章https://zhuanlan.zhihu.com/p/24844986 。
自動駕駛是深度學習完美的研究對象和應用場景,這些年自動駕駛的概念火熱,一個很重要的原因是谷歌的突然入局,試圖從軟體角度,直奔L4級別自動駕駛,在穀人希的感召力下,巨頭和創業者都試圖搶灘登陸,資本和媒體也隨之而來,讚美和質疑都大量存在,然而我仍對深度學習的未來深信不疑,你我都處在隨時可能見證歷史的時代,或早或晚,自動駕駛一定會到來。
最後,歡迎關注本文作者@薛冬毅
我們提到深度學習的時候,一般指的是深度神經網路,卷積神經網路等,與圖像處理和計算機視覺息息相關。在做無人車的公司中,他們都會用到三個感測器激光雷達(lidar),測距雷達(radar)和攝像頭(camera),但還是會各有側重。比如 Waymo(前谷歌無人車)以激光雷達為主,而特斯拉和中國的圖森互聯以攝像頭為主。那麼深度學習就主要應用在處理無人駕駛車的攝像頭數據中。
無人駕駛車要安全的在道路上行駛就需要知道他自己處在什麼樣的環境中,自己在哪一條車道,一共有幾條車道,道路的邊沿在哪裡,車道分界線在哪裡;前後左右有沒有車行人或者其它的移動物體,有沒有靜止的障礙物;信號燈和交通標誌的位置以及其指示的信息等。
我們可以從特斯拉近期放出的一段無人駕駛的視頻~中看到特斯拉有三個攝像頭感測器,左中右各一個。
從上圖我們可以看出,特斯拉成功識別了道路線(紅色的線)前方整個路面(右中圖),這個過程也可以用深度學習完成,不過更可能使用了普通的圖像處理(OpenCV),過程如下圖。
從特斯拉無人駕駛視頻的截圖中,我們還可以看到特斯拉成功定位到了在道路中的物體(綠色方框),這些要特別注意,需要估算彼此的速度或相對速度,避免相撞;還有攝像頭範圍內的其它物體(藍色方框)。我們還可以看到它非常精確的定位到了遠處的信號燈(上上圖中黃棕色的小方塊),如果能定位到信號燈的話,那麼它是紅燈還是綠燈就非常容易分辨了。從下圖中你還能看到它也準確定位了交通標誌(右中紫色部分)。
現在的攝像頭已經可以擁有比人眼更遠更開闊的視線了,我們只需要告訴它看到的是什麼,這個過程就是由深度學習的方法來實現的了。
其實用深度學習來實現這些目的的方法都是相似的,主要包含了以下幾個步驟:
1. 收集數據集
我們需要做什麼樣的預測就需要什麼樣的數據集。識別貓狗的話就需要包含貓狗的數據集,識別交通標誌就需要包含交通標誌的數據集,通常這些數據集都是有標籤的。一般數據集的數量越大(單個種類數量大於1000張圖片),圖片的無關背景要豐富,訓練出的模型就會越好。做相關研究的公司,大學或組織可能會根據自己的需求採集數據集,通常他們也會選擇將這些數據集公開,所以出於學習的目的話我們很容易能夠找到自己需要的數據集。
2. 數據預處理
通常我們的模型只能接受特定的尺寸和維度的圖片的輸入。有時我們需要將圖片轉成灰度圖,有時我們需要對圖片進行裁切,並改變其尺寸。
在進行訓練的時候,由於訓練集往往會包含幾萬張圖,所以我們一般不推薦選擇將所有訓練集的圖片載入到內存當中而是使用圖片生成器(ImageDataGenerator),使圖片生成器生成一個batch的圖像數據,支持實時數據提升。訓練時該函數會無限生成數據,直到達到規定的次數為止。
3. 搭建模型
現在已經有很多優秀的模型結構了,比如 LeNet,AlexNet,VGG,GoogleNet,ResNet 等。如果只是想做應用,我們只需要選擇一個合適的網路然後再依據自己的需求進行適當的修改,驗證自己方法的有效性即可。我通常會使用 Tensorflow (udacity/CarND-TensorFlow-Lab)+ Keras(udacity/CarND-Keras-Lab)。Keras 是一個高級別的 Python 神經網路框架,當我想試驗一個模型的效果時,Keras 能夠幫助我快速實現而不至於被卡在一些奇怪但不怎麼重要的計算上。前幾天 Keras 的作者、谷歌AI研究員 Francois Chollet 也宣布Keras 會成為第一個被添加到 TensorFlow 核心中的高級別框架,那麼 Keras 就會變成 Tensorflow 的默認API了。
model = Sequential()
model.add(Convolution2D(32, 3, 3, border_mode="same",
input_shape=X_train.shape[1:]))
model.add(Activation("relu"))
model.add(Convolution2D(32, 3, 3))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2, 2), dim_ordering="tf"))
model.add(Dropout(0.25))
model.add(Convolution2D(64, 3, 3, border_mode="same"))
model.add(Activation("relu"))
model.add(Convolution2D(64, 3, 3))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2, 2), dim_ordering="tf"))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation("relu"))
model.add(Dropout(0.8))
model.add(Dense(nb_classes))
model.add(Activation("softmax"))
model.compile(loss="categorical_crossentropy",
optimizer="adadelta",
metrics=["accuracy"])
4. 訓練模型
如果你用了 Keras 那麼訓練模型在設置好參數之後似乎就只有一句代碼的事情了。
model.fit_generator(datagen.flow(X_train, Y_train,
batch_size=batch_size),
samples_per_epoch=X_train.shape[0],
nb_epoch=nb_epoch,
validation_data=(X_test, Y_test))
Epoch 1/20
39209/39209 [==============================] - 11s - loss: 3.0946 - acc: 0.1554 - val_loss: 1.9770 - val_acc: 0.3879
Epoch 2/20
39209/39209 [==============================] - 11s - loss: 2.0051 - acc: 0.3938 - val_loss: 1.3897 - val_acc: 0.5475
Epoch 3/20
39209/39209 [==============================] - 11s - loss: 1.5278 - acc: 0.5164 - val_loss: 0.9805 - val_acc: 0.6721
Epoch 4/20
39209/39209 [==============================] - 11s - loss: 1.1610 - acc: 0.6241 - val_loss: 0.6570 - val_acc: 0.8124
Epoch 5/20
39209/39209 [==============================] - 11s - loss: 0.8975 - acc: 0.7077 - val_loss: 0.4497 - val_acc: 0.8724
Epoch 6/20
39209/39209 [==============================] - 11s - loss: 0.7341 - acc: 0.7619 - val_loss: 0.3357 - val_acc: 0.9011
Epoch 7/20
39209/39209 [==============================] - 11s - loss: 0.5990 - acc: 0.8108 - val_loss: 0.2895 - val_acc: 0.9209
Epoch 8/20
39209/39209 [==============================] - 11s - loss: 0.5033 - acc: 0.8393 - val_loss: 0.2342 - val_acc: 0.9344
Epoch 9/20
39209/39209 [==============================] - 11s - loss: 0.4324 - acc: 0.8653 - val_loss: 0.1771 - val_acc: 0.9498
Epoch 10/20
39209/39209 [==============================] - 11s - loss: 0.3803 - acc: 0.8818 - val_loss: 0.1795 - val_acc: 0.9530
Epoch 11/20
39209/39209 [==============================] - 11s - loss: 0.3336 - acc: 0.8964 - val_loss: 0.1616 - val_acc: 0.9553
Epoch 12/20
39209/39209 [==============================] - 11s - loss: 0.2954 - acc: 0.9078 - val_loss: 0.1487 - val_acc: 0.9601
5. 評估模型穩健性
我通常會用兩種方法來評估模型的穩健性。一種是用不同的數據集來訓練同一個模型,然後觀察模型的表現。如果兩次訓練的 logloss 都比較低,或者準確度都比較高那麼模型就是可以的。如果一次準確率高,一次又低,那麼模型一定有需要完善的地方。另一種方法就是K折交叉驗證。K折交叉驗證法就是將數據集分成K份子集,依次用每一份子集來做測試集,其餘的(K-1)個子集來做訓練集,這樣,我們將會進行K次實驗,然後取K次實驗結果的平均值作為結果,這會使模型的預測結果更加準確。
以上這個簡單的流程只是關於圖像分類的深度學習方法,其實還有很多更高級更新的方法比如 RCNN,Faster-RCNN 等,它們不僅可以分類,還能得出物體在哪裡,就像特斯拉視頻中一樣。不過這一部分的內容我還在學習中。
此外,你可能還在特斯拉的視頻中注意到它有很多綠色的線,這是用光流法生成的。雖然這與深度學習沒有太大關係,但卻是非常有用的圖像處理方法,可以用 OpenCV 實現。光流法是空間運動物體在成像平面上的像素運動的瞬時速度,是利用圖像序列中像素在時間域上的變化以及相鄰幀之間的相關性來找到上一幀跟當前幀之間存在的對應關係,能夠計算出相鄰幀之間物體的運動信息的一種方法。
至於圖森互聯,也有一段視頻可以參考,他們不僅能夠定位到車輛和行人,還能夠識別車的品牌和型號。此外,他們還將演算法針對中國進行了優化,強化了自行車,電動車,摩托車,三輪車,平衡車的識別。這些過程也是通過深度學習的方法實現的。所以也不需要過度擔心中國堵車,快遞車可能不遵守交通法等問題給無人車帶來的挑戰啦。
參考資料:
- 圖森互聯官網
- 光流法簡單介紹
感謝 Udacity 學生 @楊培文 投稿,歡迎進行交流討論~
深度學習在無人駕駛領域主要用於圖像處理, 也就是攝像頭上面。 當然也可以用於雷達的數據處理, 但是基於圖像極大豐富的信息以及難以手工建模的特性, 深度學習能最大限度的發揮其優勢。
其他答案大概介紹了一下深度學習可以在無人駕駛中用來幹什麼, 我就當下搬運工, 介紹一下全球攝像頭領域的扛把子,
以色列的mobileye公司是怎麼在他們的產品中運用深度學習的。 深度學習可以用於感知, 比如很多答案已經介紹了的, 識別周圍環境, 各種對車輛又用的信息; 深度學習也可以用於決策, 比如AlphaGo的走子網路(Policy Network), 就是直接用DNN訓練, 如何基於當前狀態作出決策。
首先是環境識別方面:
mobileye把他們識別方面的工作主要分為三部分, 物體識別, 可行駛區域檢測, 行駛路徑識別。
- 物體識別
一般的物體識別是這樣子的:
有一個長方形框框能識別出來車在哪裡, 很好,很不錯, 但是Mobileye出來的是這樣子的:
以及這樣子的:
很明顯的區別就是Mobileye可以實現非常準確的車的正面以及側面的檢測, 以及完全正確的區分左邊側面以及右邊側面(黃色和藍色)。
這兩種檢測結果的信息量是完全不同的, 左邊這個檢測結果告訴我們什麼位置大概有一輛車, 但是他的具體位置, 車的朝向信息完全沒有。 但是從右邊的檢測結果, 就可以相對精確的估算出來車的位置, 行駛方向等重要信息, 跟我們人看到後可以推測的信息差不多了。
這樣出眾的結果, 對於較近距離的車, 用其他基於幾何的方法, 多跟蹤幾幀, 可能可以做到接近的效果, 但是留意遠處很小的車, 結果也完全正確, 這就只可能是深度學習的威力了。 可惜Mobileye創始人兼CTO總愛四處顯擺他們技術怎麼怎麼牛, 之前也常發論文共享一些技術, 但是在車輛識別怎麼建模神經網路可以輸出這麼精確帶orientation的bounding box, 他只是微微一笑, 說這裡面有很多tricks。。
如果誰知道學術界有類似的工作, 請私信告訴我, 拜謝
2.可行駛區域(free
space)檢測
深度學習以前的可行駛區域檢測, 有兩種方法, 一是基於雙目攝像頭立體視覺或者Structure from motion, 二是基於局部特徵,馬爾科夫場之類的圖像分割。 結果是這樣的:
綠色部分是可行駛區域檢測, 看著還不錯對不對? 但是注意左邊的綠色部分涵蓋了馬路倒鴨子以及人行道部分, 因為倒鴨子也就比路面高十厘米左右, 靠立體視覺是很難跟馬路區分開來的。 而傳統的圖像分割也很困難, 因為局部特徵上, 倒鴨子上和路面的顏色及其接近。區分二者需要對環境整個context的綜合理解(趕時間, 所以可能開始夾英文了)。
自從有了深度學習可以做scene
understanding之後, 這個問題終於被攻克了:
綠色部分還是可行駛區域, 馬路右邊的路肩跟路面的高度相差無幾, 顏色texture也是一模一樣, 用立體視覺的方法不可能區分開來。
而且不僅僅可行駛區域的邊界準確檢測出來了, 連為什麼是邊界的原因也可以檢測出來:
紅色表示是物體跟道路的邊界, 滑鼠位置那裡表示的是Guard rail(護欄),而上一張圖應該是Flat。 這樣在正常情況下知道哪些區域是可以行駛的,而在緊急情況下, 也可以知道哪裡是可以衝過去的。
當然, 相較於第一部分, 這一部分的原理是比較清楚的, 就是基於深度學習的scene understanding。 學術界也有蠻不錯的結果了, 比如下圖(Cambridge的工作),路面跟倒鴨子就分的很好(藍色跟紫色):
3.行駛路徑檢測
這一部分工作要解決的問題主要是在沒有車輛線或者車輛線狀況很差的情況下, 車怎麼開的問題。 如果所有的路況都如下:
那當然很完美, 但是由於路況或者天氣, 有些時候車輛線是很難檢測到的。
深度學習為此提供了一個解決辦法。 我們可以用人在沒有車道線的路況下開車的數據來訓練神經網路, 訓練好之後, 神經網路在沒有車道線的時候也能大概判斷未來車可以怎麼開。 這一部分原理也是比較清楚的, 找一個人開車, 把整個開車的過程攝像頭的錄像保存下來, 把人開車的策略車輛的行駛路徑也保存下來。 用每一幀圖片作為輸入,車輛未來一段時間(很短的時間)的路徑作為輸出訓練神經網路。 之前很火的Comma公司, 黑蘋果手機那個創立的, 做的無人駕駛就是這種思路, 因為其可靠性以及原創性還被LeCun鄙視了。
結果如下,可以看到神經網路提供的行駛路徑基本上符合人類的判斷:
更極端的情況:
綠色是預測的行駛路徑。沒有深度學習, 這種場景也是完全不可能的。 當然, 我在最近的另外一個答案裡面提到了, 不能完全依靠神經網路來做路徑規劃, Mobileye也是綜合傳統的車道線檢測, 上面提到的場景分割檢測到的護欄等, 這一部分的神經網路輸出等等, 做信息融合最後得到一個穩定的完美的行駛路徑。
不早了先寫這麼點, 剩下的回頭補充。
關於無人駕駛,我感覺核心是一個避障問題(collision avoidance)。主要就是三個方面,感知(perception),決策(decision making),和控制(control)。感知目前來看多是基於CNN,技術感覺已經比較成熟。而有了環境感知後,就要進行決策,這部分涉及到deep learning的大概就是deep reinforcement learning了。Control是一個跟隨的問題,最終形成閉環。
謝邀,關於深度學習在無人駕駛汽車上面的應用有很多:
(1).路徑識別。無人駕駛車必須要準確的知道自己應當行駛在路的哪一邊,「認路」是最基本的條件,不認路的話會產生很嚴重的後果,比如逆行。
(2).行人識別:僅僅實現認路還不夠,還要能識別出哪些「物體」是在任何場景下絕對不能碰撞的「人類」,做不到這一點,所有的國家和地區都不會允許這樣的技術在各種道路上推廣。
(3).道路標誌識別和信號燈識別:紅燈停綠燈行,哪個路段是禁行的,哪個路段是限載的,哪處的前方會有學校,哪處是禁停的......這些人類制訂的道路標識規則無人駕駛汽車必須遵從,這點無需多言。
(4).環境識別:外面是下雨了還是一個大晴天(下雨的話就不能走滑坡泥石流多發的道路),是有濃霧還是能見度很高(濃霧天氣就要減速並開遠光燈).......這些都要考慮
(5).障礙物及車輛識別:無人駕駛汽車要識別出哪些是「有效障礙物」(比如交警,比如路障,比如收費站....這些具有法律管制效應的「障礙物),要識別出哪些是有特殊含義的車輛(警車,消防車,救護車.......)哪些是一般意義上的車輛。
還有很多很多更加具體的細節應用,就不再贅言
不過我相信題主一定不僅僅想了解上面這些粗淺的空話,下面讓我們拿出幾個乾貨例子來說明深度學習在無人駕駛汽車中的具體應用:
1.應用深度學習識別車輛和道路
相關文獻:An Empirical Evaluation of Deep Learning on Highway Driving——Brody Huval, Tao Wang, Sameep Tandon, Jeff Kiske, Will Song, Joel Pazhayampallil,Mykhaylo Andriluka, Pranav Rajpurkar, Toki Migimatsu, Royce Cheng-Yue,Fernando Mujica, Adam Coates, Andrew Y. Ng
在車輛識別方面,研究團隊在檢測系統中使用的是大於10Hz的筆記本電腦配置的GPU,設定的圖像解析度是640X480(這樣的解析度是為了在運行速率為10Hz的條件下能夠探測出100m之外的車輛),使用的是基於Overfeat的卷積網路(CNN: Convolutional Neural Network)檢測器——在識別過程中,通過提供較大解析度的圖像將完全連接的層轉換為卷積層,將圖像識別CNN轉換成「滑動窗口」檢測器。在將完全連接的層(其已經產生單個最終特徵向量)轉換為卷積層之後,產生最終特徵向量的網格。 每個特徵向量結果表示原始像素空間內的略有不同的「上下文視圖位置」( context view location)。 為了確定這個窗口在像素空間中的步幅(stride size ),可以簡單地將每個卷積或池層(pool layer)上的步幅相乘在一起。(研究團隊使用的網路具有32像素的步幅)。該網格中的每個最終特徵向量可以預測物體的存在; 一旦檢測到對象,相同的特徵會被用於預測單個邊界框( single bounding box )。 如果分類器不能在整個輸入視圖內辨別對象的任何部分,則不能識別任何對象,系統會預測「無對象」。這將導致分類器產生較大的模糊性(ambiguities),其僅能預測單個對象,因為兩個不同的對象可以很容易地出現在最終特徵向量的環境視圖中(通常大於輸入圖像解析度的50%)。
在網路具有大小為355×355像素的環境視圖下,為了確保圖像中的所有對象被至少分類一次,通過「skip gram kernels」的方法來減少環境視圖的步幅並且使用四個不同尺度的輸入圖像來對圖像拍攝許多不同的環境視圖。在此之後分類器會被訓練到「當對象出現在其整個環境視圖內的任何地方時」便被激活的程度。然而這麼做會帶來兩個問題:首先,基於Sermanet等人提出的預測邊界框(predicted bounding box )和實際邊界(actual bounding)之間存在L2損失( L2 loss),為了使這種損失最小化,當兩個物體出現時,預測兩個有效邊界框位置時產生的模糊性會被網路錯誤的處理。視圖內的框(boxes)往往導致邊界框合併演算法( bounding box merging algorithm)的問題——錯誤的判定在兩個地面實況對象之間一定存在第三對象——這可能導致ADAS系統發生問題(該系統會錯誤地判定存在事實上不存在的汽車,並且錯誤地應用緊急中斷:emergency breaking機制)。其次,應用合併演算法 ( 是視圖中的框數)時,因為邊界框合併不像CNN那樣容易並行化,在無效實現或存在太多預測邊界框的情況下,這種合併可能成為實時系統的瓶頸。
為解決上述問題,掩模檢測器( mask detector )被引入(下圖所示)
為了區分多個附近的對象,不同的部分檢測器輸出對象掩模,然後從中提取邊界框。 檢測器必須拍攝許多組圖像,並且對每組圖像的每個部分運行多個CNN。 由於實現這一過程所需的時間略長(5-6s),「滑動窗口」檢測器將與掩模檢測器相結合,以產生對象掩碼( object mask)並執行邊界盒回歸( bounding box regression)(下圖所示)
在道路識別方面,用於車輛檢測的CNN可以通過添加附加類別的方式擴展用於車道邊界檢測。不同之處在於道路回歸預測需要六個維度的尺寸值(四個維度尺寸用以指示車道邊界的局部線段的兩個端點。剩餘的兩個維度指示端點的深度)而車輛類的回歸預測需要五個維度的尺寸值(四個維度尺寸用於邊界框,一個維度尺寸用於深度)。圖下示出了覆蓋在示例圖像上的車道邊界地面實況標籤。綠色圖塊表示檢測器被訓練到的位置,並且由回歸標籤表示的線段被明確地繪製。線段的端部連接以形成連續樣條。線段的深度被顏色編碼,使得最近的段是紅色的,最遠的段是藍色的。由於數據收集方法為車道標籤,研究團隊能夠獲得地面實況。儘管有可能對象被遮擋,但這迫使神經網路學習比簡單的油漆檢測器更多更複雜的預測方法,並且必須使用環境來預測存在遮擋的車道。
2.應用深度學習識別預料之外的障礙物
相關文獻:Detecting Unexpected Obstacles for Self-Driving Cars:Fusing Deep Learning and Geometric Modeling——Sebastian Ramos , Stefan Gehrig , Peter Pinggera , Uwe Franke and Carsten Rother
該研究團隊使用的識別障礙物的核心框架如下:
UON(Unexpected Obstacle Network)預料外障礙物網路
SGM(Semi Global Matching)半全球匹配
演算法程序框架如下:
使用兩個並行和獨立的通道來處理輸入圖像對,以最初執行像素級語義推理以及深度估計。 隨後,獲得兩個獨立的基於3D Stixel的障礙物表示,第一個利用語義,第二個利用場景的幾何屬性。 最後,以概率方式融合兩個通道以生成道路上的潛在障礙物的整體3D Stixel表示。
另外推薦一些關於深度學習應用於無人駕駛的好的網站:
Visual Perception for Autonomous Driving
How important is deep learning in autonomous driving?
End-to-End Deep Learning for Self-Driving Cars
Deep Learning and Autonomous Driving
自動駕駛是深度學習應用的主要方向之一。
從感測器端:
1、攝像頭:目標檢測跟蹤識別、距離深度估計、語義分割、序列預測識別、視差光流計算
2、激光雷達:點雲目標檢測識別、點雲分割、路沿提取
3、毫米波雷達:降噪、目標檢測等
1、目標檢測、跟蹤、識別、位置、佔據、速度、行為等感知
2、交通標誌、地面標誌、車道線、停止線、人行道、指路標誌等的地圖屬性提取註冊
3、語義標誌、底層特徵、IMU+GPS融合、里程計等定位
4、行為預測、深度強化學習決策等
對於無人駕駛技術,我覺得幾年後的5g時代到來可以獲得更大的突破。當汽車也連接到無線網路中去,汽車不再是孤立的。以深度學習為核心的無人駕駛技術,車與車之間特別依賴識別與推斷的準確性,例如判斷對方的行為,來確定自己是否加減速,是否轉彎。而如果車與車之間一旦可以通信,那麼兩個車一遇到,你的狀態和我的狀態可以自發的交換,相互協商,相互配合,可以更大程度保證了駕駛的安全。
哈哈,終於有機會說謝邀了,第一次在貴乎上被邀請。
好了,說正事。 剛接觸深度學習也沒多久,就依據我所了解的知識,淺顯地談談我的看法吧。
首先,說一下深度學習是幹啥的,就是更高層次的機器學習,其實就是深度神經網路換了個名字而已,經實踐,該模型在分類,識別方面收穫了有超乎尋常的良好效果,所以立馬火了,被廣泛運用。因此,深度學習其實就是一系列的深度神經網路模型,比如,現在最火的CNN ,RNN, 這些模型的作用主要是大規模的訓練數據,可以提取出較明顯的特徵,訓練出一個較好的分類器。緊接著也就可以識別了。
接著咱再說,無人駕駛汽車。其實對於這個接觸不多,只知道百度,谷歌都在做。就我知道的一些說一下吧,無人駕駛汽車,其實就是汽車自動獲取路況信息,比如交通標誌,路上的車道線,路上的行人,(哈哈,前一段剛拿到駕照),對於開車人其實也就需要注意這些問題了,其實如果無人駕駛做的好的話,真的有可能比你更有用,因為人容易跑神,等等,機器就不會了。
好了,上面也說了,汽車在行駛過程中,獲取各種路況信息,然後就是各種if判斷了,這裡就要用到深度學習了。比如,攝像頭拍攝到前方有個「停車」標誌,然後,系統就要對這個標誌(其實就是一張圖片),進行處理,前期已經用深度學習模型訓練過了,得到了一個分類器。 這個分類器對這個圖片分類,判斷出它是一個停車標誌。好了,輸出它是個停車標誌,系統就執行對應的步驟,無人駕駛車就要停下來了。其它路況信息應該也都是類似的過程。
無人駕駛車,我覺得難點在於,路況情況太多太多了,很難把它全部考慮到,只能一直優化;還有,對於路況識別的準確率,也是一個難點,這個會導致汽車做出錯誤的處理。不過,美國在這方面好像已經做的很好了,在有些州車子已經可以正式上路了。
以上,都是根據我自己的理解,發表的看法。 哈哈,如有說的不對的地方,請大神們指教。
謝邀,分享一個與之有關的有意思的文章吧
http://selfdrivingcars.mit.edu/deeptraffic/
謝邀,障礙物檢測規避,信號指示識別,道路識別規劃,如何做到狹窄路段的會車避讓
哈哈,謝邀,然而。傳統無人駕駛依靠的就是圖像處理,深度學習,尤其是卷積神經網路(CNN)在圖像處理方面具有顯著效果,具體在無人駕駛的應用並不了解
謝邀。無人駕駛的實現,肯定有對視屏中物體的識別這一步驟,其識別方法和圖像識別本質相同。深度學習在目標檢測中的應用很早就有了。r-cnn是一個開端,在此之後有fast r-cnn,faster r-cnn,yolo,ssd,densebox等。resnet的出現讓"更深"成為可能。這個領域發展的很快,目前期待一個大的跨步。
謝邀。因為我的專長主要在機器人領域,對於深度學習在無人駕駛汽車上的運用沒有專門研究,這個問題還是請專家回答。
不過,您可以了解一下NVIDIA公司的DRIVE?PX2這個平台。
這是一個開放式人工智慧車輛計算平台,可以實時了解車輛周圍的狀況, 可在高清地圖上準確的定位車輛,並且計劃一條安全的行駛路徑。這個平台囊括了深度學習技術,感測器融合技術以及環視技術來改變駕駛體驗。
目前奧迪Q7在使用這個平台。配備有DRIVE PX2、Drive Works軟體,通過使用深度神經網路PilotNet來識別和理解車身周圍環境,確保安全地駕駛前行。車輛會根據各種不同情形的路面,自動改變行駛路線。
另外百度在利用深度學習技術進行無人駕駛汽車研究方面也很靠前,可以一併參考。
謝邀~先佔個位置~有時間詳細說一下
智能泊車智能行車模型中的感知後的分析和決策就含有機器深度學習演算法。現在主要使用基於機器深度學習和基於規則的混合決策。
分享一篇 覺得寫得不錯的文章http://mp.weixin.qq.com/s/Uki0BlCWbSDskYCaLhD2HQ
謝邀。
從綜合角度(主要是產品)出發吧,我覺得主要有:
1.更準確的「避障」行駛,比如:我特么就是不能跟大貨車後面,油罐車隔壁。
2.更風騷的應急走位:在模擬應急情況後,在應急情況啟用,緊急救援代操代打,救人一命,收費妥妥
3.哇,具體其實就是1.識別物體哇 2.追蹤物體 3.回歸問題啊(比如有些情況,除了識別,直接回歸出逃跑 不,逃生方向比較合適)
前面在於解決有什麼,在哪裡的問題
後面可能就是下棋的下的問題了,非枚舉情況下,指望該技術能概率出最好的操作。
我覺得無人駕駛技術還應該重視路面的建設。
從道路方面降低無人駕駛技術對適應路面複雜性的要求,類似於專門為無人駕駛車建造或改造行車道,就像現在的有軌電車,按照地上的引導的,加上車子上無人駕駛技術模塊,相互識別配合。
未來的無人駕駛技術應該是將所有的私家車變成這類「有軌電車」,無論去哪裡都有「軌道」
很抱歉題主,因為本人目前也是小白,剛剛開始學習深度學習。所以現在還不能給你提供有價值的幫助。目前的研究方向是基於深度學習的模式識別,主要是圖像處理方向。謝謝題主的邀請!
謝邀,深度學習在無人駕駛汽車上面的應用很多,如樓上各位所說,大多數在路況判別方面。
我在做無人駕駛汽車的自動切換模式,即汽車何時有人駕駛,何時來自主行駛。
主要是用深度學習來判斷駕駛員的狀態(接電話,打瞌睡等等),來決定行駛模式。
如優達學城(Udacity)所說,用深度學習來實現這些目的的方法都是相似的,主要包含了以下幾個步驟收集數據集、數據預處理、搭建模型、訓練模型、評估模型穩健性,我就不嘮叨了~~~
推薦閱讀: