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