本發(fā)明屬于計算機視覺及人工智能領域下的姿態(tài)估計,具體涉及一種基于多層級拓撲結構的3d手部姿態(tài)估計方法。
背景技術:
1、3d手部姿態(tài)估計是計算機視覺和人機交互領域的一個重要研究課題。它的目標是從輸入的圖像或視頻中推斷出手部的三維姿態(tài),即手部各關節(jié)的三維位置和方向。這項技術在許多應用中都有重要作用,包括虛擬現(xiàn)實、增強現(xiàn)實、手勢識別、人機交互和醫(yī)療康復等。
2、然而,目前3d手部姿態(tài)估計面臨著許多挑戰(zhàn)。首先,由于手部具有高度的自由度(每只手有21個關節(jié)),姿態(tài)空間復雜,可能的姿態(tài)變化多樣。其次,由于遮擋、光照變化、圖像噪聲等因素,從二維圖像中恢復三維信息是一項困難的任務。此外,不同人的手部大小、形狀和顏色差異也增加了問題的復雜性。同時為了符合方便普及和部署的要求,研究者們致力于從單目rgb圖像中估計3d手部姿態(tài)。由于受限于設備,基于單目rgb圖像的3d手部姿態(tài)估計受到自遮擋、深度模糊問題更加嚴重。因此,基于單目rgb圖像的3d手部姿態(tài)估計的相關研究者們都借助手部結構的骨骼物理約束和運動學鏈條等來協(xié)助構建3d手部姿態(tài),并在此基礎上采用能夠構建手部拓撲結構的圖卷積網絡gcn對手部拓撲結構進行構建。例如,bihand模型采用三段式網絡模型對3d手部姿態(tài)進行估計,分別為從單目rgb圖像中得到2d熱度圖和輪廓圖的seednet,將2d熱度圖和輪廓圖提升到3d熱度圖和深度圖的liftnet,以及從3d熱度圖估計得到3d手部姿態(tài)和運動學鏈條的siknet。采用先估計3d熱度圖作為過渡階段,降低了直接估計3d姿態(tài)的難度。同時采用逆運動學約束在損失函數(shù)中對估計的到的3d手部姿勢進行約束。隨后,semgcn和hgcn模型構建骨骼的物理拓撲結構,分別融合一階和高階鄰居的特征信息。
3、上述研究雖然都在自身領域取得了很好的成績,但是這些研究要么是網絡模型復雜,要么是只考慮了單一的手部拓撲結構,這對模型在測試集上的準確率造成了消極影響,估計的3d姿態(tài)的穩(wěn)健性有待提升。
技術實現(xiàn)思路
1、針對現(xiàn)有技術中存在的上述問題,本發(fā)明提出一種基于多層級拓撲結構的3d手部姿態(tài)估計方法,提高了關節(jié)特征表示的穩(wěn)健性和模型的魯棒性,能夠得到穩(wěn)健的3d手部姿態(tài)。
2、為實現(xiàn)上述目的,本發(fā)明的技術方案為:
3、一種基于多層級拓撲結構的3d手部姿態(tài)估計方法,包括以下步驟:
4、步驟1:將單目rgb圖像輸入到多層級拓撲結構網絡中,進行特征提取、特征拼接、節(jié)點坐標估計、特征交互操作后,多層級拓撲結構網絡輸出3d手部姿態(tài);
5、步驟2:將步驟1得到的3d手部姿態(tài),與真實的手部姿態(tài)輸入到3d手部姿態(tài)估計網絡模型的損失函數(shù)中,使用均方誤差損失函數(shù)對3d手部姿態(tài)估計網絡模型進行訓練,得到模型參數(shù);
6、步驟3:加載步驟2中的模型參數(shù),將新的單目rgb圖像輸入到訓練完成的3d手部姿態(tài)估計網絡模型中,得到對應的3d手部姿態(tài)。
7、進一步的,步驟1具體包括:
8、步驟1.1:首先,針對rhd數(shù)據(jù)集,使用hourglass網絡對輸入的單目rgb圖像進行特征提取,隨后輸入到head模塊得到手部關節(jié)點的特征圖;
9、步驟1.2:手部關節(jié)點的特征圖分別通過圖卷積網絡gcn層和卷積層形成手部局部特征和手部全局特征圖,手部局部特征和手部全局特征圖再和手部關節(jié)點的特征圖拼接形成新的關節(jié)點特征圖;
10、步驟1.3:將步驟1.2形成的新的關節(jié)點特征圖分成架構上相似的兩個分支,分別用于估計關節(jié)點的uv坐標和d坐標;
11、步驟1.4:將新的關節(jié)點特征圖輸入到tntpose模塊中,tntpose模塊內部transformer對關節(jié)點的不同特征進行信息交互,為了讓內部transformer能夠完成多特征的信息交互任務,本發(fā)明設計多特征交叉注意力模塊對多特征進行信息交互。
12、步驟1.5:經過內部transformer處理后的關節(jié)點特征再通過外部transformer對不同關節(jié)點特征進行交互,輸出處理后結果,該處理后結果分為估計uv坐標的分支處理后結果和估計d坐標的分支處理后結果;
13、步驟1.6:估計uv坐標的分支和估計d坐標的分支輸出的處理后結果拼接后,最終輸出手部3d姿態(tài)。
14、其中,多層級拓撲結構網絡通過將hourglass網絡的特征圖輸出傳遞給head模塊,得到手部關節(jié)特征向量vj∈rn×d。然后,該網絡通過gcn層,利用手部的先驗知識設置鄰接矩陣,從手部關節(jié)特征向量構建手部局部特征向量vp∈rn×d。同時,通過與核大小為1的卷積,從手部關節(jié)特征向量構建手部全局特征向量vh∈rn×d。因此,一個關節(jié)由手部關節(jié)特征向量、手部局部特征向量和手部全局特征向量共同表示。然后,該網絡的tntpose模塊使用內部transformer來促進不同級別特征之間的交互。為了使三部分特征能夠有效地交互,本發(fā)明新提出了一個多特征交叉注意力模塊mca,用于加強內部transformer。用公式(1)-(5)表示該過程:
15、x=concat(vj,vp,vh),#(1)
16、vj,l=mlp(mca(ln(vj,l-1),lb(vp,l-1),ln(vh,l-1))),#(2)
17、vp,l=mlp(mca(ln(vp,l-1),ln(vj,l-1),ln(vh,l-1))),#(3)
18、vh,l=mlp(mac(ln(vh,l-1),ln(vj,l-1),ln(vp,l-1))),#(4)
19、xl=xl-1+concat(vj,l,vp,l,vh,l).#(5)
20、其中,x表示不同層級特征拼接后得到的新的手部表示;concat(*)是拼接操作;vj為手部關節(jié)特征向量;vp為手部局部特征向量;vh為手部全局特征向量;v*,l是第l個內部transformer的輸出;mca(*)是多特征交叉注意力模塊;mlp(*)是多層感知機制;ln(*)為歸一化操作;v*,l-1表示第l-1層的特征;xl表示第l層的手部表示;xl-1表示第l-1層的手部表示。
21、tntpose模塊采用標準transformer作為外部transformer來構建關節(jié)點之間的全局關系,對不同關節(jié)點特征進行交互,其用公式(6)-(8)表示:
22、χ=[x0,x1,…,xn],χ∈rn×3d,#(6)
23、χ′l=χl-1+msa(ln(χl-1)),#(7)
24、χl=χl+mlp(ln(χ′l)).#(8)
25、其中,χ∈rn×3d是由n個3個d維度長度的不同特征向量組成的關節(jié)特征。x*表示每個關節(jié)點的特征;χ'l表示表示經過mca處理后第l層得到的關節(jié)特征;χl-1表示第l-1層的關節(jié)特征;χl表示第l層得到的最終關節(jié)特征;mca(*)是多特征交叉注意力模塊;mlp(*)是多層感知機制。
26、多特征交叉注意力模塊mca有四個輸入,即query、key_0、key_1和value,分別表示節(jié)特征查詢,關節(jié)特征鍵0,關節(jié)特征鍵1,關節(jié)特征值;首先,query分別與key_0和key_1計算注意力分數(shù),然后將兩個注意力分數(shù)相加得到最終的注意力分數(shù)。最后,用value計算最終的注意力分數(shù)以獲得最終的輸出結果。多特征交叉注意力模塊可以用公式(9)-(12)表示:
27、
28、x=mlp(scores*value).#(12)
29、其中,linear(*)表示線性層。t表示矩陣轉置操作;score0表示計算得到的注意力分數(shù)0;score1表示計算得到的注意力分數(shù)1;scores表示綜合的注意力分數(shù);softmax表示softmax激活函數(shù);表示對特征維度開根號;x表示關節(jié)特征。
30、進一步的,步驟2具體包括:
31、將步驟1得到的估計3d手部姿態(tài)和真實的3d姿態(tài)姿態(tài)輸入到損失函數(shù)中訓練網絡,本發(fā)明提出使用關節(jié)點位置的歐式距離和手指骨骼長度的均方誤差作為損失函數(shù)共同訓練網絡模型,這兩個損失函數(shù)可以用公式(13)-(14)表示:
32、
33、式中,是模型估計得到的關節(jié)的3d坐標,下標i為關節(jié)點編號;為真實的關節(jié)的3d坐標;是通過模型估計得到的3d坐標計算得到的估計手指骨骼長度;為通過真實關節(jié)坐標計算得到的真實手指骨骼長度;j為關節(jié)數(shù)量,j=21。
34、進一步的,所述步驟3具體包括:
35、加載步驟2中訓練好的模型參數(shù)best_state.pth,將單目rgb圖像輸入到模型中,并輸出手部關節(jié)3d坐標以及對應的評價指標。
36、本發(fā)明的有益效果包括:
37、使用多層級拓撲結構網絡,捕獲并整合圖像中不同尺度和層次的手部特征,從而更準確地估計出3d手部姿態(tài),提高估計的精度和魯棒性;使用均方誤差損失函數(shù)對3d手部姿態(tài)估計網絡模型進行訓練,學習到從輸入圖像到輸出3d手部姿態(tài)的映射關系,增強模型泛化能力,以能夠處理復雜的手部姿態(tài)和場景。
38、具體的,本發(fā)明構建手部多層級拓撲結構,根據(jù)多層級拓撲結構構建新的手部關節(jié)點表示,并使用transformer?in?transformer架構對關節(jié)點不同特征和不同關節(jié)點特征同時進行信息交互,從而提高了關節(jié)特征表示的穩(wěn)健性和模型的魯棒性,使模型在估計3d手部姿態(tài)時能夠構建更加穩(wěn)健的手部結構;另外,本發(fā)明為了使得內部transformer能夠很好地建立多特征之間地信息交互,設計了多特征交叉注意力塊,該模塊能夠提取不同尺度的特征信息。除此之外,本發(fā)明還結合關節(jié)3d坐標歐氏距離和手指骨骼長度均方誤差,加大了對錯誤估計的懲罰,從而保證了估計的3d手部姿勢的準確率。最終,通過端到端的方式得到了高精度3d手部姿態(tài)。