當前位置:首頁 > 公眾號精選 > AI科技大本營
[導讀]作者|李秋鍵出品|?AI科技大本營(ID:rgznai100)引言隨著人機交互技術(shù)飛速發(fā)展,人體姿態(tài)估計技術(shù)越來越受到重視。姿態(tài)估計作為人體行為識別的重要組成部分,近年來逐漸成為計算機視覺領(lǐng)域的一個重要的研究熱點。由于人體結(jié)構(gòu)和姿態(tài)的復雜性以及視覺理論的局限性,最初人體姿態(tài)估計算...

作者 | 李秋鍵出品 | AI科技大本營(ID:rgznai100)
引言隨著人機交互技術(shù)飛速發(fā)展,人體姿態(tài)估計技術(shù)越來越受到重視。姿態(tài)估計作為人體行為識別的重要組成部分,近年來逐漸成為計算機視覺領(lǐng)域的一個重要的研究熱點。由于人體結(jié)構(gòu)和姿態(tài)的復雜性以及視覺理論的局限性,最初人體姿態(tài)估計算法僅從圖像或者視頻當中預測人體二維骨架節(jié)點的坐標位置。2015年馬普所提出了由姿態(tài)與體型參數(shù)驅(qū)動的蒙皮多人線性模型,由于該模型具有出色的建模效果與快速的計算效率,許多團隊提出了利用該模型進行人體姿態(tài)估計的方法。目前基于人體形變模型的姿態(tài)估計方法可以根據(jù)兩個標準進行分類:一類是基于優(yōu)化的方法,另一類是基于回歸的方法。而最終發(fā)展到現(xiàn)在三維人體姿態(tài)估計也隨之發(fā)展越來越成熟。


今天我們就將使用Python Unity3d實現(xiàn)一個基于ThreeDPoseUnityBarracuda(Digital-  Standard Co., Ltd.)3D虛擬現(xiàn)實交互游戲。這里通過Unity3d結(jié)合python三維姿態(tài)估計模型,實時獲取人體三維坐標,然后將坐標與人體模型骨骼綁定從而達到控制3D角色的目的。在這步基礎(chǔ)上加入3D模型,設(shè)置基本的觸碰邏輯即可達成我們設(shè)置的簡單游戲的目的。這里使用到的模型可以通過3DmaxBlender進行繪制,最終的演示效果如下:



三維姿態(tài)控制介紹在三維姿態(tài)估計的基礎(chǔ)上,使用unity對實時獲取的三維骨骼坐標和角色骨骼綁定,控制角色動畫,達到交互的效果。


1.1 三維姿態(tài)估計介紹


人體姿態(tài)估計的主要任務是預測出人體關(guān)節(jié)點的三維坐標位置和角度等信息。由于人體姿態(tài)標記數(shù)據(jù)集的缺乏,使得大多數(shù)研究方法都基于2D人體姿態(tài)估計方法之上,因此2D人體姿態(tài)估計研究的發(fā)展也為3D人體姿態(tài)估計奠定了基礎(chǔ),使得3D人體姿態(tài)估計研究有著巨大的潛力。


在實際應用中,由于3D姿態(tài)估計在2D姿態(tài)估計的基礎(chǔ)上加入了深度信息,其對于人體姿態(tài)的表述比2D更為精準,因此其應用范圍和研究價值都要高于2D人體姿態(tài)估計,但是3D姿態(tài)估計的難度也更高,存在著遮擋,單視角2D3D的映射中固有的深度模糊性、不適定性,缺少大型的室外數(shù)據(jù)集等挑戰(zhàn)。


在目前的研究中,三維人體姿態(tài)估計方法可以劃分為傳統(tǒng)方法和深度學習方法兩類。在深度學習方法得到廣泛應用之前,3D人體姿態(tài)標注數(shù)據(jù)集和具有高運算能力的GPU還沒有普及,研究人員主要通過一些應用在傳統(tǒng)計算機視覺或機器學習領(lǐng)域的方法來進行3D人體姿態(tài)的估計。傳統(tǒng)三維人體姿態(tài)估計和基于深度學習的姿態(tài)估計之間最明顯的特征在于是否使用了多層神經(jīng)網(wǎng)絡的學習方法,因為建模方式不同,在估計精確性、計算復雜度等方面也有著較大的差別。其中建模是三維人體姿態(tài)估計一個很重要的方面,目的是表示從輸入數(shù)據(jù)中提取的關(guān)鍵點和特征。在解決實際問題時由于實驗個體所處環(huán)境的復雜性,很大程度上增加了模型的建立難度,因此選取適當且有效的圖像特征來簡化模型建立過程十分重要。傳統(tǒng)方法很多是采用基于人體模型的方法來描述和推斷人體姿態(tài),通過算法提取圖像姿態(tài)特征,因此對特征表示和關(guān)鍵點的空間位置關(guān)系這兩個維度有比較高的要求,除去邊界、顏色這類低層次特征,典型的有尺度不變特征變換、梯度直方圖等表達能力更強、可有效壓縮特征空間維度的高層次特征,它們雖然在時間效率方面具有優(yōu)勢,但依然是由人工設(shè)計的傳統(tǒng)特征,存在著較大的不足。



1.2  ThreeDPoseUnityBarracuda介紹


ThreeDPoseUnityBarracuda通過讀取Barracuda的onnx三維姿態(tài)估計模型,可以在Unity上做三維姿態(tài)估計。


程序設(shè)計這里三維姿態(tài)估計使用Resnet34_3inputs_448x448_20200609.onnx模型,unity3D是對onnx模型的調(diào)用,同時搭建三維場景和設(shè)計邏輯規(guī)則。


2.1 三維姿態(tài)估計模型解析


這里需要使用的三維姿態(tài)估計在之前文章“3DPose實現(xiàn)三維人體姿態(tài)識別”有所介紹,不進行太多描述。


通過使用onnxruntime讀取“Resnet34_3inputs_448x448_20200609.onnx”模型文件,實時對需要識別的圖片數(shù)據(jù),獲取每一張圖片的offset圖和heatmap圖。通過找到第j個關(guān)節(jié)的28個特征圖,并找到最大值的索引來獲取個點坐標。并把坐標按照一定比例縮放。使得圖像變形較為符合人體規(guī)律。


for j in range(0, 24): # 找到第j個關(guān)節(jié)的28個特征圖,并找到最大值的索引 joint_heat = heatMap3D[j * 28:(j 1) * 28, ...] if np.max(joint_heat)>0.1: print(np.max(joint_heat)) [x, y, z] = np.where(joint_heat == np.max(joint_heat)) x = int(x[-1]) y = int(y[-1]) z = int(z[-1]) # 通過heatmap的索引找到對應的offset圖,并計算3D坐標的xyz值 pos_x = offset3D[j * 28 x, y, z] x pos_y = offset3D[24 * 28 j * 28 x, y, z] y pos_z = offset3D[24 * 28 * 2 j * 28 x, y, z] z kps[j, 0] = pos_x kps[j, 1] = pos_y kps[j, 2] = pos_z else: try: kps[j, 0] = kps[j-1, 0] kps[j, 0] = kps[j-1, 0] kps[j, 2] = kps[j-1, 2] except: passparent = np.array([15, 1, 2, 3, 3, 15, 6, 7, 8, 8, 12, 15, 14, 15, 24, 24, 16, 17, 18, 24, 20, 21, 22, 0]) - 1; for i in range(len(kps)): if (parent[i] != -1): ax.plot3D(kps[[i, parent[i]], 0], -kps[[i, parent[i]], 1], -kps[[i, parent[i]], 2], 'gray')


2.2 unity3D程序設(shè)計


Unity3D這里主要使用到了三維場景搭建和CS腳本制定邏輯,這里場景搭建,在搭建好模型后手動規(guī)劃即可。主要介紹程序部分。


1、讀取模型,按照下圖配置即可:



2、隨機從天空掉落物體CS腳本:


using System.Collections;using System.Collections.Generic;using UnityEngine;public class Randomoccurs : MonoBehaviour{ //隨機產(chǎn)生的物體 private static GameObject sphere; private static GameObject cube; private static GameObject cylinder; private static GameObject capsule; public GameObject[] gameobject = { sphere, cube, cylinder, capsule}; //想要產(chǎn)生幾波 public int waves; //每波產(chǎn)生的數(shù)量 public int values; //產(chǎn)生之后延遲時間 public float spawnwait ; // Use this for initialization void Start() { StartCoroutine(test01()); } void Update() { } // Update is called once per frame IEnumerator test01() { for (int j = 0; j < waves; j ) { for (int i = 0; i < values; i ) { Instantiate(gameobject[Random.Range(0, 4)], transform.position, transform.rotation); } yield return new WaitForSeconds(spawnwait); } }}3、制定觸碰規(guī)則,碰到門,門對應ID設(shè)置為銷毀,碰到掉落物體,分數(shù)加分:using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class hit_obj : MonoBehaviour{ // Start is called before the first frame update static public int score = 0; void Start() { } // Update is called once per frame void Update() { } // 碰撞開始 void OnTriggerEnter(Collider collider) { var tag = collider.tag; if (collider.tag == "body_center") { score = 1; GameObject.Destroy(gameObject); //GameObject.Destroy(gameObject, 2.0f);//摧毀自身 } Debug.Log(score); GameObject.Find("Canvas/Score").GetComponent().text = "得分:" score.ToString(); if (collider.tag == "ground") { //Debug.Log("銷毀" gameObject.tag); GameObject.Destroy(gameObject); } } // 碰撞結(jié)束 void OnTriggerStay(Collider collider) { } // 碰撞持續(xù)中 void OnTriggerExit(Collider collider) { }}


完整代碼:


鏈接:


https://pan.baidu.com/s/1hZ5f-4Vv12rpJXK5XL_t5A


提取碼:7q6o


李秋鍵,CSDN博客專家,CSDN達人課作者。碩士在讀于中國礦業(yè)大學,開發(fā)有taptap競賽獲獎等。






本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉