yolov8 人體姿態識別

引言

在計算機視覺的各種應用中,人體姿態檢測是一項極具挑戰性的任務,它能夠幫助我們理解人體各部位的空間位置。本文將詳細介紹如何使用 YOLOv8 和 Python 實現一個人體姿態檢測系統,涵蓋模型加載、圖像預處理、姿態預測到結果可視化的全流程實現。本文只做了行走,站立,跳三種姿態判斷,需要其他姿態可自行添加。

效果

在這里插入圖片描述

開發環境

  • Python 3.8+
  • PyTorch 1.7+
  • OpenCV 4.5+
  • ultralytics YOLOv8

1. 模型加載與初始化

首先,我們需要一個 YOLOv8 的預訓練模型,該模型可以從 Ultralytics 官方網站下載。加載模型的主要目的是將其調整到評估模式,確保在推斷時模型的表現為最優。

import torchclass YOLOv8Pose:def __init__(self, model_path, device='cpu', conf=0.25, iou=0.7):self.model = self.load_model(model_path, device)# 其他初始化設置def load_model(self, model_path, device):ckpt = torch.load(model_path, map_location=device)model = ckpt['model'].to(device).eval()return model

2. 圖像預處理

圖像預處理是檢測流程中不可或缺的一部分,我們需要調整圖像的大小以適應模型的輸入要求,同時進行歸一化處理。

import cv2 as cv
from ultralytics.data.augment import LetterBoxdef preprocess(self, img_path):im = cv.imread(img_path)im = self.letterbox(im)im = im[..., ::-1].transpose((0, 3, 1, 2))  # BGR to RGBim = np.ascontiguousarray(im)im = torch.from_numpy(im).to(self.device).float() / 255.0return im

3. 推斷與后處理

使用加載的模型進行前向推斷,并對輸出的檢測結果進行處理。

def infer(self, img):preds = self.model(img)# 使用非極大抑制處理預測結果return predsdef postprocess(self, prediction):# 調整預測框,解析關鍵點return results

4. 結果可視化

對檢測到的姿態進行可視化,包括繪制邊框、關鍵點和骨骼連接。

def draw_results(self, image, results):# 使用 OpenCV 繪制結果return image

5. 整合與測試

將上述所有步驟整合到一個流程中,對指定的圖片進行處理并展示結果。

if __name__ == "__main__":yolov8 = YOLOv8Pose(model_path='yolov8s-pose.pt')img_path = 'path_to_image.png'img = yolov8.preprocess(img_path)prediction = yolov8.infer(img)results = yolov8.postprocess(prediction)final_image = yolov8.draw_results(img, results)cv.imshow('Detection Results', final_image)cv.waitKey(0)

源碼已上傳到github,需要源碼請私信或著評論區留下郵箱。


希望這篇博客能夠幫助你理解并實踐 YOLOv8 在人體姿態檢測上的應用!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43705.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43705.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43705.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Echarts水球圖(liquidFill)添加文字

效果 代碼 {type: liquidFill,shape: shapes[0].value,radius: 90%,data: [{name: 獨立百貨,value: 0}],center: [50%, 50%],color: [{type: linear,x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0,color: #446bf5},{offset: 1,color: #2ca3e2}],globalCoord: false}],backgro…

JSP實現簡單的登錄和注冊

JSP實現登錄和注冊(Map集合模擬數據庫) 1、login.jsp2、 loginSelect.jsp3、register.jsp4、 RegisterSelect.jsp5、 index.jsp 1、login.jsp login.jsp中username和password在LoginSelect.jsp驗證是否一致使用session.setAttribute("login_msg&quo…

RTOS系統 -- ARM Cortex-M4 RPMSG之通道初始化函數

RPMsg Lite 在 ARM Cortex-M4 RTOS 中的使用 簡介 在ARM Cortex-M4處理器上使用的RTOS(實時操作系統)中,rpmsg_lite是一個輕量級的遠程處理消息傳遞框架,通常用于多核處理器或多核系統中不同處理器之間的通信。本文檔將介紹 rpm…

ffmpeg轉換MP4為gif命令

這里記錄一下使用 ffmpeg去轉化 gif 的一些快捷命令 # 直接轉換 ffmpeg -i 222.mp4 -r 12 222.gif# 調色板優化處理 ffmpeg -i 222.mp4 -r 12 -vf "split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" 222.gif第二條命令的解釋如下: split[s0][s1]&am…

nginx設置代理解決跨域問題

vue工程 npm run build 后把dist包放到 nginx代理服務器的html目錄,在conf/nginx.conf配置文件中增加配置,這樣就可以正常方位后端接口了,配置如下: server {listen 8193;server_name localhost 127.0.0.1;location / {root D:…

【RHCE】dns實驗0707

題目: 做法: 1.創建兩個虛擬機 張三:且有加密 李四: 設置zhangsan/lisi對應的html網頁 主服務器測試: 證書驗證 2.配置dns 主服務器: 區域文件(zs/lisi) 從服務器: 且dns為主服務…

OZON生活家居用品爆款新品

OZON生活家居用品爆款新品涵蓋了多個方面,這些產品不僅滿足了消費者對生活品質的追求,也反映了當前市場的熱門趨勢。以下是一些在OZON平臺上備受關注的生活家居用品爆款新品: OZON生活家居用品爆款新品工具:D。DDqbt。COm/74rD T…

Midway Serverless 發布 2

可以看看優化后的開發情況,不僅和應用一樣,速度還比較快,也不會生成臨時目錄,修改實時生效。 這是 v2.0 和 v1.0 的根本性變化,也是整體架構升級帶來的巨大優勢。 當然,這一塊并不是功能的新增&#xff0c…

UI 自動化分布式測試 -- Docker Selenium Grid

UI 自動化分布式測試 – Docker Selenium Grid Docker 和 Selenium Grid 的結合為分布式 UI 自動化測試提供了一種高效、可擴展且易于管理的方法。通過使用 Docker 容器化技術,測試環境的設置和配置變得更加簡便和一致;而 Selenium Grid 則允許在多個節…

電腦清理c盤內存空間怎么清理免費 怎么清理c盤的垃圾文件又不刪除有用文件

在計算機使用過程中,隨著時間的推移,C盤空間可能會被各種臨時文件、緩存和無用的注冊表項占用。這不僅會導致C盤空間不足,還可能影響計算機的性能。那么怎么樣清理C盤內存空間,怎么樣清理C盤的垃圾避開系統文件呢? 一…

?? 翻頁 上一頁/下一頁

data里面定義 currentPage: 0 // 當前頁數 created 初始化時賦值 this.formProps 是表格 要求是對象 this.contractArr 是傳過來要進行分頁的數組對象 初始化顯示第一個created() {this.formProps this.contractArr[0]} html頁面 <div><div>// 左箭頭<s…

linux 進程堆棧分析

1.進程pid jsp -l | grep appName 或 ps -ef | grep appName 2.查看cpu top -c pidps -mp pid-o THREAD,tid,time / top -H -p pid #打印出進程對應的線程id及運行時間timeprintf %x\n 線程id3.查看gc jstat -gcutil | grep pid 500jstat -class pid4.查看進程日志 jsta…

數據分析案例-2024 年全電動汽車數據集可視化分析

&#x1f935;?♂? 個人主頁&#xff1a;艾派森的個人主頁 ?&#x1f3fb;作者簡介&#xff1a;Python學習者 &#x1f40b; 希望大家多多支持&#xff0c;我們一起進步&#xff01;&#x1f604; 如果文章對你有幫助的話&#xff0c; 歡迎評論 &#x1f4ac;點贊&#x1f4…

Navicat BI 教程 | 圖表設計和儀表板

商業智能&#xff08;Business Intelligence&#xff0c;BI&#xff09;是將數據轉化為可操作的洞察力的實踐&#xff0c;使組織能夠簡化生產力和實現更好的整體績效。本博客最近介紹了新的 Navicat BI&#xff0c;這是一個幫助 BI 專業人員通過創建數據可視化&#xff08;如圖…

侯捷C++面向對象高級編程(上)-11-虛函數與多態

1.虛函數 2.virtual 3.繼承&#xff0b;復合關系下的構造和析構 4.委托&#xff0b;繼承

Shell學習——Shell運算符

文章目錄 運算符算術運算符關系運算符布爾運算符邏輯運算符字符串運算符 運算符 算術運算符 #!/bin/bash a10 b20valexpr $a $b echo "a b : $val"valexpr $a - $b echo "a - b : $val"valexpr $a \* $b echo "a * b : $val"valexpr $b / $a…

C語言 | Leetcode C語言題解之第221題最大正方形

題目&#xff1a; 題解&#xff1a; int maximalSquare(char** matrix, int matrixSize, int* matrixColSize){int dp[301][301]{0};int wid0;if(matrixSize0&&matrixColSize[0]0){return 0;}for(int i0;i<matrixSize;i){for(int j0;j<matrixColSize[0];j){if(m…

Docker進入MongoDB

先是命令行開啟docker鏡像&#xff0c;然后進入docker鏡像&#xff0c;這是兩步 進入之后&#xff0c;開頭會變成root&#xff0c;我的理解是進入了另一個linux系統了&#xff0c;直接執行相應的軟件 這里直接use databse就是進入了&#xff0c;據說MongoDB是慢啟動&#xff0c…

MMGPL: 多模態醫學數據分析與圖提示學習| 文獻速遞-基于深度學習的多模態數據分析與生存分析

Title 題目 MMGPL: Multimodal Medical Data Analysis with Graph Prompt Learning MMGPL: 多模態醫學數據分析與圖提示學習 01 文獻速遞介紹 神經學障礙&#xff0c;包括自閉癥譜系障礙&#xff08;ASD&#xff09;&#xff08;Lord等&#xff0c;2018年&#xff09;和阿…

開發個人Go-ChatGPT–6 OpenUI

開發個人Go-ChatGPT–6 OpenUI Open-webui Open WebUI 是一種可擴展、功能豐富且用戶友好的自托管 WebUI&#xff0c;旨在完全離線運行。它支持各種 LLM 運行器&#xff0c;包括 Ollama 和 OpenAI 兼容的 API。 功能 由于總所周知的原由&#xff0c;OpenAI 的接口需要密鑰才…