日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

卡通驱动项目ThreeDPoseTracker——关键点平滑方案解析

發布時間:2023/12/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 卡通驱动项目ThreeDPoseTracker——关键点平滑方案解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

之前對ThreeDPoseTracker的深度學習模型和unity中的驅動方法進行過解析,還有一個比較重要的就是從深度學習模型出來的3D關鍵點數據會有抖動,在ThreeDPoseTracker源碼中有做兩次平滑,一部分是卡爾曼濾波,還有一部分是低通濾波。這次就是對這部分類型進行解析。

國際慣例參考博客:

ThreeDPoseTracker源碼VNectBarracudaRunner.cs

理論與代碼復現

在源工程的VNectBarracudaRunner.cs腳本中,有一個函數KalmanUpdate便是用于卡爾曼濾波的,而后續有這樣一行代碼:

jp.PrevPos3D[i] = jp.PrevPos3D[i] * Smooth + jp.PrevPos3D[i - 1] * (1f - Smooth);

便是低通濾波器。

卡爾曼濾波

其實這部分和我在網上搜到的卡爾曼濾波的方法公式很不相同,不過我們還是按照源碼來實現解析吧,因為卡爾曼濾波的真正理論貌似有點復雜,暫時不準備去看。

在源碼中,預定義了兩個參數:KalmanParamQ、KalmanParamR,為了簡寫公式就簡記為Q和R,隨后按照時間推移不斷迭代求解兩個數組K和P,公式如下:
K=P+QP+Q+RP=R×P+QP+R+Q\begin{aligned} K &= \frac{P+Q}{P + Q + R}\\ P &= R \times\frac{P+Q}{P+R+Q} \end{aligned} KP?=P+Q+RP+Q?=R×P+R+QP+Q??
隨后使用K對關鍵點進行平滑,首先得有一個中間變量X,設未平滑的姿態為C,則平滑后的姿態D:
D=X+(C?X)?KX=D\begin{aligned} D&=X+(C-X)*K \\ X&=D \end{aligned} DX?=X+(C?X)?K=D?
這就沒了,感覺跟網上的卡爾曼濾波理論完全不同,如果有哪位大佬知道這個究竟屬于什么算法,可以在評論區告知或者微信公眾號私信討論,謝謝。

低通濾波

這個和圖像里面的低通濾波差不多,不過是一維的,公式很簡單
now=prev?smooth+now?(1?smooth)now = prev*smooth + now *(1-smooth) now=prev?smooth+now?(1?smooth)
簡單的寫法是上面,論文用了一個時間軸,將歷史的6幀數據聯合起來為當前幀平滑,代碼如下

jp.PrevPos3D[0] = jp.Pos3D; for (var i = 1; i < NOrderLPF; i++) {jp.PrevPos3D[i] = jp.PrevPos3D[i] * Smooth + jp.PrevPos3D[i - 1] * (1f - Smooth); } jp.Pos3D = jp.PrevPos3D[NOrderLPF - 1];

歷史第0幀為當前未平滑的幀數據,然后依次向前平滑到幀窗口的最后一幀,那么當前幀平滑后的數據就是窗口的最后一幀。

實驗

原始、unity平滑結果、python卡爾曼濾波、python卡爾曼+低通濾波三種方法平滑后的腳部z軸方向的坐標變化如下:

很清晰發現原始數據有很多小棱角的噪聲,而經過kalman濾波以后,基本去掉了大部分棱角,然后用低通濾波降低了運動幅度。最終結果與unity源碼結果相同,說明復現成功。

我們來看看動作的可視化效果:

未經平滑的可視化

經過卡爾曼和低通平滑后:

結論

論文的平滑方法雖然很少代碼就搞定,但是從效果圖可以發現,平滑效果還是不錯的。

完整的python實現放在微信公眾號的簡介中描述的github中,有興趣可以去找找。或者在公眾號回復“ThreeDPose",同時文章也同步到微信公眾號中,有疑問或者興趣歡迎公眾號私信。

總結

以上是生活随笔為你收集整理的卡通驱动项目ThreeDPoseTracker——关键点平滑方案解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。