国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python+OpenCV+OpenPose實現(xiàn)人體姿態(tài)估計(人體關(guān)鍵點檢測)

這篇具有很好參考價值的文章主要介紹了Python+OpenCV+OpenPose實現(xiàn)人體姿態(tài)估計(人體關(guān)鍵點檢測)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1、人體姿態(tài)估計簡介

2、人體姿態(tài)估計數(shù)據(jù)集

3、OpenPose庫

4、實現(xiàn)原理

5、實現(xiàn)神經(jīng)網(wǎng)絡(luò)

6、實現(xiàn)代碼


1、人體姿態(tài)估計簡介

人體姿態(tài)估計(Human Posture Estimation),是通過將圖片中已檢測到的人體關(guān)鍵點正確的聯(lián)系起來,從而估計人體姿態(tài)。

人體關(guān)鍵點通常對應(yīng)人體上有一定自由度的關(guān)節(jié),比如頸、肩、肘、腕、腰、膝、踝等,如下圖。

python 人體關(guān)鍵點檢測的庫,python,開發(fā)語言

python 人體關(guān)鍵點檢測的庫,python,開發(fā)語言

通過對人體關(guān)鍵點在三維空間相對位置的計算,來估計人體當(dāng)前的姿態(tài)。

進(jìn)一步,增加時間序列,看一段時間范圍內(nèi)人體關(guān)鍵點的位置變化,可以更加準(zhǔn)確的檢測姿態(tài),估計目標(biāo)未來時刻姿態(tài),以及做更抽象的人體行為分析,例如判斷一個人是否在打電話等。

python 人體關(guān)鍵點檢測的庫,python,開發(fā)語言

人體姿態(tài)檢測的挑戰(zhàn):

  1. 每張圖片中包含的人的數(shù)量是未知的。
  2. 人與人之間的相互作用是非常復(fù)雜的,比如接觸、遮擋等,這使得聯(lián)合各個肢體,即確定一個人有哪些部分變得困難。
  3. 圖像中人越多,計算復(fù)雜度越大(計算量與人的數(shù)量正相關(guān)),這使得實時檢測變得困難。

2、人體姿態(tài)估計數(shù)據(jù)集

由于缺乏高質(zhì)量的數(shù)據(jù)集,在人體姿勢估計方面進(jìn)展緩慢。在近幾年中,一些具有挑戰(zhàn)性的數(shù)據(jù)集已經(jīng)發(fā)布,這使得研究人員進(jìn)行研發(fā)工作。人體姿態(tài)估計常用數(shù)據(jù)集:

  • COCO Keypoints challenge?
  • MPII Human Pose Dataset
  • VGG Pose Dataset
  • CMU Panoptic Dataset(本案例所用數(shù)據(jù)集)

3、OpenPose庫

python 人體關(guān)鍵點檢測的庫,python,開發(fā)語言

?OpenPose人體姿態(tài)識別項目是美國卡耐基梅隆大學(xué)(CMU)基于卷積神經(jīng)網(wǎng)絡(luò)和監(jiān)督學(xué)習(xí)并以Caffe為框架開發(fā)的開源庫??梢詫崿F(xiàn)人體動作、面部表情、手指運動等姿態(tài)估計。適用于單人和多人,具有極好的魯棒性。是世界上首個基于深度學(xué)習(xí)的實時多人二維姿態(tài)估計應(yīng)用,基于它的實例如雨后春筍般涌現(xiàn)。

其理論基礎(chǔ)來自Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields ,是CVPR 2017的一篇論文,作者是來自CMU感知計算實驗室的曹哲(http://people.eecs.berkeley.edu/\~zhecao/#top),Tomas Simon,Shih-En Wei,Yaser Sheikh?。

人體姿態(tài)估計技術(shù)在體育健身、動作采集、3D試衣、輿情監(jiān)測等領(lǐng)域具有廣闊的應(yīng)用前景,人們更加熟悉的應(yīng)用就是抖音尬舞機(jī)。

python 人體關(guān)鍵點檢測的庫,python,開發(fā)語言

OpenPose項目Github鏈接:https://github.com/CMU-Perceptual-Computing-Lab/openpose

4、實現(xiàn)原理

python 人體關(guān)鍵點檢測的庫,python,開發(fā)語言

  1. 輸入一幅圖像,經(jīng)過卷積網(wǎng)絡(luò)提取特征,得到一組特征圖,然后分成兩個岔路,分別使用 CNN網(wǎng)絡(luò)提取Part Confidence Maps 和 Part Affinity Fields;
  2. 得到這兩個信息后,我們使用圖論中的 Bipartite Matching(偶匹配) 求出Part Association,將同一個人的關(guān)節(jié)點連接起來,由于PAF自身的矢量性,使得生成的偶匹配很正確,最終合并為一個人的整體骨架;
  3. 最后基于PAFs求Multi-Person Parsing—>把Multi-person parsing問題轉(zhuǎn)換成graphs問題—>Hungarian Algorithm(匈牙利算法)

(匈牙利算法是部圖匹配最常見的算法,該算法的核心就是尋找增廣路徑,它是一種用增廣路徑求二分圖最大匹配的算法。)

5、實現(xiàn)神經(jīng)網(wǎng)絡(luò)

python 人體關(guān)鍵點檢測的庫,python,開發(fā)語言

階段一:VGGNet的前10層用于為輸入圖像創(chuàng)建特征映射。

階段二:使用2分支多階段CNN,其中第一分支預(yù)測身體部位位置(例如肘部,膝部等)的一組2D置信度圖(S)。 如下圖所示,給出關(guān)鍵點的置信度圖和親和力圖 - 左肩。

python 人體關(guān)鍵點檢測的庫,python,開發(fā)語言

第二分支預(yù)測一組部分親和度的2D矢量場(L),其編碼部分之間的關(guān)聯(lián)度。 如下圖所示,顯示頸部和左肩之間的部分親和力。

python 人體關(guān)鍵點檢測的庫,python,開發(fā)語言

階段三:?通過貪心推理解析置信度和親和力圖,對圖像中的所有人生成2D關(guān)鍵點。

6、實現(xiàn)代碼

```python import cv2 as cv import numpy as np import argparse

parser = argparse.ArgumentParser() parser.addargument('--input', help='Path to image or video. Skip to capture frames from camera') parser.addargument('--thr', default=0.2, type=float, help='Threshold value for pose parts heat map') parser.addargument('--width', default=368, type=int, help='Resize input to specific width.') parser.addargument('--height', default=368, type=int, help='Resize input to specific height.')

args = parser.parse_args()

BODY_PARTS = { "Nose": 0, "Neck": 1, "RShoulder": 2, "RElbow": 3, "RWrist": 4, "LShoulder": 5, "LElbow": 6, "LWrist": 7, "RHip": 8, "RKnee": 9, "RAnkle": 10, "LHip": 11, "LKnee": 12, "LAnkle": 13, "REye": 14, "LEye": 15, "REar": 16, "LEar": 17, "Background": 18 }

POSE_PAIRS = [ ["Neck", "RShoulder"], ["Neck", "LShoulder"], ["RShoulder", "RElbow"], ["RElbow", "RWrist"], ["LShoulder", "LElbow"], ["LElbow", "LWrist"], ["Neck", "RHip"], ["RHip", "RKnee"], ["RKnee", "RAnkle"], ["Neck", "LHip"], ["LHip", "LKnee"], ["LKnee", "LAnkle"], ["Neck", "Nose"], ["Nose", "REye"], ["REye", "REar"], ["Nose", "LEye"], ["LEye", "LEar"] ]

inWidth = args.width inHeight = args.height

net = cv.dnn.readNetFromTensorflow("graph_opt.pb")

cap = cv.VideoCapture(args.input if args.input else 0)

while cv.waitKey(1) < 0: hasFrame, frame = cap.read() if not hasFrame: cv.waitKey() break

frameWidth = frame.shape[1]
frameHeight = frame.shape[0]

net.setInput(cv.dnn.blobFromImage(frame, 1.0, (inWidth, inHeight), (127.5, 127.5, 127.5), swapRB=True, crop=False))
out = net.forward()
out = out[:, :19, :, :]  # MobileNet output [1, 57, -1, -1], we only need the first 19 elements

assert(len(BODY_PARTS) == out.shape[1])

points = []
for i in range(len(BODY_PARTS)):
    # Slice heatmap of corresponging body's part.
    heatMap = out[0, i, :, :]

    # Originally, we try to find all the local maximums. To simplify a sample
    # we just find a global one. However only a single pose at the same time
    # could be detected this way.
    _, conf, _, point = cv.minMaxLoc(heatMap)
    x = (frameWidth * point[0]) / out.shape[3]
    y = (frameHeight * point[1]) / out.shape[2]
    # Add a point if it's confidence is higher than threshold.
    points.append((int(x), int(y)) if conf > args.thr else None)

for pair in POSE_PAIRS:
    partFrom = pair[0]
    partTo = pair[1]
    assert(partFrom in BODY_PARTS)
    assert(partTo in BODY_PARTS)

    idFrom = BODY_PARTS[partFrom]
    idTo = BODY_PARTS[partTo]

    if points[idFrom] and points[idTo]:
        cv.line(frame, points[idFrom], points[idTo], (0, 255, 0), 3)
        cv.ellipse(frame, points[idFrom], (3, 3), 0, 0, 360, (0, 0, 255), cv.FILLED)
        cv.ellipse(frame, points[idTo], (3, 3), 0, 0, 360, (0, 0, 255), cv.FILLED)

t, _ = net.getPerfProfile()
freq = cv.getTickFrequency() / 1000
cv.putText(frame, '%.2fms' % (t / freq), (10, 20), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0))

cv.imshow('OpenPose using OpenCV', frame)

```

本項目實現(xiàn)代碼及模型參見網(wǎng)址:https://download.csdn.net/download/m0_38106923/11265524

?關(guān)注公眾號,發(fā)送關(guān)鍵字:關(guān)鍵點檢測,獲取資源。文章來源地址http://www.zghlxwxcb.cn/news/detail-766464.html

到了這里,關(guān)于Python+OpenCV+OpenPose實現(xiàn)人體姿態(tài)估計(人體關(guān)鍵點檢測)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • YOLOv5姿態(tài)估計:HRnet實時檢測人體關(guān)鍵點

    YOLOv5姿態(tài)估計:HRnet實時檢測人體關(guān)鍵點

    前言: Hello大家好,我是Dream。 今天來學(xué)習(xí)一下 利用YOLOv5進(jìn)行姿態(tài)估計,HRnet與SimDR檢測圖片、視頻以及攝像頭中的人體關(guān)鍵點 ,歡迎大家一起前來探討學(xué)習(xí)~ 首先需要我們利用Pycharm直接克隆github中的姿態(tài)估計原工程文件,如果不知道怎樣在本地克隆Pycharm,可以接著往下看,

    2024年01月17日
    瀏覽(27)
  • 一文openpose姿態(tài)估計

    一文openpose姿態(tài)估計

    如下是coco數(shù)據(jù)集的各個點,不同數(shù)據(jù)集有不同 舉例: 第一步得到框以后,對單個框做一個回歸任務(wù),例如:將單人圖裁剪出來,輸入17個關(guān)鍵點的網(wǎng)絡(luò)模型,得到頭,肩等位置,注意這里的位置如果要想準(zhǔn)確,得是相對位置。 什么是相對位置:相對位置就是頭的位置,針對

    2024年02月11日
    瀏覽(12)
  • MediaPipe人體姿態(tài)、手指關(guān)鍵點檢測

    MediaPipe人體姿態(tài)、手指關(guān)鍵點檢測

    Mediapipe是google的一個開源項目,用于構(gòu)建機(jī)器學(xué)習(xí)管道 提供了16個預(yù)訓(xùn)練模型的案例:人臉檢測、Face Mesh、虹膜、手、姿態(tài)、人體、人物分割、頭發(fā)分割、目標(biāo)檢測、Box Tracking、Instant Motion Tracking、3D目標(biāo)檢測、特征匹配、AutoFlip、MediaSequence、YouTube-8M 肢體識別本質(zhì)上還是分類

    2024年02月08日
    瀏覽(28)
  • WinUI(WASDK)使用MediaPipe檢查人體姿態(tài)關(guān)鍵點

    WinUI(WASDK)使用MediaPipe檢查人體姿態(tài)關(guān)鍵點

    之前有用這個MediaPipe.NET .NET包裝庫搞了手勢識別,豐富了稚暉君的ElectronBot機(jī)器人的第三方上位機(jī)軟件的功能,MediaPipe作為谷歌開源的機(jī)器視覺庫,功能很豐富了,于是就開始整活了,來體驗了一把人體姿態(tài)關(guān)鍵點檢測。 這個框架是微軟最新的應(yīng)用開發(fā)框架,我是用來開發(fā)程

    2024年02月15日
    瀏覽(88)
  • 基于YOLOV7的openpose人體姿態(tài)檢測識別,F(xiàn)PS可以達(dá)到“較高”的效果

    基于YOLOV7的openpose人體姿態(tài)檢測識別,F(xiàn)PS可以達(dá)到“較高”的效果

    前不久yolov7(原yolov4團(tuán)隊)在yolov6(美團(tuán))開源不到兩周的時間也更新了, 如下圖所示,yolov7效果比前面的版本確實牛逼,在精度相同的情況下,速度上面提升了一大截,但是這是在比較好的設(shè)備上面; YOLOv7 的發(fā)展方向與當(dāng)前主流的實時目標(biāo)檢測器不同,研究團(tuán)隊希望它能

    2024年02月05日
    瀏覽(23)
  • 人體姿態(tài)估計和手部姿態(tài)估計任務(wù)中神經(jīng)網(wǎng)絡(luò)的選擇

    一、 人體姿態(tài)估計 任務(wù)適合使用 卷積神經(jīng)網(wǎng)絡(luò)(CNN) 來解決。 ????????人體姿態(tài)估計任務(wù)的目標(biāo)是從給定的圖像或視頻中推斷出人體的關(guān)節(jié)位置和姿勢。這是一個具有挑戰(zhàn)性的計算機(jī)視覺任務(wù),而CNN在處理圖像數(shù)據(jù)方面表現(xiàn)出色。 ????????使用CNN進(jìn)行人體姿態(tài)估計

    2024年02月05日
    瀏覽(24)
  • 在 PyTorch 中使用關(guān)鍵點 RCNN 進(jìn)行人體姿勢估計--附源碼

    人體姿態(tài)估計是計算機(jī)視覺領(lǐng)域的一個重要研究領(lǐng)域。它涉及估計人體上的獨特點,也稱為 關(guān)鍵點 。在這篇博文中,我們將討論一種在包含人類的圖像上查找關(guān)鍵點的算法,稱為 Keypoint-RCNN 。該代碼是使用 Pytorch 使用 Torchvision 庫編寫的。 假設(shè)您想要建立一名私人健身教練,

    2024年02月12日
    瀏覽(16)
  • 基于python使用OpenCV和MediaPipe通過人體姿態(tài)檢測實現(xiàn)對標(biāo)準(zhǔn)的仰臥起坐數(shù)量的計量(三)

    基于python使用OpenCV和MediaPipe通過人體姿態(tài)檢測實現(xiàn)對標(biāo)準(zhǔn)的仰臥起坐數(shù)量的計量(三)

    先來看一下main.py的代碼 import?cv2 import?numpy?as?np import?PoseModule?as?pm ? cap?=?cv2.VideoCapture(\\\'10.mp4\\\') detector?=?pm.poseDetector() count?=?0 dir?=?0 ? while?True: ????success,?img?=?cap.read() ????img?=?cv2.resize(img,?(400,?300)) ????img?=?detector.findPose(img,?False) ????lmList?=?detector.fi

    2024年04月16日
    瀏覽(22)
  • 3D人體姿態(tài)估計

    3D人體姿態(tài)估計

    3D人體姿態(tài)估計是指通過算法對輸入的圖像或視頻進(jìn)行分析,推斷出人體的三維姿態(tài)信息。該技術(shù)可以應(yīng)用于許多領(lǐng)域,如虛擬現(xiàn)實、運動分析、人機(jī)交互等。 1. 算法原理: 3D人體姿態(tài)估計利用深度學(xué)習(xí)模型作為算法的核心,通過網(wǎng)絡(luò)學(xué)習(xí)人體姿態(tài)的表示和映射關(guān)系。該算法

    2024年02月03日
    瀏覽(13)
  • Python Opencv實踐 - 人體姿態(tài)檢測

    Python Opencv實踐 - 人體姿態(tài)檢測

    ? ? ? ? 本文仍然使用mediapipe做練手項目,封裝一個PoseDetector類用作基礎(chǔ)姿態(tài)檢測類。 ? ? ? ? mediapipe中人體姿態(tài)檢測的結(jié)果和手部跟蹤檢測的結(jié)果是類似的,都是輸出一些定位點,各個定位點的id和對應(yīng)人體的位置如下圖所示: ? ? ? ? 關(guān)于mediapipe的pose解決方案類更詳細(xì)

    2024年02月03日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包