多目标姿态估计
多目標(biāo)姿態(tài)估計(jì)
一個(gè)openpose的姿態(tài)估計(jì)算法,這個(gè)算法可以檢測(cè)人體的18個(gè)關(guān)節(jié)點(diǎn)。
安裝OpenPose
這個(gè)是來(lái)自卡內(nèi)基梅隆的開(kāi)源算法,算法真的很魯棒,不信來(lái)看看效果。
openpose這個(gè)算法集成Convolutional Pose Machines、Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields 和 Hand Keypoint Detection in Single Images 這三篇paper的研究。不得不說(shuō),效果的確是好啊。下面給出算法GitHub地址,安裝教程在ReadMe也寫(xiě)得十分詳細(xì)了。
GitHub地址
https://github.com/CMU-Perceptual-Computing-Lab/openpose
好的,大家根據(jù)Readme上的教程安裝就好,官方算法是C++的,如果小伙伴還想用python版的就要去安裝PyOpenPose。GitHub地址:https://github.com/FORTH-ModelBasedTracker/PyOpenPose
安裝的教程也有人寫(xiě)好了:https://blog.csdn.net/xizero00/article/details/77294595
Features
Functionality:
2D real-time
multi-person keypoint detection:
15 or 18 or 25-keypoint body/foot
keypoint estimation. Running time invariant
to number of detected people.
6-keypoint foot
keypoint estimation. Integrated together with the 25-keypoint
body/foot keypoint detector.
2x21-keypoint hand
keypoint estimation. Currently, running time depends on number of detected people.
70-keypoint face
keypoint estimation. Currently, running time depends on number of detected people.
3D real-time
single-person keypoint detection:
3-D triangulation from multiple single views.
Synchronization of Flir cameras handled.
Compatible with Flir/Point Grey cameras, but
provided C++ demos to add your custom input.
Calibration toolbox:
Easy estimation of distortion, intrinsic, and
extrinsic camera parameters.
Single-person tracking for further speed
up or visual smoothing.
Input: Image, video, webcam,
Flir/Point Grey and IP camera. Included C++ demos to add your custom
input.
Output: Basic image + keypoint
display/saving (PNG, JPG, AVI, …), keypoint saving (JSON, XML, YML, …), and/or keypoints as array class.
OS: Ubuntu (14, 16), Windows (8, 10), Mac OSX, Nvidia TX2.
Training and datasets:
OpenPose Training.
Foot dataset website.
Others:
Available: command-line demo, C++ wrapper, and
C++ API.
Python API.
Unity Plugin.
CUDA (Nvidia GPU), OpenCL (AMD GPU), and
CPU-only (no GPU) versions.
模型輸出接口
要想用這個(gè)算法,肯定要找到它輸出的接口啊。以PyOpenPose為例,輸出接口可以在這個(gè)文件中找到:PyOpenPose/scripts/OpLoop.py。這個(gè)是實(shí)時(shí)檢測(cè)的代碼。
使用接口的用例代碼如下:
op = OP.OpenPose((320, 240), (240, 240), (640, 480), “COCO”, OPENPOSE_ROOT + os.sep
- “models” + os.sep, 0, download_heatmaps)
op.detectPose(rgb)
res = op.render(rgb)
上面的是檢測(cè)Pose的,還有detectFace、detectHands等等功能,如果加上這些的話,速度可能會(huì)有點(diǎn)感人,所以只用detectPose的話還好。
寫(xiě)游戲界面和邏輯
游戲界面就隨意發(fā)揮了,資源網(wǎng)上也很多,有個(gè)素材網(wǎng)站叫愛(ài)給網(wǎng),在上面搜索拳皇就會(huì)彈出很多相關(guān)的資源。
游戲邏輯呢,先要清楚是要根據(jù)的動(dòng)作來(lái)觸發(fā)游戲中動(dòng)畫(huà)人物的動(dòng)作,根據(jù)關(guān)節(jié)位置的變化來(lái)觸發(fā),比如的手舉過(guò)頭頂要觸發(fā)某個(gè)動(dòng)作,那么手腕關(guān)節(jié)的Y坐標(biāo)一定會(huì)比頭頂?shù)腨坐標(biāo)要小(左上角為0,0坐標(biāo)),根據(jù)關(guān)節(jié)點(diǎn)的位置變化也可以推斷出其它動(dòng)作。
關(guān)節(jié)點(diǎn)的坐標(biāo)位置分布圖如下:
所有關(guān)節(jié)點(diǎn)的信息會(huì)以一個(gè)張量形式返回,所以只要根據(jù)對(duì)應(yīng)下標(biāo)就能取到對(duì)應(yīng)的坐標(biāo)。
總結(jié)
- 上一篇: 数据标注的困境
- 下一篇: YOLOv3和YOLOv4长篇核心综述(