最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Python中通過機器學(xué)習(xí)實現(xiàn)人體姿勢估計

 更新時間:2021年12月29日 11:17:10   作者:woshicver  
姿態(tài)檢測是計算機視覺領(lǐng)域的一個活躍研究領(lǐng)域。這篇文章將為大家介紹在Python中如何利用機器學(xué)習(xí)進行人體姿勢估計,感興趣的小伙伴可以了解一下

姿態(tài)檢測是計算機視覺領(lǐng)域的一個活躍研究領(lǐng)域。你可以從字面上找到數(shù)百篇研究論文和幾個試圖解決姿勢檢測問題的模型。

之所以有如此多的機器學(xué)習(xí)愛好者被姿勢估計所吸引,是因為它的應(yīng)用范圍很廣,而且實用性很強。

在本文中,我們將介紹一種使用機器學(xué)習(xí)和 Python 中一些非常有用的庫進行姿勢檢測和估計的應(yīng)用。

什么是姿態(tài)估計?

姿態(tài)估計是一種跟蹤人或物體運動的計算機視覺技術(shù)。這通常通過查找給定對象的關(guān)鍵點位置來執(zhí)行?;谶@些關(guān)鍵點,我們可以比較各種動作和姿勢并得出見解。姿態(tài)估計在增強現(xiàn)實、動畫、游戲和機器人領(lǐng)域得到了積極的應(yīng)用。

目前有幾種模型可以執(zhí)行姿態(tài)估計。下面給出了一些姿勢估計的方法:

1.Open pose

2.Pose net

3.Blaze pose

4.Deep Pose

5.Dense pose

6.Deep cut

選擇任何一種模型而不是另一種可能完全取決于應(yīng)用程序。此外,運行時間、模型大小和易于實現(xiàn)等因素也可能是選擇特定模型的各種原因。因此,最好從一開始就了解你的要求并相應(yīng)地選擇模型。

在本文中,我們將使用 Blaze pose檢測人體姿勢并提取關(guān)鍵點。該模型可以通過一個非常有用的庫輕松實現(xiàn),即眾所周知的Media Pipe。

Media Pipe——Media Pipe是一個開源的跨平臺框架,用于構(gòu)建多模型機器學(xué)習(xí)管道。它可用于實現(xiàn)人臉檢測、多手跟蹤、頭發(fā)分割、對象檢測和跟蹤等前沿模型。

Blaze Pose Detector ——大部分姿態(tài)檢測依賴于由 17 個關(guān)鍵點組成的 COCO 拓撲結(jié)構(gòu),而Blaze姿態(tài)檢測器預(yù)測 33 個人體關(guān)鍵點,包括軀干、手臂、腿部和面部。包含更多關(guān)鍵點對于特定領(lǐng)域姿勢估計模型的成功應(yīng)用是必要的,例如手、臉和腳。每個關(guān)鍵點都使用三個自由度以及可見性分數(shù)進行預(yù)測。Blaze Pose是亞毫秒模型,可用于實時應(yīng)用,其精度優(yōu)于大多數(shù)現(xiàn)有模型。該模型有兩個版本:Blazepose lite 和 Blazepose full,以提供速度和準確性之間的平衡。

Blaze 姿勢提供多種應(yīng)用程序,包括健身和瑜伽追蹤器。這些應(yīng)用程序可以通過使用一個額外的分類器來實現(xiàn),比如我們將在本文中構(gòu)建的分類器。

你可以在此處了解有關(guān)Blaze Pose Detector的更多信息: https://ai.googleblog.com/2020/08/on-device-real-time-body-pose-tracking.html

2D 與 3D 姿態(tài)估計

姿勢估計可以在 2D 或 3D 中完成。2D 姿態(tài)估計通過像素值預(yù)測圖像中的關(guān)鍵點。而3D姿態(tài)估計是指預(yù)測關(guān)鍵點的三維空間排列作為其輸出。

為姿態(tài)估計準備數(shù)據(jù)集

我們在上一節(jié)中了解到,人體姿勢的關(guān)鍵點可以用來比較不同的姿勢。在本節(jié)中,我們將使用Media Pipe庫本身來準備數(shù)據(jù)集。我們將拍攝兩個瑜伽姿勢的圖像,從中提取關(guān)鍵點并將它們存儲在一個 CSV 文件中。

你可以通過此鏈接從 Kaggle 下載數(shù)據(jù)集

該數(shù)據(jù)集包含 5 個瑜伽姿勢,但是,在本文中,我只采用了兩個姿勢。如果需要,你可以使用所有這些,程序?qū)⒈3植蛔儭?/p>

import mediapipe as mp
import cv2
import time
import numpy as np
import pandas as pd
import os
mpPose = mp.solutions.pose
pose = mpPose.Pose()
mpDraw = mp.solutions.drawing_utils # For drawing keypoints
points = mpPose.PoseLandmark # Landmarks
path = "DATASET/TRAIN/plank" # enter dataset path
data = []
for p in points:
        x = str(p)[13:]
        data.append(x + "_x")
        data.append(x + "_y")
        data.append(x + "_z")
        data.append(x + "_vis")
data = pd.DataFrame(columns = data) # Empty dataset

在上面的代碼片段中,我們首先導(dǎo)入了有助于創(chuàng)建數(shù)據(jù)集的必要庫。然后在接下來的四行中,我們將導(dǎo)入提取關(guān)鍵點所需的模塊及其繪制工具。

接下來,我們創(chuàng)建一個空的 Pandas 數(shù)據(jù)框并輸入列。這里的列包括由Blaze姿態(tài)檢測器檢測到的 33 個關(guān)鍵點。每個關(guān)鍵點包含四個屬性,即關(guān)鍵點的 x 和 y 坐標(biāo)(從 0 到 1 歸一化),z 坐標(biāo)表示以臀部為原點且與 x 的比例相同的地標(biāo)深度,最后是可見度分數(shù)??梢娦苑謹?shù)表示地標(biāo)在圖像中可見或不可見的概率。

count = 0
 
for img in os.listdir(path):
 
        temp = []
 
        img = cv2.imread(path + "/" + img)
 
        imageWidth, imageHeight = img.shape[:2]
 
        imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
 
        blackie = np.zeros(img.shape) # Blank image
 
        results = pose.process(imgRGB)
 
        if results.pose_landmarks:
 
                # mpDraw.draw_landmarks(img, results.pose_landmarks, mpPose.POSE_CONNECTIONS) #draw landmarks on image
 
                mpDraw.draw_landmarks(blackie, results.pose_landmarks, mpPose.POSE_CONNECTIONS) # draw landmarks on blackie
 
                landmarks = results.pose_landmarks.landmark
 
                for i,j in zip(points,landmarks):
 
                        temp = temp + [j.x, j.y, j.z, j.visibility]
 
                data.loc[count] = temp
 
                count +=1
 
        cv2.imshow("Image", img)
 
        cv2.imshow("blackie",blackie)
 
        cv2.waitKey(100)
 
data.to_csv("dataset3.csv") # save the data as a csv file

在上面的代碼中,我們單獨遍歷姿勢圖像,使用Blaze姿勢模型提取關(guān)鍵點并將它們存儲在臨時數(shù)組“temp”中。

迭代完成后,我們將這個臨時數(shù)組作為新記錄添加到我們的數(shù)據(jù)集中。你還可以使用Media Pipe本身中的繪圖實用程序來查看這些地標(biāo)。

在上面的代碼中,我在圖像以及空白圖像“blackie”上繪制了這些地標(biāo),以僅關(guān)注Blaze姿勢模型的結(jié)果??瞻讏D像“blackie”的形狀與給定圖像的形狀相同。

應(yīng)該注意的一件事是,Blaze姿態(tài)模型采用 RGB 圖像而不是 BGR(由 OpenCV 讀?。?/p>

獲得所有圖像的關(guān)鍵點后,我們必須添加一個目標(biāo)值,作為機器學(xué)習(xí)模型的標(biāo)簽。你可以將第一個姿勢的目標(biāo)值設(shè)為 0,將另一個設(shè)為 1。之后,我們可以將這些數(shù)據(jù)保存到 CSV 文件中,我們將在后續(xù)步驟中使用該文件創(chuàng)建機器學(xué)習(xí)模型。

你可以從上圖中觀察數(shù)據(jù)集的外觀。

創(chuàng)建姿勢估計模型

現(xiàn)在我們已經(jīng)創(chuàng)建了我們的數(shù)據(jù)集,我們只需要選擇一種機器學(xué)習(xí)算法來對姿勢進行分類。在這一步中,我們將拍攝一張圖像,運行 blaze 姿勢模型(我們之前用于創(chuàng)建數(shù)據(jù)集)以獲取該圖像中人物的關(guān)鍵點,然后在該測試用例上運行我們的模型。

該模型有望以高置信度給出正確的結(jié)果。在本文中,我將使用 sklearn 庫中的 SVC(支持向量分類器)來執(zhí)行分類任務(wù)。

from sklearn.svm import SVC
data = pd.read_csv("dataset3.csv")
X,Y = data.iloc[:,:132],data['target']
model = SVC(kernel = 'poly')
model.fit(X,Y)
mpPose = mp.solutions.pose
pose = mpPose.Pose()
mpDraw = mp.solutions.drawing_utils
path = "enter image path"
img = cv2.imread(path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = pose.process(imgRGB)
if results.pose_landmarks:
        landmarks = results.pose_landmarks.landmark
        for j in landmarks:
                temp = temp + [j.x, j.y, j.z, j.visibility]
        y = model.predict([temp])
        if y == 0:
            asan = "plank"
        else:
            asan = "goddess"
        print(asan)
        cv2.putText(img, asan, (50,50), cv2.FONT_HERSHEY_SIMPLEX,1,(255,255,0),3)
        cv2.imshow("image",img)

在上面的代碼行中,我們首先從 sklearn 庫中導(dǎo)入了 SVC(支持向量分類器)。我們已經(jīng)用目標(biāo)變量作為 Y 標(biāo)簽訓(xùn)練了我們之前在 SVC 上構(gòu)建的數(shù)據(jù)集。

然后我們讀取輸入圖像并提取關(guān)鍵點,就像我們在創(chuàng)建數(shù)據(jù)集時所做的那樣。

最后,我們輸入臨時變量并使用模型進行預(yù)測?,F(xiàn)在可以使用簡單的 if-else 條件檢測姿勢。

模型結(jié)果

從上面的圖像中,你可以觀察到模型已經(jīng)正確地對姿勢進行了分類。你還可以在右側(cè)看到Blaze姿勢模型檢測到的姿勢。

在第一張圖片中,如果你仔細觀察,一些關(guān)鍵點是不可見的,但姿勢分類是正確的。由于Blaze姿態(tài)模型給出的關(guān)鍵點屬性的可見性,這是可能的。

結(jié)論

姿勢檢測是機器學(xué)習(xí)領(lǐng)域的一個活躍研究領(lǐng)域,并提供了多種實際應(yīng)用。在本文中,我們嘗試開發(fā)一個這樣的應(yīng)用程序,并通過姿勢檢測來解決問題。

我們了解了姿勢檢測和幾個可用于姿勢檢測的模型。出于我們的目的選擇了 blaze 姿勢模型,并了解了它相對于其他模型的優(yōu)缺點。

最后,我們使用 sklearn 庫中的支持向量分類器構(gòu)建了一個分類器來對瑜伽姿勢進行分類。為此,我們還構(gòu)建了自己的數(shù)據(jù)集,可以使用更多圖像進一步擴展。

你也可以嘗試其他機器學(xué)習(xí)算法而不是 SVM,并相應(yīng)地比較結(jié)果。?

到此這篇關(guān)于在Python中通過機器學(xué)習(xí)實現(xiàn)人體姿勢估計的文章就介紹到這了,更多相關(guān)Python機器學(xué)習(xí) 人體姿勢估計內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python正則表達式re.search()用法詳解

    Python正則表達式re.search()用法詳解

    re是Python中最常見的正則表達式模塊,常用方法包括compile,match,findall,finditer,search,split,sub等,下面這篇文章主要給大家介紹了關(guān)于Python正則表達式re.search()用法詳解的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • python入門基礎(chǔ)之用戶輸入與模塊初認識

    python入門基礎(chǔ)之用戶輸入與模塊初認識

    Python的強大之處在于他有非常豐富和強大的標(biāo)準庫和第三方庫,幾乎你想實現(xiàn)的任何功能都有相應(yīng)的Python庫支持。下面通過本文給大家介紹python入門基礎(chǔ)之用戶輸入與模塊初認識,一起看看吧
    2016-11-11
  • 解決pycharm每次新建項目都要重新安裝一些第三方庫的問題

    解決pycharm每次新建項目都要重新安裝一些第三方庫的問題

    今天小編就為大家分享一篇解決pycharm每次新建項目都要重新安裝一些第三方庫的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python實現(xiàn)單詞翻譯功能

    Python實現(xiàn)單詞翻譯功能

    這篇文章主要為大家詳細介紹了Python實現(xiàn)單詞翻譯功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • django認證系統(tǒng)實現(xiàn)自定義權(quán)限管理的方法

    django認證系統(tǒng)實現(xiàn)自定義權(quán)限管理的方法

    今天小編就為大家分享一篇django認證系統(tǒng)實現(xiàn)自定義權(quán)限管理的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python中np.random.permutation函數(shù)實例詳解

    python中np.random.permutation函數(shù)實例詳解

    np.random.permutation是numpy中的一個函數(shù),它可以將一個數(shù)組中的元素隨機打亂,返回一個打亂后的新數(shù)組,下面這篇文章主要給大家介紹了關(guān)于python中np.random.permutation函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 前女友發(fā)來加密的

    前女友發(fā)來加密的"520快樂.pdf",我用python破解開之后,卻發(fā)現(xiàn)

    520收到前女友發(fā)來的加密PDF文件,說打開之后有驚喜,難道是要復(fù)合?我用python破解開之后,卻發(fā)現(xiàn)...python干貨+劇情滿滿收藏收藏
    2021-08-08
  • Pytorch 使用CNN圖像分類的實現(xiàn)

    Pytorch 使用CNN圖像分類的實現(xiàn)

    這篇文章主要介紹了Pytorch 使用CNN圖像分類的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 利用Python正則表達式過濾敏感詞的方法

    利用Python正則表達式過濾敏感詞的方法

    今天小編就為大家分享一篇利用Python正則表達式過濾敏感詞的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python圖像處理之幾何變換

    Python圖像處理之幾何變換

    這篇文章將詳細講解圖像幾何變換,包括圖像平移、圖像縮放和圖像旋轉(zhuǎn)。文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-01-01

最新評論

吉水县| 旅游| 鲁甸县| 三门县| 丰城市| 抚州市| 南康市| 兖州市| 临沂市| 屏山县| 延长县| 日土县| 枣阳市| 随州市| 辉南县| 新竹市| 丰顺县| 无为县| 昆山市| 杂多县| 满洲里市| 辽中县| 仁布县| 蓬莱市| 青河县| 莱阳市| 新和县| 留坝县| 林甸县| 名山县| 莱芜市| 宜州市| 淄博市| 巧家县| 邢台县| 如东县| 罗山县| 镶黄旗| 石台县| 宜昌市| 榆社县|