避撞功能是智能車的最基本保護能力,Jetbot 使用深度學習的圖像分類技術(shù)來模擬人眼習慣實現(xiàn)這個功能,但這只是智能車所展現(xiàn)的最入門應(yīng)用而已,接下去就要提升到“循路”的功能,跟著指定路線去前進,才是真正進入有實用價值的應(yīng)用。
在這里有非常多精選的項目,其中的“TRANSFER LEARNING WITH JETBOT & TRAFFIC CONES”項目就是前面避撞應(yīng)用的延伸,模擬無人駕駛車在道路上識別路錐所規(guī)劃出的道路(如下圖),然后驅(qū)動機電控制系統(tǒng)執(zhí)行智能駕駛的功能。
有能力的讀者可以訪問,觀看整個項目的構(gòu)思邏輯,事實上這個項目使用了與避撞項目相同的深度學習圖像分類技術(shù)來進行路錐的識別,在“blocked”與“free”與兩個分類之上再添加“l(fā)eft”與“right”兩個分類,其他的執(zhí)行邏輯與避撞項目幾乎完全一樣。
在 traffic_cones_driving 目錄下有三個腳本,分別執(zhí)行數(shù)據(jù)收集、模型訓練與現(xiàn)場演示三部分,與避撞應(yīng)用的節(jié)奏是一樣的,最關(guān)鍵的環(huán)節(jié)也是在“數(shù)據(jù)收集(data_collection)”部分,至于模型訓練(train_model)的部分則添加遷移學習的功能,而現(xiàn)場演示(live_demo)的部分則增加比較細膩的判斷,并且提供運行過程的記錄功能,便于后面進行矯正的任務(wù)。
現(xiàn)在根據(jù)三個步驟所需要注意的重點,提供一些參考的說明,至于執(zhí)行代碼的細節(jié)直接對照避撞項目的腳本就可以。
1.數(shù)據(jù)收集:
使用data_collection_cones.ipynb
這個環(huán)境同樣是整個應(yīng)用中最關(guān)鍵與最繁瑣的步驟,與避撞項目相同的,我們必須使用 Jetbot 上面的 CSI 攝像頭進行數(shù)據(jù)采集,并且同時進行分類,主要有以下三件需要注意的事項:
(1)雖然原創(chuàng)團隊使用“小紅錐(如上圖)”作為“分道物體”去部署行進的路線,但其實也可以使用任何物體來進行體驗,包括“跳棋子”、“圍棋子”或用“非透明”的定位膠帶(如下圖),只要顏色與地面(板)有明顯反差的就行,例如淺色地板就用深色物體或膠帶、深色地板就用淺色物體或膠帶。
或者在下圖這種印好賽道的板子或者塑料布上也可以,重點并不在于是否為“立體物”,而是能在圖像中識別出的“明顯邊界”,這樣就能用來執(zhí)行這個數(shù)據(jù)收集的任務(wù)。
(2)執(zhí)行圖像收集的時候,并不需要將分道物體按照指定路線進行排列,只需要排成半個圓形或方形就可以。這里需要識別的“邊界狀況”是固定的立體物或線條,比前面避撞項目所需要面對眾多“未知物”更加簡單,因此 4 個分類大約各收集 20~30 張圖片也就夠了。
(3)采集數(shù)據(jù)的分類,請根據(jù)“攝像頭所看到的畫面”去進行分類,避免從人眼去判斷目前鏡頭圖像“可能”是哪個類別,這樣才不會造成誤差而影響最終的識別效果。下面列出幾種分道物所采集分類的圖像,提供作參考。
2.模型訓練:使用train_model_cones.ipynb
這個項目名稱里雖然有“Transfer Learning”在里面,不過只是在“Define the neural network”第一個步驟的“model = models.alexnet(pretrained=True)”用到 PyTorch 預(yù)訓練好的 AlexNet 1000 類的分類器模型,但是這些分類與我們所使用的分道物基本沒有關(guān)聯(lián),因此以使用這個模型為基礎(chǔ)的遷移學習并沒有明顯的幫助。
如果想將前面的避撞功能加到這個循路應(yīng)用里,有兩種方法可以實現(xiàn):
(1)將避撞項目收集好的 “blocked” 與 “free” 類別圖像數(shù)據(jù),分別加到這個項目的對應(yīng)目錄中一起進行模型訓練。
(2)運用“遷移學習”技巧,在執(zhí)行模型訓練之前將避障項目的 best_model.pth 導進來作為訓練的基礎(chǔ),當然您得先把避撞的 best_model.pth 模型文件復制到這個目錄下。不過這個做法需要在代碼上做些小幅度的修改,將“Define the neural network”第一個步驟進行以下的調(diào)整:
#關(guān)閉原本的pretrained設(shè)置
model=models.alexnet(pretrained=False)
#添加下面代碼
model.load_state_dict(torch.load('best_model.pth'))
這種做法的好處是,未來面向更多不同分道物的時候,可以不斷往上疊加以增加Jetbot適合的使用場景。
例如第一次使用紅錐做分道物,進行數(shù)據(jù)采集并訓練出 best_model_cones_1.pth,等后面要使用定位膠帶做分道物的時候,就能在 best_model_cones_1.pth 的基礎(chǔ)上去訓練能識別紅錐與定位膠帶兩種分道物的 best_model_cones_2.pth 模型,真正發(fā)揮遷移學習的效果。
3.現(xiàn)場演示:使用live_demo_cones.ipynb
這個腳本與避撞的 live_demo 基本邏輯是一樣的,項目提供一個完整的決策流程圖(如下)可以參考一下。
另外這里面還添加一個“第一視角(FPV, Fisrt Person View)”的視頻記錄功能,將循路的行進過程完整記錄下來。
這個功能在校正過程中是非常有用的,但是視頻存儲的工作會占用 Jetbot 不少的 CPU 計算資源以及非常緊湊的存儲空間,因此完成校正之后就建議將這個功能關(guān)閉,這個功能的函數(shù)名是 “save_frames_with_telemetry” ,請使用網(wǎng)頁搜索功能在腳本里找到位置,只要在前面加上 “#” 關(guān)閉調(diào)用就可以。
剩下的工作就是按部就班去執(zhí)行,有了這個循路的功能之后,才是讓 Jetbot 真正進入智能車應(yīng)用的起點。
原文標題:NVIDIA Jetson Nano 2GB 系列文章(51):圖像分類法實現(xiàn)找路功能
文章出處:【微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
功能
+關(guān)注
關(guān)注
3文章
589瀏覽量
29787 -
攝像頭
+關(guān)注
關(guān)注
61文章
4982瀏覽量
98411 -
智能車
+關(guān)注
關(guān)注
21文章
409瀏覽量
77571
原文標題:NVIDIA Jetson Nano 2GB 系列文章(51):圖像分類法實現(xiàn)找路功能
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
無線語音遙控智能車設(shè)計與實現(xiàn)
智能車設(shè)計基礎(chǔ)
多功能智能車
實時監(jiān)控防火智能車
樹莓派智能車AlphaBot系列教程
智能車系統(tǒng)解決方案總體設(shè)計
智能車制作相關(guān)資料分享
智能車競賽淺談——圖像篇
圖像采集與處理在智能車系統(tǒng)中的應(yīng)用

圖像采集與處理在智能車系統(tǒng)中的應(yīng)用

評論