本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
了解賽車類型並啟用 AWS 支援的感測器 DeepRacer
在 AWS DeepRacer 聯賽中,您可以參加以下類型的賽車活動:
-
限時競賽:在沒有任何障礙的賽道上於時限內進行競賽,並盡可能地獲得最快的單圈時間。
-
迴避物件:在設置了固定障礙物的賽道上於時限內進行競賽,並盡可能地獲得最快的單圈時間。
-
Head-to-bot 賽車:與同一軌道上的一輛或多輛其他車輛比賽,並旨在在其他車輛之前越過終點線。
AWS DeepRacer 社群競賽目前僅支援計時試用。
您應該嘗試 AWS DeepRacer 車輛上的不同感測器,以提供足夠的功能來觀察特定競賽類型的周圍環境。下一節說明 AWS DeepRacer 支援的感測器,這些感應器可以啟用支援的自主賽車賽事類型。
主題
選擇適合 AWS DeepRacer 賽車類型的感應器
您的 AWS DeepRacer 車輛隨附前置單眼相機做為預設感測器。您可以新增另一台面向前方的單眼攝影機,形成面向前方的立體攝影機,或是使用 LiDAR 單位補充單眼攝影機或立體攝影機。
下列清單總結了 AWS DeepRacer 支援感應器的功能功能,以及簡短的 cost-and-benefit 分析:
- 面向前方的攝影機
-
面向前方的單鏡頭攝影機可以擷取託管車輛前方環境的影像,包括賽道的邊界和形狀。這是最便宜的感應器,適合處理較簡易的自主駕駛任務,例如在標記清晰賽道上進行的無障礙限時競賽。搭配適當的培訓,其可以迴避賽道上位於固定位置的固定障礙物。但是,由於障礙物的位置資訊是建置在培訓模型中,因此模型可能會過度擬合,無法一般化地適用於其他障礙物置放方式。若固定物件是置放在隨機位置,或是賽道上有其他正在移動的車輛,模型便可能無法收斂。
在現實世界中,AWS DeepRacer 車輛隨附單鏡頭前置攝影機做為預設感測器。攝影機有 120 度的廣角鏡頭,可擷取 RGB 影像;這些影響接著會轉換成 160 x 120 像素,每秒 15 格 (fps) 的灰階影像。這些感應器屬性會保留在模擬器中,最大化將培訓模型理想地從模擬傳輸到現實世界的機會。
- 面向前方的立體攝影機
-
立體攝影機包含兩個以上的鏡頭,可擷取相同解析度和頻率的影像。來自兩個鏡頭的影像會用來判斷受觀察物件的深度。來自立體攝影機的深度資訊對託管車輛而言,在避免與前方的障礙物或其他車輛發生衝撞時非常有價值,尤其是在更動態的環境下。但是,所新增的深度資訊會讓培訓收斂的速度更慢。
在 AWS DeepRacer 實體車輛上,雙鏡頭立體攝影機是透過新增另一台單鏡頭攝影機,並將每部攝影機安裝在車輛的左側和右側。AWS DeepRacer 軟體可同步從兩部攝影機擷取的影像。擷取到的影像會轉換成灰階、進行堆疊,然後提供給神經網路以進行推論。為了培訓模型,使其能夠適當且一般化適用於現實世界環境,相同的機制會在模擬器中重複進行。
- LiDAR 感應器
-
LiDAR 感應器使用旋轉的雷射,傳出位於可見光譜之外的光脈衝,並為傳回每個脈衝所耗費的時間進行計時。特定脈衝擊中的物件方向與距離會以點的方式,記錄在以 LiDAR 單位為中心的大型 3D 映射中。
例如,LiDAR 有助於偵測託管車輛的盲點,避免在車輛變更車道時發生碰撞。透過將 LiDAR 與單鏡頭或立體攝影機合併,您可以讓託管車輛擷取足夠的資訊,讓其可以採取適當的動作。但是,相較於攝影機,LiDAR 感應器的成本更高。神經網路必須學習如何解譯 LiDAR 資料。因此,培訓將會耗費更長的時間才能收斂。
在 AWS DeepRacer 實體車輛上,LiDAR 感測器安裝在後方並向下傾斜 6 度。感應器會以每秒 10 次旋轉的角速度進行旋轉,且其範圍是 15 公分至 2 公尺。感應器可以偵測託管車輛後方及側面的物件,以及未受車輛前方部分阻擋的高物件。選擇角度和範圍以使 LiDAR 裝置不易受到環境噪聲的影響。
您可以使用下列支援的感應器組合來設定 AWS DeepRacer 車輛:
-
僅面向前方的單鏡頭攝影機。
此組態適合限時競賽,以及迴避位於固定位置的物件。
-
僅面向前方的立體攝影機。
此配置適用於在固定或隨機位置的物體避障。
-
面向前方的單鏡頭攝影機與 LiDAR。
此配置適用於避障或 head-to-bot賽車。
-
面向前方的立體攝影機與 LiDAR。
這種配置適用於避障或 head-to-bot 賽車,但對於計時試驗來說可能不是最經濟的。
當您新增更多感應器讓 AWS DeepRacer 車輛從時間試驗到反對迴避再到 head-to-bot 競賽時,車輛會收集更多有關環境的資料,以便在訓練中饋送至基礎神經網路。這會使得培訓的挑戰性更高,因為模型需要處理更高的複雜性。最後,您的培訓模型學習任務會變得更嚴苛。
要逐步學習,您應該先開始訓練時間試驗,然後再進行反對避免,然後再進行 head-to-bot 比賽。您將會在下一節中找到更詳細的建議。
設定用於培訓 AWS DeepRacer 模型的代理
若要訓練 AWS DeepRacer 車輛在避障或競賽中競 head-to-bot 賽的強化學習模型,您需要使用適當的感測器設定代理程式。針對簡易的限時競賽,您可以使用設置單鏡頭攝影機的預設代理程式。在設定代理程式時,您可以自訂動作空間和選擇神經網路拓撲,讓代理程式搭配所選取感應器的執行效能更佳,以符合預期的駕駛需求。此外,您可以變更代理程式的外觀,讓您可以在培訓期間以視覺識別代理程式。
在您進行設定後,代理程式組態會做為模型中繼資料的一部分記錄,以用於培訓和評估。針對評估,代理程式會自動擷取記錄的組態,以使用指定的感應器、動作空間和神經網路拓撲。
本節會逐步帶領您完成在 AWS DeepRacer Console 中設定 Agent 的各項步驟。
在 AWS DeepRacer 主控台中設定 AWS DeepRacer 代理程式
-
在主要導覽窗格上,選擇 Garage (車庫)。
-
第一次使用 Garage (車庫) 時,您會看到一個 WELCOME TO THE GARAGE (歡迎來到車庫) 對話方塊。選擇 > 或 < 瀏覽 AWS DeepRacer 車輛支援的各種感測器簡介,或選擇 X 以關閉對話方塊。您可以在 Garage (車庫) 中的說明面板上找到此簡介資訊。
-
在 Garage (車庫) 頁面上,選擇 Build new vehicle (建置新車輛)。
-
在 Mod your own vehicle (修改您自己的車輛) 頁面上,於 Mod specification (修改規格) 下方,選擇一或多個要嘗試的感應器,並學習符合您預期競賽類型的最佳組合。
若要訓練 AWS DeepRacer 車輛計時試用,請選擇「相機」。對於避障或 head-to-bot 比賽,您需要使用其他傳感器類型。要選擇立體聲相機,請確保您購買了額外的單鏡頭相機。AWS DeepRacer 使立體攝像機出兩個單鏡頭攝像機。您可以在一台車輛上設置單鏡頭攝影機或雙鏡頭立體攝影機。在任何一種情況下,如果您只想讓訓練過的模型能夠偵測並避免障礙物避開或 head-to-bot 競賽中的盲點,您都可以將 LiDAR 感測器新增至代理程式。
-
在 Garage (車庫) 頁面上,於 Neural network topologies (神經網路拓撲) 下方,選擇支援的神經網路拓撲。
一般而言,較深層的神經網路 (較多層) 更適合在更複雜且彎道更急、更多的賽道上進行駕駛、迴避固定障礙物,或是與其他正在移動的車輛進行競賽。但較深層的神經網路,其培訓的成本也會更高,且收斂的時間也會更長。另一方面,較淺層的網路 (較少層) 的成本較低,且培訓的時間也較短。培訓後的模型適合處理較簡易的賽道條件或駕駛需求,例如在無障礙物且無競爭對手的賽道上進行限時競賽。
具體來說,AWS DeepRacer 支援 3 層 CNN 或 5 層 CNN。
-
在 Garage (車庫) 頁面上,選擇 Next (下一步) 來繼續設定代理程式的動作空間。
-
在 Action space (動作空間) 頁面上,針對您的第一次培訓保留預設設定。針對後續培訓,請針對轉向角度、最高速度及其精細程度使用不同的設定進行實驗。然後選擇 Next (下一步)。
-
在「為您的車輛著色以在人群中脫穎而出」頁面上,在「為您的名稱」輸入名稱, DeepRacer然後從「車輛顏色」列表中選擇代理商的顏色。然後選擇 Submit (提交)。
-
在 Garage (車庫) 頁面上,檢查新代理程式的設定。如要進一步修改,請選擇 Mod vehicle (修改車輛) 並從 Step 4 (步驟 4) 開始重複先前的步驟。
現在您的代理程式已準備好進行培訓。
為時間試用量身打造 AWS DeepRacer 培訓
如果這是您第一次使用 AWS DeepRacer,您應該從簡單的計時試用開始,以熟悉如何訓練 AWS DeepRacer 模型以駕駛您的車輛。透過這種方式,您可以獲得較溫和的獎勵函數、代理程式、環境等簡介。您的目標是培訓模型,讓您的車輛維持在賽道上,並盡快完成一圈。然後,您可以將訓練過的模型部署到 AWS DeepRacer 車輛,以在實體軌道上測試駕駛,而無需任何額外的感測器。
若要訓練此案例的模型,您可以從 AWS DeepRacer 主控台的 Garage 選擇預設代理程式。預設代理程式已使用單一且面向前方的攝影機進行設定,此為預設的動作空間及預設的神經網路拓撲。在繼續使用更複雜的代理程式之前,先開始使用預設代理程式訓練 AWS DeepRacer 模型會很有幫助。
如要使用預設代理程式培訓您的模型,請遵循以下建議。
-
使用形狀較規則且較少急轉彎的簡易賽道開始培訓您的模型。使用預設獎勵函數。接著培訓模型 30 分鐘。培訓任務完成後,在相同的賽道上評估您的模型,觀察代理程式是否可以完成單圈。
-
閱讀獎勵函數參數。使用不同的獎勵繼續培訓,以獎勵代理程式駕駛地更快。將下一個模型的培訓時間延長到 1 至 2 小時。比較第一次培訓和此第二次培訓的獎勵圖表。繼續實驗,直到獎勵圖表停止改善為止。
-
閱讀動作空間。透過增加最高速度 (例如 1 m/s) 來訓練模型的第 3 次。如要修改動作空間,您必須在獲得進行修改的機會時,在 Garage (車庫) 中建置新的代理程式。更新代理程式的最高速度時,請注意,最高速度越高,代理程式可以越快完成評估軌道,而 AWS DeepRacer 車輛在實體軌道上完成一圈的速度也越快。但是,更高的最高速度通常也表示培訓時進行收斂的時間會更長,因為代理程式可能會超過曲線並脫離賽道。建議您減少精細程度,給予代理程式更多空間進行加速或減速,並以其他方式進一步調整獎勵函數,讓培訓收斂的速度更快。在培訓收斂後,評估模型第 3 次來查看單圈時間是否改善。繼續探索,直到沒有任何改善為止。
-
選擇更複雜的賽道,並重複 Step 1 (步驟 1) 至 Step 3 (步驟 3)。在與您用來培訓的賽道不同的賽道上評估您的模型,查看模型一般化適用於不同虛擬賽道的程度 一般化至現實世界環境。
-
(選用) 使用不同的超參數值進行實驗,以改善培訓程序,並重複 Step 1 (步驟 1) 至 Step 3 (步驟 3)。
-
(選擇性) 檢查和分析 AWS DeepRacer 日誌。如需可用來分析記錄的範例程式碼,請參閱 https://github.com/aws-samples/aws-deepracer-workshops /樹/主/記錄分析
。
為避免物件競賽量身打造 AWS DeepRacer 培訓
在您熟悉限時競賽並已培訓數個收斂模型後,前往下一個更嚴苛的挑戰:障礙物迴避。在這裡,您的目標是培訓模型,讓模型能夠在不脫離賽道的情況下盡快完成一圈,同時避免與置放在賽道上的物件發生衝撞。顯然對代理程式而言這是更困難的問題,且培訓收斂所需要耗費的時間也更長。
AWS 主 DeepRacer 控台支援兩種避障訓練:障礙物可以放置在軌道上的固定位置或隨機位置。若為固定位置,障礙物會在整個培訓任務期間固定在相同的位置。若是隨機位置,障礙物會在每個回合內隨機變更其個別的位置。
針對固定位置障礙物進行的障礙物迴避,培訓進行收斂較為容易,因為系統的自由度較低。但是,如果位置資訊是建置在培訓模型中,模型便可能會過度擬合。因此,模型可能會過度擬合,無法適當地一般化。針對位置隨機的障礙物迴避,培訓進行收斂的難度更高,因為代理程式必須持續學習,避免與位於先前沒見過位置的障礙物發生衝撞。但是,使用此選項培訓的模型,其一般化且傳輸到現實世界競賽的程度也會更高。首先,請先將障礙物置放在固定位置,熟悉行為,然後再處理隨機位置。
在 AWS DeepRacer 模擬器中,障礙物是與 AWS DeepRacer 車輛的包裝盒尺寸相同 (9.5 吋 (長) x 15.25 吋 (寬) x 10/5" (高)) 的長方體盒。如果您將包裝盒做為障礙物置放在實體賽道上,這可讓將已培訓模型從模擬器傳輸到現實世界的過程更為容易。
如要針對障礙物迴避進行實驗,請遵循下列步驟概述的建議實務:
-
使用預設代理程式,或是自訂現有代理程式或建置新的代理程式,來實驗新的感應器及動作空間。建議您將最高速度限制在每秒 0.8 公尺以下,並將速度的精細程度限制在 1 或 2 個層級。
將 2 個物件置放在固定位置,開始培訓模型約 3 個小時。使用範例獎勵函數,在您將在賽車上使用的賽道,或是與該賽道非常相似的賽道上培訓模型。AWS S DeepRacer mile 賽道 (中級) 賽道是一個簡單的賽道,因此成為準備高峰會比賽的好選擇。在相同賽道上,使用相同數量的障礙物評估模型。查看總預期獎勵收斂的方式 (若有的話)。
-
閱讀獎勵函數參數。實驗您的獎勵函數變異。將障礙物的數量增加到 4。培訓代理程式,查看模型是否在相同的培訓時間長度內收斂。如果沒有,請再次調整您的獎勵函數、降低最高速度或減少障礙物的數量,然後再次培訓代理程式。重複實驗,直到沒有任何顯著的改善為止。
-
現在,繼續前進,培訓迴避位於隨機位置的障礙物。您需要使用其他感應器來設定代理程式,這些感應器可從 AWS DeepRacer 主控台的 Garage 取得這些感應器。您可以使用立體攝影機。或者,您可以將 LiDAR 單位與單鏡頭攝影機或立體攝影機合併,但您應預期培訓的時間會更長。以相對較低的最高速度(例如 2 m/s)設置動作空間,以便訓練更快地收斂。針對網路架構,請使用淺層神經網路,我們發現這類網路已足以進行障礙物迴避。
-
使用在簡易賽道上隨機置放的 4 個物件,針對障礙物迴避培訓新的代理程式 4 個小時。然後在相同的賽道上評估您的模型,查看其是否可以完成包含隨機置放障礙物的單圈。如果無法完成,建議您調整您的獎勵函數,嘗試不同的案例,以及延長培訓的時間。另一個提示是您可以嘗試複製現有的模型繼續培訓,以利用先前的學習經驗。
-
(選用) 為動作空間選擇較高的最高速度,或是沿著賽道隨機置放更多障礙物。實驗不同的感應器組合,以及調整獎勵函數和超參數值。實驗 5-layer CNN (5 層 CNN) 網路拓撲。然後,保留模型以判斷其影響培訓收斂的方式。
為 head-to-bot 比賽量身打造 AWS DeepRacer 培訓
經過訓練避障之後,您現在已經準備好應對下一個層次的挑戰: head-to-bot 比賽訓練模型。與避障事件不同, head-to-bot 賽車具有移動車輛的動態環境。您的目標是為 AWS DeepRacer 車輛訓練模型以與其他移動中的車輛競爭,以便先到達終點線,而不會離開軌道或撞到任何其他車輛。在 AWS 主 DeepRacer 控台中,您可以讓您的代理程式與 1-4 個機器人車輛競爭來訓練 head-to-bot 賽車模型。一般而言,建議您在較長的賽道上置放較多的障礙物。
每台機器人車輛都會以常數的速度,遵循預先定義的路徑。您可以讓這些車輛變更車道,或是維持在其起始車道上。與障礙物迴避的培訓相似,您可以將機器人車輛平均分散在兩個車道的賽道上。控制台限制您在賽道上最多擁有 4 輛機器人車輛。在賽道上擁有更多互相競賽的車輛,可讓學習代理程式擁有更多機會,遭遇包含其他車輛且變化更多的情況。透過這種方式,代理程式可以在單一培訓任務中學習更多,使其培訓的速度更快。但是,每個培訓可能都需要較長的時間進行收斂。
如要使用機器人車輛培訓代理程式,建議您將代理程式動作空間的最高速度設為比機器人車輛的 (常數) 速度更高,讓代理程式可以在培訓期間擁有更多通過的機會。做為理想的起點,建議您將代理程式的最高速度設為每秒 0.8 公尺,並將機器人車輛的移動速度設為每秒 0.4 公尺。如果您允許機器人變更車道,培訓的挑戰性會更高,因為代理程式不僅必須學習如何避免與相同車道上位於前方的移動車輛發生衝撞,還需學習如何避免與其他車道上位於前方的車輛發生衝撞。您可以設定機器人,使其依照隨機的間隔變更車道。間隔的長度是從您在開始訓練工作之前指定的時間範圍 (例如 1 秒到 5 秒) 隨機選取。這種改變車道的行為與現實世界的 head-to-bot 賽車行為更相似,訓練有素的特工應該產生得更好。但是,培訓模型所需要的收斂時間也會更長。
請按照以下建議步驟迭代您的 head-to-bot 賽車訓練:
-
在 AWS DeepRacer 主控台的 Garage 中,建立配置了立體攝影機和 LiDAR 裝置的新培訓代理程式。您可以只使用立體攝影機,針對機器人車輛培訓相對較佳的模型。LiDAR 可在代理程式變更車道時協助減少盲點。請不要將最高速度設得過高。每秒 1 公尺是理想的起點。
-
要訓練 head-to-bot 賽車,請從兩輛機器人車輛開始。將機器人的移動速度設置為低於代理的最高速度(例如,如果代理的最高速度為 1 m/s,則為 0.5 m/s)。停用變更車道選項,然後選擇剛建立的培訓代理程式。使用其中一個獎勵函數範例,或是進行最小程度的必要修改,然後培訓 3 個小時。使用賽車使用的賽道,或是與該賽道相似的賽道。AWS S DeepRacer mile 賽道 (中級) 賽道是一個簡單的賽道,因此成為準備高峰會比賽的好選擇。培訓完成後,在相同的賽道上評估已培訓的模型。
-
對於更具挑戰性的任務,請克隆訓練過的模型以獲得第二個 head-to-bot賽車模型。繼續使用更多機器人車輛進行實驗,或是啟用車道變更選項。請從隨機間隔 2 秒以上的緩慢車道變更操作開始。您可能也會希望實驗自訂獎勵函數。一般而言,如果您並未將超越其他車輛與維持在賽道上之間的平衡納入考量,您的自訂獎勵函數邏輯可能會與障礙物迴避的邏輯相似。取決於您先前模型的良好程度,您可能需要另外培訓 3 至 6 個小時。評估您的模型,並查看模型執行的情況。