資料介紹
描述
介紹
構(gòu)建對(duì)象檢測(cè)模型可能很棘手,因?yàn)樗枰笮蛿?shù)據(jù)集。有時(shí),數(shù)據(jù)可能很少或不夠多樣化,無法訓(xùn)練出穩(wěn)健的模型。合成數(shù)據(jù)提供了一種替代方法,可以生成具有良好代表性的數(shù)據(jù)集來構(gòu)建質(zhì)量模型。通過應(yīng)用域隨機(jī)化,我們開發(fā)了逼真的數(shù)據(jù)集,訓(xùn)練了神經(jīng)網(wǎng)絡(luò),并使用真實(shí)數(shù)據(jù)集驗(yàn)證了模型。為了創(chuàng)建多樣化的數(shù)據(jù)集,我們創(chuàng)建了各種具有隨機(jī)屬性的模擬環(huán)境:不斷變化的光照條件、相機(jī)位置和材料紋理。我們還表明,合成的隨機(jī)數(shù)據(jù)集可以幫助推廣模型以適應(yīng)現(xiàn)實(shí)環(huán)境。
描述
我們想復(fù)制Louis Moreau 的物體檢測(cè)工作,但這次使用合成數(shù)據(jù)而不是真實(shí)數(shù)據(jù)。該項(xiàng)目旨在演示如何使用 Nvidia Omniverse Replicator 生成的合成數(shù)據(jù)集構(gòu)建和部署 Edge Impulse 對(duì)象檢測(cè)模型。Replicator 是 Nvidia Omniverse 的擴(kuò)展,它提供了生成物理上準(zhǔn)確的合成數(shù)據(jù)的方法。
為什么要合成數(shù)據(jù)?
分類、對(duì)象檢測(cè)和分割等計(jì)算機(jī)視覺任務(wù)需要大規(guī)模數(shù)據(jù)集。從一些現(xiàn)實(shí)世界的應(yīng)用程序中收集的數(shù)據(jù)往往范圍狹窄且多樣性較低,通常是從單一環(huán)境中收集的,有時(shí)是不變的并且在大多數(shù)時(shí)間保持不變。此外,從單一領(lǐng)域收集的數(shù)據(jù)往往具有較少的尾端場(chǎng)景和罕見事件的示例,我們無法輕易地將這些情況復(fù)制到現(xiàn)實(shí)世界中。
因此,在單個(gè)域中訓(xùn)練的模型很脆弱,并且在部署到另一個(gè)環(huán)境時(shí)經(jīng)常會(huì)失敗;因此,它需要另一個(gè)訓(xùn)練周期來適應(yīng)新環(huán)境。這就提出了一個(gè)問題,我們?nèi)绾尾拍苡行伊畠r(jià)地跨多個(gè)領(lǐng)域收集廣義數(shù)據(jù)?一個(gè)簡(jiǎn)單但不合理的有效解決方案是Domain Randomization,改變前景物體的紋理和顏色,背景圖像,場(chǎng)景中的燈光數(shù)量,燈光的姿態(tài),相機(jī)位置等。Domain randomization可以進(jìn)一步提高模擬器中生成的罕見事件的合成數(shù)據(jù)結(jié)構(gòu)的可變性。
“域隨機(jī)化的目的是在訓(xùn)練時(shí)提供足夠的模擬可變性,以便在測(cè)試時(shí)模型能夠推廣到真實(shí)世界的數(shù)據(jù)?!?- Tobin 等人,用于將深度神經(jīng)網(wǎng)絡(luò)從模擬轉(zhuǎn)移到現(xiàn)實(shí)世界的域隨機(jī)化,2017 年
Nvidia Replicator 使我們能夠執(zhí)行域隨機(jī)化。Replicator 是 Omniverse 系列中的一個(gè)模塊,它提供工具和工作流程來為各種計(jì)算機(jī)視覺和非視覺任務(wù)生成數(shù)據(jù)。Replicator 是一種高度互操作的工具,可與 40 多個(gè)不同垂直領(lǐng)域的建模/渲染應(yīng)用程序集成。由于 Pixar 的通用場(chǎng)景描述 (USD),無縫集成成為可能,它作為 Blender、3DMax、Maya、Revit、C4D 等各種應(yīng)用程序的協(xié)議,與 Nvidia Replicator 一起工作。
以數(shù)據(jù)為中心的工作流程
傳統(tǒng)的機(jī)器學(xué)習(xí)工作流程往往以模型為中心,通過迭代改進(jìn)算法設(shè)計(jì)等更多地關(guān)注模型的開發(fā)。在這個(gè)項(xiàng)目中,我們選擇了以數(shù)據(jù)為中心的方法,我們固定模型并迭代提高生成的質(zhì)量數(shù)據(jù)集。這種方法更加穩(wěn)健,因?yàn)槲覀冎牢覀兊哪P团c數(shù)據(jù)集一樣好。因此,該方法系統(tǒng)地改變了 AI 任務(wù)的數(shù)據(jù)集性能。它的核心是從數(shù)據(jù)而非模型的角度考慮機(jī)器學(xué)習(xí)。
硬件和驅(qū)動(dòng)程序設(shè)置
Nvidia Omniverse Replicator 是一個(gè)計(jì)算密集型應(yīng)用程序,需要中等大小的 GPU 和不錯(cuò)的 RAM。我的硬件設(shè)置包括 32GB RAM、1TB 存儲(chǔ)空間和 8GB GPU 以及 Intel i9 處理器。
該應(yīng)用程序可以在 Windows 和 Linux 操作系統(tǒng)上運(yùn)行。對(duì)于這個(gè)實(shí)驗(yàn),我們使用了 Ubuntu 20.04 LTS 發(fā)行版,因?yàn)閺?2022 年 11 月起 Nvidia Omniverse 不再支持 Ubuntu 18.04。此外,我們選擇了合適的 Nvidia 驅(qū)動(dòng)程序 v510.108.03 并將其安裝在 Linux 機(jī)器上。
實(shí)驗(yàn)設(shè)置和數(shù)據(jù)生成
實(shí)驗(yàn)環(huán)境由可移動(dòng)和不可移動(dòng)的物體(動(dòng)態(tài)和靜態(tài)定位物體)組成。不可移動(dòng)的物體由燈、一張桌子和兩個(gè)相機(jī)組成。同時(shí),可移動(dòng)的物體是餐具,即勺子、叉子和刀子。我們將使用域隨機(jī)化來改變一些可移動(dòng)和不可移動(dòng)物體的屬性。包括對(duì)象和場(chǎng)景的資產(chǎn)在 Replicator 中表示為 USD。
Omniverse Replicator 中的每個(gè)對(duì)象都以美元表示。可以使用 Nvidia Omniverse 的 CAD Importer 擴(kuò)展將具有不同擴(kuò)展名(例如 obj、fbx 和 glif)的 3D 模型文件導(dǎo)入 Replicator。該擴(kuò)展程序?qū)?3D 文件轉(zhuǎn)換為美元。我們通過指定資產(chǎn)路徑將我們的資產(chǎn)(桌子、刀、勺子和叉子)導(dǎo)入到模擬器中。
閃電在數(shù)據(jù)生成中起著至關(guān)重要的作用。Nvidia 復(fù)制器中有不同的內(nèi)置照明類型。我們選擇兩個(gè)矩形燈和一個(gè)圓頂燈,因?yàn)樗鼈優(yōu)槲覀兲峁┝烁玫恼彰鬟x項(xiàng)和生成逼真圖像的能力。矩形燈模擬面板產(chǎn)生的光,圓頂燈讓您動(dòng)態(tài)照亮整個(gè)場(chǎng)景。我們隨機(jī)化了一些光參數(shù),例如溫度和強(qiáng)度,并且這兩個(gè)參數(shù)都是從正態(tài)分布中采樣的。此外,比例參數(shù)是從均勻分布中采樣的,同時(shí)保持燈光的旋轉(zhuǎn)和位置固定。
# 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
我們固定位置和旋轉(zhuǎn),選擇桌面材料,選擇額外的桃花心木材料,并在數(shù)據(jù)生成過程中交替使用材料。
# 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
為了進(jìn)一步提高我們數(shù)據(jù)集的質(zhì)量,我們選擇了兩個(gè)不同分辨率的攝像機(jī),我們將它們戰(zhàn)略性地放置在場(chǎng)景中的不同位置。此外,我們?cè)诓煌姹镜臄?shù)據(jù)生成過程中改變了攝像機(jī)的位置。
# 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))
最后,對(duì)于可移動(dòng)的物體,包括刀、勺子和叉子,我們確保這些物體只能在桌子的邊界內(nèi)平移。所以我們選擇了一個(gè)邊界位置,在這個(gè)位置上,對(duì)象會(huì)隨著桌子平移和旋轉(zhuǎn)。我們從均勻分布中采樣位置和旋轉(zhuǎn),同時(shí)將每次迭代生成的可移動(dòng)對(duì)象的數(shù)量保持為五個(gè)。
# 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
此時(shí)此刻,我們已經(jīng)實(shí)例化了場(chǎng)景中的所有對(duì)象。我們現(xiàn)在可以運(yùn)行隨機(jī)化器在每個(gè)合成生成周期生成 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 交互(路徑追蹤)模式,該模式提供高保真渲染。
數(shù)據(jù)分發(fā)和模型構(gòu)建
遵循以數(shù)據(jù)為中心的理念,我們生成了三個(gè)版本的數(shù)據(jù)集。第一個(gè)版本V1由垂直于相機(jī)位置的生成圖像組成,而V2表示在桃花心木桌面上與相機(jī)位置成 60 度角生成的圖像。V3包含垂直于相機(jī)位置的圖像,同時(shí)餐具懸掛在空間中。
Edge Impulse:數(shù)據(jù)標(biāo)注與模型構(gòu)建
我們將生成的圖像上傳到 Edge Impulse Studio,我們?cè)谄渲袑?shù)據(jù)集注釋為不同的類。我們仔細(xì)注釋了每個(gè)數(shù)據(jù)集版本,并使用Yolov5對(duì)象檢測(cè)模型進(jìn)行了訓(xùn)練。在確定為320之前,我們嘗試了 320、512 和 1024 像素的幾種輸入尺寸。Edge Impulse 為模型提供了一個(gè)出色的版本控制系統(tǒng),使我們能夠跟蹤不同數(shù)據(jù)集版本和超參數(shù)的模型性能。
用真實(shí)物體測(cè)試物體檢測(cè)模型
我們使用 Edge Impulse CLI 工具通過在本地下載、構(gòu)建和運(yùn)行模型來評(píng)估模型的準(zhǔn)確性。相機(jī)的位置在實(shí)驗(yàn)過程中保持固定。下面的片段顯示經(jīng)過訓(xùn)練的模型不能很好地泛化到真實(shí)世界的對(duì)象。因此,我們需要通過使用 V2 數(shù)據(jù)集上傳、注釋和訓(xùn)練模型來改進(jìn)模型。
當(dāng)使用 V2 數(shù)據(jù)集訓(xùn)練時(shí),我們觀察到模型性能有所提高。該模型可以清楚地識(shí)別各種物體,盡管當(dāng)我們改變物體的方向時(shí)模型失敗了。因此,我們使用剩余的 V3 數(shù)據(jù)集訓(xùn)練模型以緩解這些問題并增加其他超參數(shù),例如從 500 到 2000 的紀(jì)元。我們還測(cè)試了我們的對(duì)象檢測(cè)器在具有不同背景紋理的真實(shí)對(duì)象上的性能,模型表現(xiàn)良好在這些條件下。
在對(duì)各種超參數(shù)進(jìn)行多次迭代之后,我們得到了一個(gè)可以很好地概括不同方向的模型。
解決 ML 問題的以數(shù)據(jù)為中心的方法背后的核心思想是圍繞模型的故障點(diǎn)創(chuàng)建更多數(shù)據(jù)。我們通過迭代改進(jìn)數(shù)據(jù)生成來改進(jìn)模型,特別是在模型之前失敗的區(qū)域。
結(jié)論
在這項(xiàng)工作中,我們了解了域隨機(jī)化方法如何幫助為對(duì)象檢測(cè)任務(wù)生成高質(zhì)量和泛化良好的數(shù)據(jù)集。我們還展示了以數(shù)據(jù)為中心的機(jī)器學(xué)習(xí)工作流程在提高模型性能方面的有效性。雖然這項(xiàng)工作僅限于視覺問題,但我們可以將域隨機(jī)化擴(kuò)展到其他傳感器,如激光雷達(dá)、加速度計(jì)和超聲波傳感器。
參考
- TinyML:使用ChatGPT和合成數(shù)據(jù)檢測(cè)嬰兒哭聲
- 用于對(duì)象檢測(cè)的合成數(shù)據(jù)生成
- Oracle數(shù)據(jù)庫(kù)備份文件有效性檢測(cè)設(shè)計(jì)方案
- 【LTE實(shí)戰(zhàn)】LTE小區(qū)TAC配置不合理導(dǎo)致CSFB失敗處理案例
- LTE小區(qū)TAC配置不合理回落失敗案例
- LTE小區(qū)TAC配置不合理回落失敗案例簡(jiǎn)介
- NR頻點(diǎn)重選優(yōu)先級(jí)設(shè)置不合理導(dǎo)致概率性NR注冊(cè)拒絕資料下載
- LTE小區(qū)TAC配置不合理回落失敗案例 2次下載
- PLC冗余系統(tǒng)的可行性和有效性分析 10次下載
- 如何檢查Oracle數(shù)據(jù)庫(kù)備份文件是否有效?備份文件有效性檢測(cè)系統(tǒng)設(shè)計(jì)資料概述 5次下載
- 新的模糊聚類有效性指標(biāo) 0次下載
- 高階微擾法的有效性研究 0次下載
- 變電所繼電保護(hù)的幾處不合理設(shè)計(jì)
- 基于有效性評(píng)價(jià)機(jī)制的小波包特征提取技術(shù)
- 壓縮機(jī)故障率的有效性估計(jì)和維修周期的確定
- 自然語(yǔ)言常用的自回歸解碼方法 527次閱讀
- 過載跳閘的原因及解決方法 9148次閱讀
- FPC彎曲半徑不合理為什么會(huì)導(dǎo)致斷裂呢? 592次閱讀
- 認(rèn)知扭曲類別 612次閱讀
- 精度、收斂性和網(wǎng)格質(zhì)量 2368次閱讀
- 符合ASIL要求的磁傳感器集成電路解析 1469次閱讀
- PCB助焊設(shè)計(jì)的不合理會(huì)對(duì)PCBA制造工藝造成什么影響 984次閱讀
- 反饋抑制器產(chǎn)生的原因 3062次閱讀
- 如何使用ZK-SNARK來驗(yàn)證區(qū)塊的有效性 1287次閱讀
- 電阻消振和負(fù)反饋電阻電路圖 5839次閱讀
- 基于電壓監(jiān)控ADC系統(tǒng)的電源域隔離方案 5662次閱讀
- 如何合理而有效的進(jìn)行控制系統(tǒng)冗余設(shè)計(jì)? 1.1w次閱讀
- 為什么要進(jìn)行數(shù)據(jù)清洗呢? 2.6w次閱讀
- 在開關(guān)電源模塊中抑制電磁干擾有哪些對(duì)策? 1785次閱讀
- 選購(gòu)電源看什么?選購(gòu)不合理可能出現(xiàn)的后果‘解析’ 1231次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多