加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

如何訓(xùn)練自主移動機(jī)器人使用合成數(shù)據(jù)檢測倉庫托盤千斤頂

2023/11/09
2099
閱讀需 23 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

在訓(xùn)練那些部署在自主移動機(jī)器人(AMR)上的感知 AI 模型時,合成數(shù)據(jù)可以發(fā)揮關(guān)鍵作用。這一過程在制造業(yè)中變得越來越重要。有關(guān)使用合成數(shù)據(jù)生成預(yù)訓(xùn)練模型,用于檢測倉庫中托盤的示例,可參見使用《OpenUSD 和合成數(shù)據(jù)開發(fā)托盤檢測模型》一文:https://developer.nvidia.com/blog/developing-a-pallet-detection-model-using-openusd-and-synthetic-data/

本文將探討如何訓(xùn)練 AMR 使用合成數(shù)據(jù)來檢測倉庫中的托盤千斤頂。托盤千斤頂通常用于抬起和運輸重型托盤。在擁擠的倉庫中,AMR 進(jìn)行檢測并避免與托盤千斤頂相撞是很重要的。

為了實現(xiàn)這一目標(biāo),有必要在不同的光照條件和遮擋下使用大量不同的數(shù)據(jù)集來訓(xùn)練 AI 模型。真實的數(shù)據(jù)很少能捕捉到潛在環(huán)境的全部范圍,而合成數(shù)據(jù)生成(SDG)是由 3D 仿真生成的注釋數(shù)據(jù),使開發(fā)人員能夠克服數(shù)據(jù)差距并引導(dǎo)模型訓(xùn)練過程。

本次用例將通過處理數(shù)據(jù)來踐行以數(shù)據(jù)為中心的方法,而不是通過更改模型參數(shù)去適應(yīng)數(shù)據(jù)。這一過程首先使用 NVIDIA Isaac Sim 中的 NVIDIA Omniverse Replicator 生成合成數(shù)據(jù),隨后使用 NVIDIA TAO Toolkit 中的合成數(shù)據(jù)對模型進(jìn)行訓(xùn)練,最后,將模型在真實數(shù)據(jù)上的性能可視化,并修改參數(shù)以生成更好的合成數(shù)據(jù),達(dá)到期望的性能水平。

Omniverse Replicator 是 NVIDIA Omniverse 的核心擴(kuò)展,是一個使個人和團(tuán)隊能夠基于通用場景描述(OpenUSD)開發(fā)工作流的計算平臺。Replicator 使開發(fā)者能夠構(gòu)建定制的合成數(shù)據(jù)生成管線,以生成數(shù)據(jù)來引導(dǎo)計算機(jī)視覺模型的訓(xùn)練。

迭代合成數(shù)據(jù)以提高模型性能

以下解釋了本團(tuán)隊如何迭代合成數(shù)據(jù),來提高目標(biāo)檢測模型的實際性能,并通過兼容 Omniverse Replicator APIPython 腳本詳細(xì)介紹了這些步驟。

在每次迭代時,我們增量改變模型中的各種參數(shù),并生成新的訓(xùn)練數(shù)據(jù)集,然后用實際數(shù)據(jù)驗證模型的性能。我們持續(xù)這一過程,直到能夠縮小仿真與現(xiàn)實之間的差距。

對象或場景參數(shù)變化的過程被稱為域隨機(jī)化。您可以隨機(jī)化許多參數(shù)來快速生成新數(shù)據(jù)用于模型訓(xùn)練,這些參數(shù)包括位置、顏色、紋理、背景、物體和場景的光照。

OpenUSD 是一個可擴(kuò)展的框架,一種 3D 場景描述技術(shù),也是 NVIDIA Omniverse 的基礎(chǔ),讓試驗一個場景中的不同參數(shù)變得很容易。參數(shù)可以在單獨的層中修改和測試,用戶可以在這些層之上創(chuàng)建非破壞性編輯。

準(zhǔn)備

在起步階段,我們需要一個安裝有 NVIDIA RTX GPU 和最新版本的 NVIDIA Isaac Sim 的系統(tǒng)。Isaac Sim 是一個可擴(kuò)展的機(jī)器人仿真應(yīng)用程序,其利用 Omniverse Replicator 的核心功能生成合成數(shù)據(jù)。有關(guān)安裝和配置的詳細(xì)信息,請參見文檔:https://docs.omniverse.nvidia.com/isaacsim/latest/installation/requirements.html

當(dāng) Isaac Sim 啟動并運行時,我們可以從 GitHub 上的 NVIDIA-AI-IOT/synthetic_data_generation_training_workflow 下載所有資產(chǎn)。

第一次迭代:改變顏色和攝像頭位置

在第一次迭代中,我們改變了托盤千斤頂?shù)念伾妥藙?,以及攝像頭的姿勢??梢园凑找韵虏襟E在自己的會話中復(fù)制此場景。

首先加載舞臺(Stage):

ENV_URL = "/Isaac/Environments/Simple_Warehouse/warehouse.usd"open_stage(prefix_with_isaac_asset_server(ENV_URL))

然后添加托盤千斤頂和攝像頭到場景中。托盤千斤頂可以從 SimReady 資產(chǎn)庫中加載。

PALLETJACKS = ["http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/DigitalTwin/Assets/Warehouse/Equipment/Pallet_Trucks/Scale_A/PalletTruckScale_A01_PR_NVD_01.usd", ? ? ? ? ? ?"http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/DigitalTwin/Assets/Warehouse/Equipment/Pallet_Trucks/Heavy_Duty_A/HeavyDutyPalletTruck_A01_PR_NVD_01.usd", ? ? ? ? ? ?"http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/DigitalTwin/Assets/Warehouse/Equipment/Pallet_Trucks/Low_Profile_A/LowProfilePalletTruck_A01_PR_NVD_01.usd"] cam = rep.create.camera(clipping_range=(0.1, 1000000))

SimReady 或仿真就緒資產(chǎn)是包含精確物理屬性和行為的物理精確 3D 對象。它們預(yù)裝有模型訓(xùn)練所需的元數(shù)據(jù)和注釋。

接下來,為托盤千斤頂和攝像頭添加域隨機(jī)化:

with cam: ? ? ? ? ? ? ? ?rep.modify.pose(position=rep.distribution.uniform((-9.2, -11.8, ? ? 0.4), (7.2, 15.8, 4)),look_at=(0, 0, 0))  ? ? # Get the Palletjack body mesh and modify its color ? ? with rep.get.prims(path_pattern="SteerAxles"): ? ? ? ? ? ?rep.randomizer.color(colors=rep.distribution.uniform((0, 0, 0), (1, 1, 1)))  ? # Randomize the pose of all the added palletjacks ? with rep_palletjack_group: ? ? ?rep.modify.pose( ? position=rep.distribution.uniform((-6, -6, 0), (6, 12, 0)), ? rotation=rep.distribution.uniform((0, 0, 0), (0, 0, 360)), ? scale=rep.distribution.uniform((0.01, 0.01, 0.01), (0.01, 0.01, 0.01)))

圖 1. 顯示托盤千斤頂隨機(jī)顏色和位置與隨機(jī)攝像機(jī)的位置的合成圖像

最后,配置用于注釋數(shù)據(jù)的編寫器:

writer = rep.WriterRegistry.get("KittiWriter") writer.initialize(output_dir=output_directory, ? ? ? ? ? ? ? ? ? ?omit_semantic_type=True,)

本例使用 Replicator 提供的 KittiWriter,以 KITTI 格式存儲對象檢測標(biāo)簽的注釋,這將確保更容易與訓(xùn)練管線兼容。

結(jié)果

對于第一批合成數(shù)據(jù),團(tuán)隊使用了 LOCO 數(shù)據(jù)集,這是一個用于物流的場景理解數(shù)據(jù)集,涵蓋了檢測物流特定對象的問題,以可視化現(xiàn)實世界的模型性能。

生成的圖像顯示,該模型仍然試圖在擁擠的倉庫中檢測托盤千斤頂(圖 2),在托盤千斤頂附近的物體周圍創(chuàng)建了許多邊界框??紤]到這是第一次訓(xùn)練迭代,這個結(jié)果在一定程度上是意料之中的,減少域差距將是后續(xù)迭代的重點。

圖 2:在根據(jù)現(xiàn)實數(shù)據(jù)來驗證模型后,現(xiàn)實世界的圖像顯示了許多報錯

第二次迭代:添加紋理和改變環(huán)境照明

在這次迭代中,除了第一次迭代中的托盤顏色和攝像頭位置外,團(tuán)隊還隨機(jī)化了紋理和環(huán)境照明。

激活紋理和光照的隨機(jī)化:

# Randomize the lighting of the scene ? ?with rep.get.prims(path_pattern="RectLight"): ? ? rep.modify.attribute("color", rep.distribution.uniform((0, 0, 0), (1, 1, 1))) ? ? rep.modify.attribute("intensity", rep.distribution.normal(100000.0, 600000.0)) ? ? rep.modify.visibility(rep.distribution.choice([True, False, False, False, False, False, False])) # select floor materialrandom_mat_floor = rep.create.material_omnipbr(diffuse_texture=rep.distribution.choice(textures), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?roughness=rep.distribution.uniform(0, 1), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? metallic=rep.distribution.choice([0, 1]), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?emissive_texture=rep.distribution.choice(textures), ? ? ? ? ? emissive_intensity=rep.distribution.uniform(0, 1000),) ? ? ? ?  ? ? ? ?  ? ? with rep.get.prims(path_pattern="SM_Floor"): ? ? ? ? ?rep.randomizer.materials(random_mat_floor)

圖 3 顯示了生成的合成圖像??梢钥吹揭呀?jīng)添加到背景中的各種紋理和入射到物體上的不同類型的環(huán)境光。

圖 3:不同紋理背景的托盤千斤頂?shù)暮铣蓤D像

結(jié)果

本次迭代的報錯數(shù)量減少,增加了紋理和光照隨機(jī)化。生成合成數(shù)據(jù)時的一個關(guān)鍵因素是確保結(jié)果數(shù)據(jù)集中數(shù)據(jù)的多樣性。來自合成域的類似或重復(fù)數(shù)據(jù)可能無助于改善現(xiàn)實世界中的模型性能。

為了提高數(shù)據(jù)集的多樣性,可以在場景中添加更多的隨機(jī)化對象。這將在第三次迭代中解決,并且應(yīng)該有助于改善模型的穩(wěn)健性。

圖 4. 現(xiàn)實世界的圖像表明,經(jīng)過隨機(jī)紋理和光照圖像的訓(xùn)練,該模型檢測托盤千斤頂?shù)木雀?/p>

第三次迭代:添加干擾

本次迭代將額外的對象(稱為干擾物)引入到場景中,這些干擾物增加了數(shù)據(jù)集的多樣性。此次迭代還包括前兩次迭代中的所有更改。

在場景中添加干擾物:

DISTRACTORS_WAREHOUSE = ["/Isaac/Environments/Simple_Warehouse/Props/S_TrafficCone.usd", ? ? ? ? ? ? ? ? ? ? ? ? ? ?"/Isaac/Environments/Simple_Warehouse/Props/S_WetFloorSign.usd", ? ? ? ? ? ? ? ? ? ? ? ? ? ?"/Isaac/Environments/Simple_Warehouse/Props/SM_BarelPlastic_A_01.usd", ? ? ? ? ? ? ? ? ? ? ? ? ? ?"/Isaac/Environments/Simple_Warehouse/Props/SM_BarelPlastic_A_02.usd", ? ? ? ? ? ? ? ? ? ? ? ? ? ?"/Isaac/Environments/Simple_Warehouse/Props/SM_BarelPlastic_A_03.usd"] # Modify the pose of all the distractors in the scenewith rep_distractor_group: ? ? ? ?rep.modify.pose(position=rep.distribution.uniform((-6, -6, 0), (6, 12, 0)), ? ? ? ? ? ?rotation=rep.distribution.uniform((0, 0, 0), (0, 0, 360)), ? ? ? ? ? ?scale=rep.distribution.uniform(1, 1.5))

這個項目使用的所有資源都可以通過默認(rèn)的 Isaac Sim 安裝獲得,并通過指定它們在核心服務(wù)器上的路徑來加載它們。

圖 5. 被常見倉庫物體(干擾物)包圍的托盤千斤頂?shù)暮铣蓤D像

結(jié)果

圖 6 顯示了第三次迭代的結(jié)果。該模型能夠準(zhǔn)確地檢測到托盤千斤頂,并且邊界框較少。與第一次迭代相比,模型性能得到了顯著改善。

圖 6. 現(xiàn)實世界的圖像顯示,該模型能夠準(zhǔn)確檢測到托盤千斤頂

持續(xù)迭代

該團(tuán)隊在每次迭代中使用 5000 張圖像來訓(xùn)練模型。您可以通過生成更多的變量和增加合成數(shù)據(jù)來繼續(xù)迭代此工作流,以達(dá)到所需的精度。

我們使用 NVIDIA TAO Toolkit 來訓(xùn)練帶有 resnet18 主干的 DetectNet_v2 模型進(jìn)行這些實驗。使用這個模型并不是工作流的要求,您可以利用使用注釋生成的數(shù)據(jù)來訓(xùn)練您所選擇的體系架構(gòu)和框架的模型。

我們在實驗中使用了 KITTI 編寫器。也可以使用 Omniverse Replicator 編寫自己的自定義編寫器,以正確的注釋格式生成數(shù)據(jù),這將使您的訓(xùn)練工作流無縫兼容。

您還可以在訓(xùn)練過程中混合現(xiàn)實數(shù)據(jù)和合成數(shù)據(jù)來進(jìn)行實驗。在獲得滿意的評價指標(biāo)后,最終模型可以在 NVIDIA Jetson 上進(jìn)行優(yōu)化和部署。

使用 Omniverse Replicator?開發(fā)合成數(shù)據(jù)管線

通過使用 Omniverse Replicator,您可以構(gòu)建自己的自定義合成數(shù)據(jù)生成管線或工具,以編程方式生成大量不同的合成數(shù)據(jù)集,以引導(dǎo)模型并快速迭代。引入各種類型的隨機(jī)化為數(shù)據(jù)集增加了必要的多樣性,使模型能夠在各種條件下識別對象或是感興趣的對象。

使用本文中的工作流,請訪問 GitHub 上的 NVIDIA-AI-IOT/synthetic_data_generation_training_workflow。要查看完整的工作流,NVIDIA 的團(tuán)隊成員展示了如何使用 Omniverse Replicator 和合成數(shù)據(jù)來訓(xùn)練制造流程的對象檢測模型(視頻 2)。

視頻 2:學(xué)習(xí)如何用合成數(shù)據(jù)訓(xùn)練計算機(jī)視覺模型

要構(gòu)建自己的自定義合成數(shù)據(jù)生成管線,請免費下載 Omniverse,并按照說明開始使用 Omniverse 代碼中的 Replicator。您也可以參加自定進(jìn)度的在線課程“合成數(shù)據(jù)生成訓(xùn)練計算機(jī)視覺模型”,并觀看最新的 Omniverse Replicator 教程。

免費下載 Omniverse:

https://www.nvidia.com/en-us/omniverse/download/

開始使用 Omniverse 代碼中的 Replicator:

https://docs.omniverse.nvidia.com/extensions/latest/ext_replicator/getting_started.html

通過合成數(shù)據(jù)生成訓(xùn)練計算機(jī)視覺模型:

https://courses.nvidia.com/courses/course-v1:DLI+S-OV-10+V1/

最新的 Omniverse Replicator 教程:

https://www.nvidia.com/en-us/on-demand/playlist/playList-35d98b97-8abf-4f92-883a-c898801f28b4/

NVIDIA 最近發(fā)布了 Omniverse Replicator 1.10,為開發(fā)者構(gòu)建低代碼 SDG 工作流提供了新的支持。相關(guān)詳細(xì)信息,請參見“在 NVIDIA Omniverse Replicator 1.10 中使用低代碼工作流促進(jìn)合成數(shù)據(jù)生成”:https://developer.nvidia.com/blog/boost-synthetic-data-generation-with-low-code-workflows-in-nvidia-omniverse-replicator-1-10/

NVIDIA Isaac ROS 2.0 和 NVIDIA Isaac Sim 2023.1 現(xiàn)已可用,其對性能感知和高保真仿真進(jìn)行了重要更新。如需了解更多信息,請參閱《NVIDIA Isaac 平臺先進(jìn)的仿真和感知工具助力 AI 機(jī)器人技術(shù)加速發(fā)展》。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
NC7SP125P5X 1 onsemi TinyLogic ULP Buffer with 3-STATE Output, 3000-REEL

ECAD模型

下載ECAD模型
$0.27 查看
SN74LV541APWR 1 Texas Instruments Eight-channel, 2-V to 5.5-V buffers with tri-state outputs 20-TSSOP -40 to 125

ECAD模型

下載ECAD模型
$0.78 查看
74HC4094D,653 1 Nexperia 74HC4094; 74HCT4094 - 8-stage shift-and-store bus register@en-us SOP 16-Pin

ECAD模型

下載ECAD模型
$0.52 查看
英偉達(dá)

英偉達(dá)

NVIDIA(中國大陸譯名:英偉達(dá),港臺譯名:輝達(dá)),成立于1993年,是一家美國跨國科技公司,總部位于加利福尼亞州圣克拉拉市,由黃仁勛、克里斯·馬拉科夫斯基(Chris Malachowsky)和柯蒂斯·普里姆(Curtis Priem)共同創(chuàng)立。公司早期專注于圖形芯片設(shè)計業(yè)務(wù),隨著公司技術(shù)與業(yè)務(wù)發(fā)展,已成長為一家提供全棧計算的人工智能公司,致力于開發(fā)CPU、DPU、GPU和AI軟件,為建筑工程、金融服務(wù)、科學(xué)研究、制造業(yè)、汽車等領(lǐng)域的計算解決方案提供支持。

NVIDIA(中國大陸譯名:英偉達(dá),港臺譯名:輝達(dá)),成立于1993年,是一家美國跨國科技公司,總部位于加利福尼亞州圣克拉拉市,由黃仁勛、克里斯·馬拉科夫斯基(Chris Malachowsky)和柯蒂斯·普里姆(Curtis Priem)共同創(chuàng)立。公司早期專注于圖形芯片設(shè)計業(yè)務(wù),隨著公司技術(shù)與業(yè)務(wù)發(fā)展,已成長為一家提供全棧計算的人工智能公司,致力于開發(fā)CPU、DPU、GPU和AI軟件,為建筑工程、金融服務(wù)、科學(xué)研究、制造業(yè)、汽車等領(lǐng)域的計算解決方案提供支持。收起

查看更多

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

自1993年成立以來,NVIDIA一直在視覺計算的藝術(shù)與科學(xué)發(fā)展中勇當(dāng)先鋒. NVIDIA公司的諸多技術(shù)正在徹底改變顯示世界的面貌,在高級渲染、高性能計算,乃至遠(yuǎn)端云服務(wù),你都將看到NVIDIA的身影.