yolov7 姿态识别-人体骨架-实时检测

博客介绍利用官方发布的yolov7 - w6 - pose.pt权值文件调用摄像头进行检测,并给出代码,将该py文件加入官方代码yolov7 - main根目录下直接运行即可。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用官方发布的yolov7-w6-pose.pt权值文件,调用摄像头进行检测,直接附代码:(将该py文件加入官方代码yolov7-main根目录下,直接运行即可)

import matplotlib.pyplot as plt
import torch
import cv2
from torchvision import transforms
import numpy as np
from utils.datasets import letterbox
from utils.general import non_max_suppression_kpt
from utils.plots import output_to_keypoint, plot_skeleton_kpts

# 加载模型
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
weigths = torch.load('yolov7-w6-pose.pt')
model = weigths['model']
model = model.half().to(device)
_ = model.eval()


# 读取摄像头画面
url=0
cap = cv2.VideoCapture(url)
while (cap.isOpened()):
    ret, image = cap.read()
    #image = cv2.imread('xiaolu.jpg')
    image = letterbox(image, 960, stride=64, auto=True)[0]
    image_ = image.copy()
    image = transforms.ToTensor()(image)
    image = torch.tensor(np.array([image.numpy()]))
    image = image.to(device)
    image = image.half()

# 姿势识别
    with torch.no_grad():
        output, _ = model(image)
        output = non_max_suppression_kpt(output, 0.25, 0.65, nc=model.yaml['nc'], nkpt=model.yaml['nkpt'], kpt_label=True)
        output = output_to_keypoint(output)
    nimg = image[0].permute(1, 2, 0) * 255
    nimg = nimg.cpu().numpy().astype(np.uint8)
    nimg = cv2.cvtColor(nimg, cv2.COLOR_RGB2BGR)
    for idx in range(output.shape[0]):
        plot_skeleton_kpts(nimg, output[idx, 7:].T, 3)


# 打开摄像头
    cv2.imshow("ning",nimg)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()


### OpenPose 和 YOLOv7-Pose 的人体姿态估计性能与特性对比 #### 性能指标 OpenPose 是一种基于多阶段卷积神经网络的方法,能够检测多人的姿态YOLOv7-Pose 则继承了 YOLO 家族快速推理的优势,在保持高精度的同时实现了实时处理能力。 在速度方面,YOLOv7-Pose 显著优于 OpenPose。由于其轻量级架构设计以及高效的锚点机制,使得 YOLOv7-Pose 能够实现在 GPU 上每秒数百帧的速度[^2]。相比之下,尽管 OpenPose 提供了较高的准确性,但在实际应用中的运行效率较低,尤其是在面对复杂背景或大规模人群场景时表现得尤为明显。 #### 特征提取方式 OpenPose 使用自底向上的策略来解析图像中的人体关节位置,并通过连接这些关键点形成完整的骨架结构。这种方法依赖于热图回归技术,可以精确捕捉到个体之间的细微差异;然而也正因为如此,当遇到严重遮挡情况下的目标识别会变得困难重重[^1]。 而 YOLOv7-Pose 采用了一种更为灵活的方式——它不仅限于传统的二维坐标预测,而是结合了空间注意力机制和特征金字塔网络(FPN),增强了对于不同尺度物体的理解力。这种改进有助于提高对局部区域的关注度,进而改善了对人体各部位相对位置关系的学习效果。 #### 遮挡鲁棒性 针对被遮挡的人物再识别问题(Partial ReID),PVPM+Aug 模型展示了出色的适应性和优越的表现,即使是在存在大面积遮蔽的情况下也能维持较高水平的检索成功率。虽然这里讨论的是特定领域内的成果,但从侧面反映出利用姿态引导可见部分匹配的思想同样适用于增强其他视觉任务下系统的抗干扰能力。 因此推测,相较于传统方法如 OpenPose,YOLOv7-Pose 或者类似的现代算法可能具备更强健的应对遮挡挑战的能力,因为它们往往融入更多先进的设计理念和技术手段以提升整体性能。 ```python import torch from yolov7_pose import YOLOv7_Pose model = YOLOv7_Pose() image = ... # 加载待测图片 results = model(image) for result in results: keypoints = result['keypoints'] print(keypoints) ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值