編輯推薦
在 9 月舉行的 GTC 大會上,NVIDIA 產品經理 Gautham Sholingar 以《合成數據生成:加速自動駕駛汽車的開發和驗證》為題,完整地介紹了 NVIDIA 過去一年在長尾場景訓練的最新進展和相關經驗,特別是探討開發者如何使用 DRIVE Replicator 生成多樣化的合成數據集,以及準確的真值數據標簽,從而加速自動駕駛汽車的開發和驗證。該講座內容干貨滿滿,引發了行業的廣泛關注和討論。本文對此次分享的精華內容進行匯總和整理,以幫助大家更好地了解 DRIVE Replicator,以及自動駕駛感知算法的合成數據生成。
圖 1
在過去的一年中,NVIDIA 在使用 DRIVE Replicator 生成用于訓練自動駕駛感知算法的合成數據集方面取得了積極的進展。圖 1 展示了目前 NVIDIA 正在攻克的一些長尾場景挑戰:
-
第一行左側圖,倒車攝像頭附近的弱勢道路使用者(VRU)。對于任意自動駕駛感知算法而言,VRU 都是一個重要的對象類別。在本例中,我們專注于檢測倒車魚眼攝像頭附近的兒童。由于現實世界中的數據采集和數據標記相當具有挑戰性,因此這是一個重要的安全用例。
-
第一行中間圖,事故車輛檢測。自動駕駛感知算法需要接觸到罕見和不常見的場景,才有助于使對象檢測算法變得可靠。現實世界數據集里的事故車輛少之又少。DRIVE Replicator 可幫助開發人員創建各種環境條件下的意外事件(例如翻車),從而幫助訓練此類網絡。
-
第一行右側圖,交通標志檢測。在其他一些情況下,手動標注數據既耗時,又容易出錯。DRIVE Replicator 可幫助開發人員生成各種環境條件下數百個交通標志和交通信號燈的數據集,并快速訓練網絡以解決現實世界的多樣性問題。
-
最后,在城市環境中,有許多對象并不常見,例如特定的交通道具和某些類型的車輛。DRIVE Replicator 可幫助開發人員提高數據集里這些罕見對象的出現頻率,并借助目標合成數據來幫助增強現實世界的數據采集。
以上的這些功能,正在通過 NVIDIA DRIVE Replicator 實現。
了解 DRIVE Replicator 及其關聯生態
DRIVE Replicator 是 DRIVE Sim 工具套件的一部分,可用于自動駕駛仿真。
DRIVE Sim 是 NVIDIA 基于 Omniverse 構建的、非常領先的自動駕駛汽車模擬器,可大規模地進行物理精準的傳感器仿真。開發人員可以在工作站上運行可重復的仿真,然后在數據中心或云端擴展為批量模式。DRIVE Sim 是基于 USD 等強大的開放標準構建的模塊化平臺,支持用戶通過 Omniverse 擴展程序引入自己的功能。
DRIVE Sim 上包括 DRIVE Replicator 等多個應用。DRIVE Replicator 主要提供一系列專注于合成數據生成的功能,用于自動駕駛汽車的訓練和算法驗證。DRIVE Sim 和 DRIVE Constellation 還支持各個級別的自動駕駛全棧仿真,包括軟件在環、硬件在環和其他在環仿真測試(模型、植物、人類,以及更多)。
DRIVE Sim 和傳統自動駕駛仿真工具的不同之處是在創建合成數據集時,傳統的自動駕駛仿真工具往往結合專業的游戲引擎來進行,來還原足夠真實的場景。但是,對于自動駕駛仿真而言,這是遠遠不夠的,還需要處理包括物理準確性、可重復性和規模性等核心訴求。
圖 2
在進一步介紹 DRIVE Replicator 之前,先為大家介紹幾個關聯概念(如圖 2),特別是 Omniverse,以幫助大家更好地理解與 DRIVE Replicator 相關的底層技術支撐。
-
了解 NVIDIA 用于大規模仿真的引擎 Omniverse。Omniverse 基于由 Pixar 公司開發的 USD(Universal Scene Description,一種用于描述虛擬世界的可擴展通用語言)而構建。USD 是整個仿真和仿真各個方面(包括傳感器、3D 環境)的單一真值數據源,這些完全通過 USD 構建的場景允許開發人員對仿真中的每個元素進行分層式的訪問,為后續生成多樣化的合成數據集奠定基礎。
-
Omniverse 提供實時性的光線追蹤效果,可為 DRIVE Sim 中的傳感器提供支持。RTX 是 NVIDIA 在計算圖形領域重要的先進技術之一,利用優化的光線追蹤 API ,該 API 專注于物理準確性,可確保對攝像頭、激光雷達、毫米波雷達和超聲傳感器的復雜行為(例如多次反射、多路徑效應、滾動快門和鏡頭失真)進行原生建模。
-
NVIDIA Omniverse 是一個易于擴展的開放式平臺,專為虛擬協作和物理級準確的實時模擬打造,能夠在云端或數據中心運行工作流,可實現多 GPU 和節點并行渲染和數據生成。
-
Omniverse 和 DRIVE Sim 采用開放式、模塊化設計,圍繞此平臺已經形成了一個龐大的合作伙伴生態系統。這些合作伙伴可提供 3D 素材、傳感器、車輛和交通模型、驗證工具等
-
Omniverse 協作的核心是 Nucleus,Nucleus 具有數據存儲和訪問控制功能,它能夠充當多個用戶的集中式內容倉庫,支持 DRIVE Sim 將 Runtime 與內容解耦,改善版本控制,并為所有素材、場景和元數據創建單個參考點。
DRIVE Sim 是一個平臺,NVIDIA 采取生態合作方式來搭建該平臺,讓合作伙伴都能為這個通用平臺貢獻自己的力量。目前 DRIVE Sim 已經建立一個龐大的合作伙伴生態系統,涉及 3D 資產、環境傳感器模型、驗證等多個領域。借助 DRIVE Sim SDK,合作伙伴可以輕松引入自己的傳感器、交通和車輛動態模型,并擴展其核心仿真功能。開發者不僅能在 Omniverse 中編寫擴展程序,輕松添加新功能,還能享受到在通用平臺上進行開發的好處——Omniverse 已連接多個關鍵合作伙伴,他們提供了與自動駕駛開發相關的重要工作流。
如何用 DRIVE Replicator 生成合成數據集和真值數據
接下來,將為大家解釋以上的這些內容如何組合起來,以及 DRIVE Replicator 生成合成數據的五個主要工作步驟(如圖 3):Content(內容 )— DRIVE Sim Runtime — Sensing(感知)— Randomization(域隨機化)— Data Writers(數據寫入器)。
圖 3
仿真流程的第一步是存儲在 Nucleus 服務器上的 3D 內容和素材。這些素材會被傳送至 DRIVE Sim Runtime,后者是執行場景、交通模型、車輛動態和行為的核心技術。DRIVE Sim Runtime 可與基于 RTX 光線追蹤技術的攝像頭、激光雷達、毫米波雷達和 USS 的感知技術結合使用。下一步是通過運動、行為、照明和外觀的隨機化,為數據引入多樣性。對于閉環仿真,下一步通常由傳感器協議、CAN 消息和虛擬 ECU(向自動駕駛棧發送重要信息以閉環)組成的車輛 I/O 將仿真連接到自動駕駛棧。
對于合成數據生成,這則是一個開放的循環流程,這個流程會將隨機化的傳感器數據發送給數據寫入器,而這些數據寫入器可輸出用于訓練自動駕駛感知算法的真值標簽。以上的這些步驟代表了合成數據生成的完整工作流。
1
Content(內容)
上文提到,仿真流程的第一步是存儲在 Nucleus 服務器上的 3D 內容和素材。這些內容來源于哪里?如何獲取?有什么標準或者要求?
過去幾年,NVIDIA 與多個內容合作伙伴合作,建立了一個龐大的 3D 資產提供商生態系統,這些素材包括車輛、道具、行人、植被和 3D 環境,隨時可在 DRIVE Sim 中使用。
有一點需要注意的是,即便您從市場上獲得了這些資產,也不意味著就可以開始仿真工作,您還需要讓這些資產為仿真做好準備,而這就是 SimReady 的用武之地。
擴展內容的一個重要部分是與 3D 資產提供商合作,并為他們提供所需的工具,以確保在將資產引入 DRIVE Sim 時遵循某些約定、命名、資產綁定(asset rigging)、語義標簽(semantic labels)和物理特性。
SimReady Studio 幫助內容提供商將其現有的資產轉換可以加載到 DRIVE Sim 上、仿真就緒的 USD 資產,包括 3D 環境、動態資產和靜態道具。
那么,什么是 SimReady?您可以理解為它是一個轉換器,有助于確保 DRIVE Sim 和 Replicator 中的 3D 資產準備好支持端到端的模擬工作流程。SimReady 有幾個關鍵要素,包括:
-
每項資產必須遵循一套關于方向、命名、幾何形狀等約定的規范,以確保一致性;
-
語義標簽和定義明確的本體(ontology),用于注釋資產的每個元素。這對于生成用于感知的真值標簽至關重要;
-
支持剛體物理和動力學,使生成的數據集看起來逼真,并從運動學角度縮小仿真與現實之間的差距;
-
下一步是確保資產遵循特定的材料和命名約定,以確保資產為 RTX 光線追蹤做好準備,并對激光雷達、毫米波雷達和超聲波傳感器等有源傳感器產生真實的響應;
-
另一個常見方面是裝配 3D 資產,從而實現照明變化、門驅動、行人步行操作等功能;
-
最后一部分是實時高保真傳感器仿真的性能優化。
基于以上的理解,一起來看看如何使用 SimReady studio 獲取可用于 DRIVE Sim 的資產的過程。
假設這個過程是從 3D 市場購入資產開始。第一步是將此資產導入到 SimReady Studio。這也可以批量完成,或者批量導入多個資產來完成這個步驟。
導入后,這些內容資產的材質名稱會更新,它們的材質屬性也會更新,拓展至包含反射率、粗糙度等方面的屬性。
這對于確保渲染數據質量的物理真實性,以及確保材質系統與所有 RTX 傳感器類型(而不僅僅是在可見光譜中運行的傳感器類型)的交互非常重要。
下一步涉及更新語義標簽和標記。為什么這一步很重要?擁有正確的標簽意味著使用資產生成的數據可用于訓練 AV 算法。此外,DRIVE Sim 和 Omniverse 使用 Nucleus 作為中央資產存儲庫。Nucleus 上有數以千計的內容資產,擁有可搜索的標簽以及相關的縮略圖將幫助新用戶更容易找到某個資產。
接下來,開始定義對象的碰撞體積和幾何形狀,并從物理角度觀察該內容資產的行為方式。然后修改對象的物理和質量屬性,從而來創建預期的行為。
整個過程的最后一步是驗證資產,以確保這些內容資產符合正確的約定。仿真就緒的 USD 資產現在可以保存并重新導入至 NVIDIA Omniverse 和 DRIVE Sim。通過 USD 構建場景的最大優點是,在前面的步驟中創建的所有元數據都與最終資產一起傳輸,并分層鏈接到主要對象的 USD,為后續生成多樣化的合成數據集奠定基礎。
圖 4
回到自動駕駛汽車仿真內容創建,從地圖數據創建環境通常有幾種方法(見圖 4)。一種是選擇使用 MathWorks 的 Roadrunner 工具在一個開放的 NVIDIA DRIVE map(多模式地圖平臺)上創建 3D 環境。然后將該步驟的輸出結果,以及語義地圖信息、信號時序等傳輸到 SimReady Studio ,該 3D 環境即可轉換為可以加載到 DRIVE Sim 上的 USD 資產。
另一種選擇,使用來自自動駕駛車隊的體素地圖數據并提取語義地圖信息,例如車道、路標和其他元數據。這些信息通過數字孿生創建,生成可以加載到 DRIVE Sim 上的 USD 資產。
以上兩類的 USD 環境,將被用于支持自動駕駛汽車端到端(E2E)仿真測試以及合成數據生成工作流。
2
DRIVE Sim Runtime
接下來為大家介紹仿真的第二步——DRIVE Sim Runtime,它奠定了我們在 DRIVE Replicator 中用于生成合成數據集的所有功能的基礎。
DRIVE Sim Runtime 是開放式、模塊化的可擴展組件。這在實踐中意味著什么(見圖 5)?
-
第一,它基于場景構建,在這些場景中開發者可定義場景中的對象的特定位置、運動和交互。這些場景可在 Python 中或使用場景編輯器 UI 進行定義,并可以保存以供日后使用。
-
第二,它支持通過 DRIVE Sim SDK 與自定義車輛動態包集成,既可以作為流程中的步驟,也可以作為與 DRIVE Sim 2.0 的共同仿真。
-
第三,交通模型。DRIVE Sim 擁有豐富的車輛模型界面,借助 Runtime,開發者可以引入自己的車輛動態或配置現有的基于規則的交通模型。
-
第四,動作系統,其中包含預定義的豐富動作庫(例如車道變更)、可用于創建不同對象相互交互場景的時間觸發器等。
圖 5
到這里簡單回顧一下前面的內容:仿真流程第一步,經過 SimReady 轉化的、仿真就緒的 3D 內容和素材,被存儲在 Nucleus 服務器上。第二步,這些素材會被傳送至 DRIVE Sim Runtime,后者是執行場景、交通模型、車輛動態和行為的核心技術,為后面生成合成數據集的所有功能奠定基礎。
3
Sensing(感知)
在生成數據之前,需使用傳感器來設置目標測試車輛。使用 Ego Configurator 工具,開發者可選擇特定車輛并將其添加到場景中。
此外,開發者還可以在場景中移動車輛,并為車輛添加傳感器。Ego 配置器工具支持通用和 Hyperion 8 傳感器。
將傳感器添加到車輛后,開發者還可以更改 FOV、分辨率、傳感器名稱等參數,并在車輛上直觀地配置傳感器位置。
用戶還可以從傳感器 POV 中查看預覽,并在 3D 環境中實現視野可視化,然后再創建數據生成場景。
這個工具可以幫助開發者快速進行不同配置的原型設計,并將感知任務所能達到的覆蓋范圍可視化。
4
Randomization(域隨機化)
現在簡要介紹一下仿真流程的第四步,域隨機化,如何通過運動、行為、照明和外觀的隨機化,為數據引入多樣性。
這會涉及到創建場景的另一種方法,使用 Python。DRIVE Replicator 的 Python API 允許開發者查詢開放的 NVIDIA DRIVE Map,并以可感知情景的方式放置一系列靜態和動態資產。一些隨機發生器將重點關注如何將自主車輛從某一點傳送到下一點,如何在自主車輛周圍產生對象,并由此生成不同的合成數據集。這些聽起來很復雜的操作都能輕松實現,因為用戶可以直接控制 USD 場景和該環境中的所有對象。
在創建用于訓練的合成數據集時,另一個重要步驟是引入 3D 場景外觀變化的能力。上文也提到過 USD 的強大功能,比如通過 USD 構建的場景允許開發人員對仿真中的每個元素進行分層式的訪問。SimReady 的API 借助 USD 可以快速設置場景中的特征。
下面看一個示例(見圖 6):路面有些濕,但在我們設置不同的參數時,路面潮濕程度會發生變化。我們可以對太陽方位角和太陽高度角等方面進行類似的更改,以在一系列環境條件下生成逼真的數據集。
另一個要點是開啟照明和外觀變化的能力,所有的這些變化都可以通過 SimReady API 和 USD 實現。
圖 6
DRIVE Sim 的一個主要優勢是 RTX 傳感器工作流,它支持各種傳感器(見圖 7),包括用于攝像頭、激光雷達、普通雷達和 USS 的通用和現成模型。此外,DRIVE Sim 還全面支持 NVIDIA DRIVE Hyperion 傳感器套件,允許用戶在虛擬環境中開始算法開發和驗證工作。
此外,DRIVE Sim 擁有功能強大、用途多樣的 SDK,支持合作伙伴使用 NVIDIA 的光線追蹤 API 來實現復雜的傳感器模型,同時保護其 IP 和專有算法。多年來,這個生態系統不斷發展壯大,而且 NVIDIA 正與合作伙伴合作,將成像雷達、FMCW 激光雷達等新形態的傳感器引入到 DRIVE Sim 中。
圖 7
5
Data Writers(數據寫入器)
現在,把重點轉移到生成真值數據,以及如何實現這些信息的可視化。這涉及到仿真流程的最后一個步驟,數據寫入器。在這個流程中,會將隨機化的傳感器數據發送給數據寫入器,而這些數據寫入器可輸出用于訓練自動駕駛感知算法的真值標簽。
數據寫入器是一個 Python 腳本,用于生成訓練自動駕駛感知算法所需的真值標簽。
NVIDIA DRIVE Replicator 配有模板寫入器,例如基礎寫入器和 KITTI 寫入器。
其中,基礎寫入器涵蓋了廣泛的真實數據標簽,包括對象類、2D 和 3D 中的緊密和松散邊界框、語義和實例掩碼、深度輸出、遮擋、法線等。
類似地,也有激光雷達/普通雷達寫入器,可用于將激光點云數據導出為 numpy 數組,或將隨邊界框、語義和對象標簽一起導出為任何相關的自定義格式。
這些寫入器可為開發者提供示例,可根據自定義標記格式配置自己的寫入器,并擴展數據生成工作。
最后,為大家介紹一款令人興奮的軟件,Omniverse 團隊傾力打造的 Replicator Insight。
Replicator Insight 是一款基于 Omniverse Kit 構建的獨立應用程序,可用于檢查渲染的合成數據集,并疊加用于訓練的各種真值標簽。
Replicator Insight 可支持所有合成數據的生成用例,包括 DRIVE、Isaac 和 Omniverse Replicator。
下面來看一個示例(見圖 8):用戶可以在這個可視化工具中加載 DRIVE Replicator 生成的數據,并為場景中的不同對象類別開啟和關閉不同的真值標簽。
圖 8
借助這個可視化工具,用戶可以播放視頻、梳理數據集,甚至可以在深度和 RGB 數據等不同視圖之間進行比較。
用戶還可以更改播放幀率和深度范圍等參數,或者在自動駕駛汽車訓練前快速將數據集可視化。
這將幫助開發者輕松理解新的真值標簽類型和解析復雜的數據集。
總的來說,這是一款功能強大的工具,讓用戶在每次查看數據時都能獲得新的見解,不管這些數據是真實的還是合成的。
小結
以上,總結了 DRIVE Replicator 過去一年的最新發展,并分享了開發者可以如何借助 DRIVE Replicator 生成多樣化的合成數據集,以及準確的真值數據標簽,從而加速自動駕駛汽車的開發和驗證。NVIDIA 在為各種現實世界用例生成高質量的傳感器數據集方面取得了令人欣喜的進展,期待后續與大家進一步交流!
原文標題:一文看懂 DRIVE Replicator:合成數據生成加速自動駕駛汽車的開發和驗證
文章出處:【微信公眾號:NVIDIA英偉達】歡迎添加關注!文章轉載請注明出處。
-
英偉達
+關注
關注
22文章
3747瀏覽量
90834
原文標題:一文看懂 DRIVE Replicator:合成數據生成加速自動駕駛汽車的開發和驗證
文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論