人工智能系列項目展示了創(chuàng)作者使用Unity制作的一系列人工智能項目,,項目涉及人工智能產(chǎn)品,。本案例中展示了最近使用Unity為OpenCV空間人工智能競賽制作的一個項目的一些實用資料,,該項目以一系列令人印象深刻的例子展示了Unity中的機(jī)器人技術(shù)、計算機(jī)視覺,、強(qiáng)化學(xué)習(xí)和增強(qiáng)現(xiàn)實等功能,。
Unity是世界一流的實時3D引擎。雖然Unity的游戲引擎和工具傳統(tǒng)上只支持游戲開發(fā)者,,但AI@Unity團(tuán)隊正在圍繞機(jī)器學(xué)習(xí),、計算機(jī)視覺和機(jī)器人模擬等領(lǐng)域構(gòu)建全新的工具,以支持游戲以外的應(yīng)用,,尤其是那些使用人工智能和實時3D環(huán)境的應(yīng)用,。
在OpenCV空間人工智能競賽中Gerard Espona和KaudaTeam提供了多個案例作品,他們大量使用了Unity的人工智能工具和軟件包,。團(tuán)隊通過使用Unity的感知包訓(xùn)練計算機(jī)視覺模型并通過移動代理工具包來訓(xùn)練他們的機(jī)器學(xué)習(xí)模型,,此外他們還做出一個機(jī)器人手臂的模擬演示案例。
OpenCV計劃
Kauda?Team名字的由來
Kauda Team由Giovanni Lerda和Gerard Espona兩名成員組成,,名字來自Giovanni創(chuàng)建的免費開源桌面大小的3D打印5軸機(jī)械臂——Kauda,。這是一個非常棒的桌面機(jī)器臂,任何人都可以使用,,且允許他們在項目上遠(yuǎn)程合作,。
Kauda機(jī)械臂
如何在Unity獲得Kauda機(jī)械臂的數(shù)字孿生
Giovanni Lerda和Gerard Espon開發(fā)了Kauda工作室,這是一個Unity的應(yīng)用程序,,目的是為了生成Kauda的數(shù)字孿生,。它通過反向運動學(xué)(IK)控制、USB/藍(lán)牙連接到真實的Kauda,,提供了功能齊全且精確的Kauda機(jī)械臂模擬,,并可以支持多個OpenCV OAK-D相機(jī)。
OAK-D相機(jī)是什么,,它是如何與Unity一起使用的,?
OAK-D相機(jī)結(jié)合了兩個立體深度相機(jī)和一個帶有板載處理功能的4K彩色相機(jī)(由英特爾MyriadX VPU提供),可自動處理各種情況,。作為競賽作品,,Kauda Team為OAK設(shè)備構(gòu)建了一個Unity插件,但他們也想在Unity中創(chuàng)造出一個數(shù)字孿生設(shè)備,。OAK-D Unity數(shù)字孿生相機(jī)為他們提供了幫助,,這是一部具有精確模擬功能的3D虛擬相機(jī),可用于合成數(shù)據(jù)收集,。OAK-D Unity數(shù)字孿生相機(jī)幫助他們將虛擬圖像輸入到真實設(shè)備的管道中,。讓他們通過使用Unity感知包來收集合成素材,并用于為虛擬OAK-D相機(jī)訓(xùn)練定制項目,。
OAK-D相機(jī)中的Unity模型
在Unity中擁有一個數(shù)字孿生模型的優(yōu)勢
擁有一個數(shù)字孿生讓Gerard Espon能夠在Kauda上啟用額外的功能,。他們還能夠使用Unity的增強(qiáng)現(xiàn)實(AR)功能與現(xiàn)實世界中的虛擬機(jī)器人進(jìn)行交互,。其中的一個應(yīng)用是學(xué)習(xí)如何在不需要機(jī)器人的情況下對機(jī)器人進(jìn)行維護(hù)。這也允許他們用無代碼方法編程順序任務(wù),,使機(jī)器臂精確的完成任務(wù)。
數(shù)字孿生還能使他們對機(jī)械臂進(jìn)行強(qiáng)化學(xué)習(xí)(RL)訓(xùn)練,。RL是一個耗時的過程,,除了極其簡單的案例之外,任何事情都需要模擬,。為此Kauda?Team在Unity中使用了ML-agent工具包來執(zhí)行RL訓(xùn)練以對機(jī)械臂進(jìn)行訓(xùn)練與控制,。
Kauda?Team還在Unity中測試了人機(jī)協(xié)作和安全程序,他們在Unity中創(chuàng)建了數(shù)字孿生機(jī)械臂,,并使用攝像頭測量人類在機(jī)械臂區(qū)域內(nèi)的位置,。可以想象這樣做是為了那些更大型的機(jī)器人,,當(dāng)程序錯誤發(fā)生時,,它會對人類造成傷害。模擬環(huán)境讓他們可以在不危及人類安全的情況下測試這些場景,。
ML-agent工具包的用法
“強(qiáng)化學(xué)習(xí)(RL)訓(xùn)練是一個強(qiáng)大的機(jī)器人框架,,而Unity ML-agent也是一個很棒的工具包,它使我們的數(shù)字孿生機(jī)械臂能夠?qū)W習(xí)和執(zhí)行復(fù)雜的任務(wù),。由于競賽的時間有限,,目標(biāo)是實現(xiàn)一個簡單的RL“接觸”任務(wù),并將生成的模型轉(zhuǎn)換為在OAK-D設(shè)備上運行推理,。通過使用ML-agent工具包,,機(jī)器人使用IK控制學(xué)習(xí)的最佳路徑,以動態(tài)接觸檢測接觸到的3D對象,?!盙erard Espon說道。
為了實現(xiàn)這一點,,Kauda?Team首先使用了spatial tiny YOLO,,這幫助他們實現(xiàn)了三維物體檢測。RL模型(PPO)使用結(jié)果檢測和IK控制點的位置作為輸入觀察,。關(guān)于輸出動作,,IK控制點的能夠?qū)崿F(xiàn)3軸移動。獎勵系統(tǒng)基于每一步的小懲罰和機(jī)器人接觸物體時的大獎勵(1.0)而制定,。為了加快訓(xùn)練速度,,Kauda?Team利用多代理同時學(xué)習(xí)來開發(fā)虛擬spatial tiny YOLO,其輸出動作與真實spatial tiny YOLO相同,。
當(dāng)模型訓(xùn)練完成后,,他們使用OpenVino工具包將其轉(zhuǎn)換為OpenVino IR和Myriad Blob格式,,將模型加載到OAK-D設(shè)備上并運行推理。最后管道中是一個spatial tiny YOLO加RL模型,。這里他們使用了Unity插件,,因為Unity插件能夠幫助他們在Unity中同時使用ML-Agents和OAK-D代理來比較推理。
合成數(shù)據(jù)
管道的第一階段是3D對象檢測器,,這是一個基于人工智能的計算機(jī)視覺和機(jī)器人任務(wù)的一個非常常見的起點,。在案例中,Kauda?Team使用了一個預(yù)先訓(xùn)練好的小型YOLO v3模型Unity感知包,,這讓他們能夠為機(jī)器人的訓(xùn)練定制類別,。這讓Kauda?Team能夠在幾分鐘內(nèi)生成一個帶有自動地面真實邊界框標(biāo)記的大型3D模型合成數(shù)據(jù)集。通常,,收集和標(biāo)記過程是非常耗時的,。擁有生成豐富數(shù)據(jù)集的能力是一大進(jìn)步,該數(shù)據(jù)集具有大量隨機(jī)化選項,,擁有不同的角度,、打光情況、紋理變化等,。
開發(fā)中的困難
“同步虛擬項目和現(xiàn)實世界項目所需的時間有時會有些偏離,。我們認(rèn)為這可以通過在未來使用ROS來解決,讓我們很高興的是Unity現(xiàn)在正式支持ROS了,!”Gerard Espon說道,。