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

基于 pytorch-openpose 實現(xiàn) “多目標(biāo)” 人體姿態(tài)估計

這篇具有很好參考價值的文章主要介紹了基于 pytorch-openpose 實現(xiàn) “多目標(biāo)” 人體姿態(tài)估計。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前言

還記得上次通過 MediaPipe 估計人體姿態(tài)關(guān)鍵點(diǎn)驅(qū)動 3D 角色模型,雖然節(jié)省了動作 K 幀時間,但是網(wǎng)上還有一種似乎更方便的方法。MagicAnimate 就是其一,說是只要提供一張人物圖片和一段動作視頻 (舞蹈武術(shù)等),就可以完成圖片人物轉(zhuǎn)視頻。

于是我就去官網(wǎng)體驗了一下,發(fā)現(xiàn)動作的視頻長度不能超過 5 秒,當(dāng)然,如果說要整長視頻可以切多段處理再合成解決。主要的還是視頻需要那種背景相對較純的,不然提交表單一直報錯,還有他也不能處理畫面內(nèi)多人物的姿態(tài)估計。

基于 pytorch-openpose 實現(xiàn) “多目標(biāo)” 人體姿態(tài)估計,pytorch,人工智能,python

多目標(biāo)人體姿態(tài)估計

為什么我要弄多目標(biāo),其實是我有次拿了一舞團(tuán)的視頻用 MediaPipe 檢測,發(fā)現(xiàn)一個畫面中只能采集到一個人的動作數(shù)據(jù)。雖然齊舞可能就一套動作,其他的角色模型可以復(fù)制粘貼,但是有些編舞為了好看,伴舞也會根據(jù)節(jié)奏作不同的變化。所以說對于我用來采集舞蹈數(shù)據(jù),這個很重要了,當(dāng)然他也可以用在多人互動的 AR 游戲,或用在同時培訓(xùn)多人的動作規(guī)范檢測等等場景。

要從單一人體檢測到多人體姿態(tài)估計,開始我是打算用 YOLO 對畫面中的多 Person 區(qū)塊讀出來,然后再將這些方塊遍歷交給 MediaPipe 對指定區(qū)域作人物動作節(jié)點(diǎn)識別。但是最后發(fā)現(xiàn)有現(xiàn)成的算法,就是 pytorch-openpose,所以果斷先用這個來體驗了一下。

基于 pytorch-openpose 實現(xiàn) “多目標(biāo)” 人體姿態(tài)估計,pytorch,人工智能,python

pytorch-openpose 簡介

PyTorch-OpenPose 是一個基于 PyTorch 的開源庫,它實現(xiàn)了 OpenPose 的功能,可以進(jìn)行人的面部表情、軀干和四肢甚至手指的跟蹤。它不僅適用于單人也適用于多人,同時具有較好的魯棒性。要運(yùn)行 PyTorch-OpenPose,需要安裝支持 CUDA 的 PyTorch,以下例子有使用作者提供的預(yù)訓(xùn)練模型,通過拆分視頻幀,繪制多人物動作線條保存圖片,最后將圖片合成為視頻。

基于 pytorch-openpose 實現(xiàn) “多目標(biāo)” 人體姿態(tài)估計,pytorch,人工智能,python

環(huán)境

  • scikit-image
  • opencv-python
  • scipy
  • matplotlib
  • numpy

基于 pytorch-openpose 實現(xiàn) “多目標(biāo)” 人體姿態(tài)估計,pytorch,人工智能,python文章來源地址http://www.zghlxwxcb.cn/news/detail-823812.html

編碼

幀拆分繪制

import cv2
import matplotlib.pyplot as plt
import copy
import numpy as np
import torch
from src import model
from src import util
from src.body import Body
from src.hand import Hand

body_estimation = Body('model/body_pose_model.pth')
hand_estimation = Hand('model/hand_pose_model.pth')

print(f"Torch device: {torch.cuda.get_device_name()}")

cap = cv2.VideoCapture("D:/3code/6pytorch/opencv_demo/12_open_pose/11.mp4")
cap.set(3, 640)
cap.set(4, 480)

indices = 1
while True:
    ret, oriImg = cap.read()
    if not ret:
        break

    candidate, subset = body_estimation(oriImg)

    canvas = copy.deepcopy(oriImg)
    canvas = util.draw_bodypose(canvas, candidate, subset)

    # detect hand
    hands_list = util.handDetect(candidate, subset, oriImg)

    all_hand_peaks = []
    for x, y, w, is_left in hands_list:
        peaks = hand_estimation(oriImg[y:y+w, x:x+w, :])
        peaks[:, 0] = np.where(peaks[:, 0]==0, peaks[:, 0], peaks[:, 0]+x)
        peaks[:, 1] = np.where(peaks[:, 1]==0, peaks[:, 1], peaks[:, 1]+y)
        all_hand_peaks.append(peaks)

    canvas = util.draw_handpose(canvas, all_hand_peaks)

    cv2.imwrite('image_out/img_{}.jpg'.format(indices), canvas)
    indices += 1

    print("images:", indices)

    # cv2.imshow('demo', canvas)#一個窗口用以顯示原視頻
    # if cv2.waitKey(1) & 0xFF == ord('q'):
    #     break

cap.release()
cv2.destroyAllWindows()

視頻合成

from pathlib import Path
import cv2
import os

# 將視頻video_path分割成圖片和音頻文件,保存到save_path文件夾中
def video2mp3_img(video_path, save_path, audio_path):
    def video_split(video_path, save_path):
        if not os.path.exists(save_path):
            os.makedirs(save_path)
        cap = cv2.VideoCapture(video_path)
        i = 0
        while True:
            ret, frame = cap.read()
            if ret:
                cv2.imwrite(save_path + '/' + str(i) + '.jpg', frame)
                i += 1
            else:
                break
        cap.release()

    if not os.path.exists(save_path):
        os.makedirs(save_path)

    # 視頻分割
    video_split(video_path, save_path)

    # 視頻轉(zhuǎn)音頻
    # os.system("ffmpeg -i {} -vn -acodec copy {}/audio.mp3".format(video_path, audio_path))
    os.system("ffmpeg -i {} -q:a 0 -map a {}/audio.mp3".format(video_path, audio_path))
    # 音頻轉(zhuǎn)wav
    # os.system("ffmpeg -i {}/audio.mp3 {}/audio.wav".format(save_path, save_path))

# 將video_imgout文件夾中的圖片合成視頻并且添加音頻文件video_img/audio.mp3
def img2mp4(image_out, save_name):

    BASE_PATH = os.path.dirname(__file__)
    # 讀取img size
    img = cv2.imread("{}/img_1.jpg".format(image_out))

    imgInfo = img.shape
    size = (imgInfo[1], imgInfo[0])

    files = []
    for dirpath, dirnames, filenames in os.walk(image_out):
        for filename in filenames:
            fileName = Path(os.path.join(dirpath, filename))
            files.append(os.path.join(dirpath, filename))

    files = [file.replace('\\', '/') for file in files]
    files.sort(key=lambda x: int(x.split('/')[-1].split('.')[0].split('_')[-1]))

    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    videoWrite = cv2.VideoWriter(f'videos/{save_name}.mp4', fourcc, 25, size)  # 寫入對象 1 file name  3: 視頻幀率

    for i in files:
        img = cv2.imread(str(i))
        videoWrite.write(img)

    print(f'videos/{save_name}.mp4')

    # 將video_img中的音頻文件添加到視頻中
    # os.system("ffmpeg -i {}/videos/{}.mp4 -c:v copy -c:a aac -strict experimental {}/videos/{}.mp4".format(BASE_PATH, save_name, BASE_PATH, save_name))

if __name__ == '__main__':
    BASE = os.path.dirname(__file__)
    video_path = os.path.join(BASE, "videos/yangguo.mp4")  # 視頻路徑
    save_path = os.path.join(BASE, "video_img")            # 拆解視頻保存路徑
    audio_path = os.path.join(BASE, "audio")               # 分離音頻保存路徑

    # 視頻  ==> imgs
    # video2mp3_img(video_path, save_path, audio_path)

    # # imgs ==> 視頻
    img2mp4("image_out", save_name='ldh')

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

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

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

相關(guān)文章

  • 基于 Python 和深度學(xué)習(xí)技術(shù)實現(xiàn)的人體姿態(tài)識別

    基于 Python 和深度學(xué)習(xí)技術(shù)實現(xiàn)的人體姿態(tài)識別

    人體姿態(tài)識別是計算機(jī)視覺領(lǐng)域的一個重要應(yīng)用,它通過識別人體的關(guān)鍵點(diǎn)和關(guān)節(jié)位置,能夠準(zhǔn)確地判斷人體的姿態(tài)和動作。這項技術(shù)可以應(yīng)用在很多領(lǐng)域,比如運(yùn)動訓(xùn)練、醫(yī)療康復(fù)、安保監(jiān)控等,為人們的生活和工作帶來了很大的便利和效益。 在本文中,我們將介紹一種基

    2024年02月07日
    瀏覽(30)
  • 基于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)
  • 基于視頻的人體姿態(tài)檢測

    基于視頻的人體姿態(tài)檢測 設(shè)計目的和要求 1.根據(jù)已知要求分析視頻監(jiān)控中行人站立和躺臥姿態(tài)檢測的處理流程,確定視頻監(jiān)中行人的檢測設(shè)計的方法,畫出流程圖,編寫實現(xiàn)程序,并進(jìn)行調(diào)試,錄制實驗視頻,驗證檢測方法的有效性,完成系統(tǒng)軟件設(shè)計。 2.基本教學(xué)要求:每

    2024年01月24日
    瀏覽(15)
  • YOLOPose:除了目標(biāo)檢測,YOLO還能不花代價地估計人體姿態(tài),對實時性能有要求必看!

    YOLOPose:除了目標(biāo)檢測,YOLO還能不花代價地估計人體姿態(tài),對實時性能有要求必看!

    導(dǎo)讀: YOLO,是一種流行的目標(biāo)檢測框架。如果將YOLO引入姿態(tài)檢測任務(wù)中,將取得什么結(jié)果呢?這篇文章實現(xiàn)了單階段的2D人體姿態(tài)檢測,與自上而下或自下而上的方法不同,該方法將人體檢測與關(guān)鍵點(diǎn)估計聯(lián)合實現(xiàn),在不采用數(shù)據(jù)增強(qiáng)如翻轉(zhuǎn)、多尺度等情況下,實現(xiàn)COCO ke

    2024年02月06日
    瀏覽(16)
  • 基于matlab視頻的人體姿態(tài)檢測

    基于matlab視頻的人體姿態(tài)檢測

    設(shè)計目的和要求 1.根據(jù)已知要求分析視頻監(jiān)控中行人站立和躺臥姿態(tài)檢測的處理流程,確定視頻監(jiān)中行人的檢測設(shè)計的方法,畫出流程圖,編寫實現(xiàn)程序,并進(jìn)行調(diào)試,錄制實驗視頻,驗證檢測方法的基于MATLAB的人體姿態(tài) 設(shè)計原理 首先利用統(tǒng)計的方法得到背景模型,并實時

    2024年02月02日
    瀏覽(24)
  • python姿態(tài)檢測實現(xiàn)多人多姿態(tài)識別python行為識別openpose行為骨骼框架檢測動作識別動作檢測行為動作分類

    python姿態(tài)檢測實現(xiàn)多人多姿態(tài)識別python行為識別openpose行為骨骼框架檢測動作識別動作檢測行為動作分類

    https://download.csdn.net/download/babyai996/88741189 https://download.csdn.net/download/babyai996/88741257? https://download.csdn.net/download/babyai996/88741262? https://download.csdn.net/download/babyai996/88741266? https://download.csdn.net/download/babyai996/88741272? https://download.csdn.net/download/babyai996/88741274? 視頻演示: python行為

    2023年04月20日
    瀏覽(19)
  • 基于人體姿態(tài)識別的AI健身系統(tǒng)(淺談

    基于人體姿態(tài)識別的AI健身系統(tǒng)(淺談

    目錄 前言 一、人體姿態(tài)識別的一些入門知識點(diǎn) 二、Blazepose 算法簡介 三、AI健身系統(tǒng)的實現(xiàn) 隨著全民健身熱潮的興起,越來越多的人積極參加健身鍛煉,但由于缺乏科學(xué) 的運(yùn)動指導(dǎo),使健身難以取得相應(yīng)的效果。據(jù)市場調(diào)查顯示,沒有產(chǎn)品可以自動分析健身 運(yùn)動并提供指導(dǎo)。而

    2024年02月02日
    瀏覽(11)
  • 一文openpose姿態(tài)估計

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

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

    2024年02月11日
    瀏覽(12)
  • 深度學(xué)習(xí)之基于Yolov5人體姿態(tài)摔倒識別分析報警系統(tǒng)(GUI界面)

    深度學(xué)習(xí)之基于Yolov5人體姿態(tài)摔倒識別分析報警系統(tǒng)(GUI界面)

    歡迎大家點(diǎn)贊、收藏、關(guān)注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。 ??系統(tǒng)設(shè)計概述: 傳感器采集:通過在場景中布置攝像頭或紅外傳感器等設(shè)備,采集人體姿態(tài)數(shù)據(jù),包括人體位置、姿態(tài)、運(yùn)動軌跡等信息。 數(shù)據(jù)預(yù)處理:對采集到的數(shù)據(jù)進(jìn)行預(yù)處理,包括圖

    2024年02月05日
    瀏覽(18)
  • 探索【Stable-Diffusion WEBUI】的插件:骨骼姿態(tài)(OpenPose)

    探索【Stable-Diffusion WEBUI】的插件:骨骼姿態(tài)(OpenPose)

    本篇主要提到OpenPose和相關(guān)的插件,配合ControlNet使用,可以指定人物的動作。 更多不斷豐富的內(nèi)容參考:?? 《繼續(xù)Stable-Diffusion WEBUI方方面面研究(內(nèi)容索引)》 骨骼姿態(tài)很有用,可以控制生成人物的動作。 我們可以用ControlNet或各種插件,從圖片中提取人物的骨骼姿態(tài)。 也可

    2024年02月04日
    瀏覽(546)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包