<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>合成數據的不合理有效性

合成數據的不合理有效性

2023-07-13 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

介紹

構建對象檢測模型可能很棘手,因為它需要大型數據集。有時,數據可能很少或不夠多樣化,無法訓練出穩健的模型。合成數據提供了一種替代方法,可以生成具有良好代表性的數據集來構建質量模型。通過應用域隨機化,我們開發了逼真的數據集,訓練了神經網絡,并使用真實數據集驗證了模型。為了創建多樣化的數據集,我們創建了各種具有隨機屬性的模擬環境:不斷變化的光照條件、相機位置和材料紋理。我們還表明,合成的隨機數據集可以幫助推廣模型以適應現實環境。

描述

我們想復制Louis Moreau 的物體檢測工作,但這次使用合成數據而不是真實數據。該項目旨在演示如何使用 Nvidia Omniverse Replicator 生成的合成數據集構建和部署 Edge Impulse 對象檢測模型。Replicator 是 Nvidia Omniverse 的擴展,它提供了生成物理上準確的合成數據的方法。

為什么要合成數據?

分類、對象檢測和分割等計算機視覺任務需要大規模數據集。從一些現實世界的應用程序中收集的數據往往范圍狹窄且多樣性較低,通常是從單一環境中收集的,有時是不變的并且在大多數時間保持不變。此外,從單一領域收集的數據往往具有較少的尾端場景和罕見事件的示例,我們無法輕易地將這些情況復制到現實世界中。

因此,在單個域中訓練的模型很脆弱,并且在部署到另一個環境時經常會失??;因此,它需要另一個訓練周期來適應新環境。這就提出了一個問題,我們如何才能有效且廉價地跨多個領域收集廣義數據?一個簡單但不合理的有效解決方案是Domain Randomization,改變前景物體的紋理和顏色,背景圖像,場景中的燈光數量,燈光的姿態,相機位置等。Domain randomization可以進一步提高模擬器中生成的罕見事件的合成數據結構的可變性。

“域隨機化的目的是在訓練時提供足夠的模擬可變性,以便在測試時模型能夠推廣到真實世界的數據?!?- Tobin 等人,用于將深度神經網絡從模擬轉移到現實世界的域隨機化,2017 年

Nvidia Replicator 使我們能夠執行域隨機化。Replicator 是 Omniverse 系列中的一個模塊,它提供工具和工作流程來為各種計算機視覺和非視覺任務生成數據。Replicator 是一種高度互操作的工具,可與 40 多個不同垂直領域的建模/渲染應用程序集成。由于 Pixar 的通用場景描述 (USD),無縫集成成為可能,它作為 Blender、3DMax、Maya、Revit、C4D 等各種應用程序的協議,與 Nvidia Replicator 一起工作。

以數據為中心的工作流程

傳統的機器學習工作流程往往以模型為中心,通過迭代改進算法設計等更多地關注模型的開發。在這個項目中,我們選擇了以數據為中心的方法,我們固定模型并迭代提高生成的質量數據集。這種方法更加穩健,因為我們知道我們的模型與數據集一樣好。因此,該方法系統地改變了 AI 任務的數據集性能。它的核心是從數據而非模型的角度考慮機器學習。

pYYBAGSBRtqAIZAeAADSr5ryjd0078.jpg
數據生成和模型構建工作流程
?

硬件和驅動程序設置

Nvidia Omniverse Replicator 是一個計算密集型應用程序,需要中等大小的 GPU 和不錯的 RAM。我的硬件設置包括 32GB RAM、1TB 存儲空間和 8GB GPU 以及 Intel i9 處理器。

?
?
?
poYBAGSBRt2AJgFyAADlsxd8u6k065.png
?
1 / 2 ?硬件規格
?

該應用程序可以在 Windows 和 Linux 操作系統上運行。對于這個實驗,我們使用了 Ubuntu 20.04 LTS 發行版,因為從 2022 年 11 月起 Nvidia Omniverse 不再支持 Ubuntu 18.04。此外,我們選擇了合適的 Nvidia 驅動程序 v510.108.03 并將其安裝在 Linux 機器上。

?
?
?
pYYBAGSBRuCALIbPAACOeTUA-5Q054.png
?
1 / 2 ?軟件規格
?

實驗設置和數據生成

實驗環境由可移動和不可移動的物體(動態和靜態定位物體)組成。不可移動的物體由燈、一張桌子和兩個相機組成。同時,可移動的物體是餐具,即勺子、叉子和刀子。我們將使用域隨機化來改變一些可移動和不可移動物體的屬性。包括對象和場景的資產在 Replicator 中表示為 USD。

pYYBAGSBRuOAYIjWAABRmR1ZFfA273.png
實驗裝置
?

Omniverse Replicator 中的每個對象都以美元表示。可以使用 Nvidia Omniverse 的 CAD Importer 擴展將具有不同擴展名(例如 obj、fbx 和 glif)的 3D 模型文件導入 Replicator。該擴展程序將 3D 文件轉換為美元。我們通過指定資產路徑將我們的資產(桌子、刀、勺子和叉子)導入到模擬器中。

?
?
?
poYBAGSBRuWATaivAAA4t24Yb9M048.png
?
1 / 2 ?閃電設置
?

閃電在數據生成中起著至關重要的作用。Nvidia 復制器中有不同的內置照明類型。我們選擇兩個矩形燈和一個圓頂燈,因為它們為我們提供了更好的照明選項和生成逼真圖像的能力。矩形燈模擬面板產生的光,圓頂燈讓您動態照亮整個場景。我們隨機化了一些光參數,例如溫度和強度,并且這兩個參數都是從正態分布中采樣。此外,比例參數是從均勻分布中采樣的,同時保持燈光的旋轉和位置固定。

# Lightning setup for Rectangular light and Dome light 

def rect_lights(num=2):
    lights = rep.create.light(
    light_type="rect",
    temperature=rep.distribution.normal(6500, 500),
    intensity=rep.distribution.normal(0, 5000),
    position=(-131,150,-134),
    rotation=(-90,0,0),
    scale=rep.distribution.uniform(50, 100),
    count=num
    )
    return lights.node

def dome_lights(num=1):
    lights = rep.create.light(
    light_type="dome",
    temperature=rep.distribution.normal(6500, 500),
    intensity=rep.distribution.normal(0, 1000),
    position=(0,0,0),
    rotation=(270,0,0),
    count=num
    )
return lights.node

我們固定位置和旋轉,選擇桌面材料,選擇額外的桃花心木材料,并在數據生成過程中交替使用材料。

# Import and position the table object

def table():
    table = rep.create.from_usd(TABLE_USD, semantics=[('class', 'table')])

    with table:
        rep.modify.pose(
            position=(-135.39745, 0, -140.25696),
            rotation=(0,-90,-90),
        )
    return table

為了進一步提高我們數據集的質量,我們選擇了兩個不同分辨率的攝像機,我們將它們戰略性地放置在場景中的不同位置。此外,我們在不同版本的數據生成過程中改變了攝像機的位置。

# Multiple setup cameras and attach it to render products
camera1 = rep.create.camera(focus_distance,focal_length,position,rotation...)
camera2 = rep.create.camera(focus_distance,focal_length2,position,rotation...)

# Will render 1024x1024 images and 512x512 images
render_product  = rep.create.render_product(camera1, (1024, 1024))
render_product2  = rep.create.render_product(camera2, (512, 512))

最后,對于可移動的物體,包括刀、勺子和叉子,我們確保這些物體只能在桌子的邊界內平移。所以我們選擇了一個邊界位置,在這個位置上,對象會隨著桌子平移和旋轉。我們從均勻分布中采樣位置和旋轉,同時將每次迭代生成的可移動對象的數量保持為五個。

# Define randomizer function for CULTERY assets.

def cutlery_props(size=5):
    instances = rep.randomizer.instantiate(rep.utils.get_usd_files(knife), size=size, mode='point_instance')
    with instances:
        rep.modify.pose(
            position=rep.distribution.uniform((-212, 76.2, -187), (-62.)),
            rotation=rep.distribution.uniform((-90,-180, 0), (-90, 180, 0)),
             )
    return instances.node

此時此刻,我們已經實例化了場景中的所有對象。我們現在可以運行隨機化器在每個合成生成周期生成 50 張圖像。

# Register randomization
with rep.trigger.on_frame(num_frames=50):
    rep.randomizer.table()
    rep.randomizer.rect_lights(1)
    rep.randomizer.dome_lights(1)
    rep.randomizer.cutlery_props(5)

# Run the simulation graph
rep.orchestrator.run()

為確保生成逼真的圖像,我們切換到 RTX 交互(路徑追蹤)模式,該模式提供高保真渲染。

數據生成過程
?

數據分發和模型構建

pYYBAGSBRuiAYdB5AACY0pTtpek354.png
不同項目的數據分布
?

遵循以數據為中心的理念,我們生成了三個版本的數據集。第一個版本V1由垂直于相機位置的生成圖像組成,而V2表示在桃花心木桌面上與相機位置成 60 度角生成的圖像。V3包含垂直于相機位置的圖像,同時餐具懸掛在空間中。

poYBAGSBRuqAJBeMAABqz5zvJT0779.png
V1 - 垂直于物體
?
poYBAGSBRu2AbeNkAADsAuxR6mY523.png
V2 - 與物體成角度
?
poYBAGSBRvCAC2SkAAGxC2CmJ5c442.png
V3 - 垂直于物體和懸浮在空間中的物體。
?
?
?
?
pYYBAGSBRvOAYsiVAAGsHWNNWVs171.png
?
1 / 2 ?生成的數據集
?

Edge Impulse:數據標注與模型構建

?
?
?
poYBAGSBRviAbOvVAAZoC9DmAIc948.png
?
1 / 2 ?帶邊緣脈沖的數據注釋
?

我們將生成的圖像上傳到 Edge Impulse Studio,我們在其中將數據集注釋為不同的類。我們仔細注釋了每個數據集版本,并使用Yolov5對象檢測模型進行了訓練。在確定為320之前,我們嘗試了 320、512 和 1024 像素的幾種輸入尺寸。Edge Impulse 為模型提供了一個出色的版本控制系統,使我們能夠跟蹤不同數據集版本和超參數的模型性能。

?
?
?
pYYBAGSBRvyAXlvPAANU4i2Tjbo190.png
?
1 / 2 ?建筑模型
?
?
?
?
?
1 / 2 ?帶邊緣脈沖的版本控??制
?

用真實物體測試物體檢測模型

我們使用 Edge Impulse CLI 工具通過在本地下載、構建和運行模型來評估模型的準確性。相機的位置在實驗過程中保持固定。下面的片段顯示經過訓練的模型不能很好地泛化到真實世界的對象。因此,我們需要通過使用 V2 數據集上傳、注釋和訓練模型來改進模型。

V1 失敗 - 模型無法識別對象
?

當使用 V2 數據集訓練時,我們觀察到模型性能有所提高。該模型可以清楚地識別各種物體,盡管當我們改變物體的方向時模型失敗了。因此,我們使用剩余的 V3 數據集訓練模型以緩解這些問題并增加其他超參數,例如從 500 到 2000 的紀元。我們還測試了我們的對象檢測器在具有不同背景紋理的真實對象上的性能,模型表現良好在這些條件下。

V2 成功——模型可以識別物體
?
V2 失敗 - 模型無法識別不同方向的對象。
?

在對各種超參數進行多次迭代之后,我們得到了一個可以很好地概括不同方向的模型。

?
?
?
?
1 / 2 ? V3 成功——模型可以識別不同方向的物體。
?

解決 ML 問題的以數據為中心的方法背后的核心思想是圍繞模型的故障點創建更多數據。我們通過迭代改進數據生成來改進模型,特別是在模型之前失敗的區域。

模型測試
?

結論

在這項工作中,我們了解了域隨機化方法如何幫助為對象檢測任務生成高質量和泛化良好的數據集。我們還展示了以數據為中心的機器學習工作流程在提高模型性能方面的有效性。雖然這項工作僅限于視覺問題,但我們可以將域隨機化擴展到其他傳感器,如激光雷達、加速度計和超聲波傳感器。

參考


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>