Pytorch+Python实现人体关键点检测

这篇具有很好参考价值的文章主要介绍了Pytorch+Python实现人体关键点检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用Python+Pytorch工程代码对人体进行关键点检测和骨架提取,并实现可视化。

使用背景:

物体检测为许多视觉任务提供动力,如实例分割、姿态估计、跟踪和动作识别。它在监控、自动驾驶和视觉答疑中有下游应用。当前的对象检测器通过紧密包围对象的轴向包围框来表示每个对象。然后,他们将目标检测减少到大量潜在目标边界框的图像分类。对于每个边界框,分类器确定图像内容是特定的对象还是背景。

人体关键点检测属于目标检测的一个小分支,在很多虚拟应用场景中需要使用,比如说姿态识别、虚拟穿衣等应用领域。今天给大家推荐一个好用的人体关键点检测项目代码,并基于该代码进行一定的升级,使得提取的人体关键点可以独立显示在可视化界面当中。


使用环境:

本项目通过Python实现,运行环境为:
Python 3.7
Pytorch 1.8.1
Opencv 4.5.4.60


使用代码:

本项目实现基于rwightman的代码进行改进实现,
参考代码地址:https://github.com/rwightman/posenet-python

源代码效果(左图为原图,右图为检测结果图):
Pytorch+Python实现人体关键点检测

修改后的效果:
Pytorch+Python实现人体关键点检测


代码使用步骤:

如下的代码都基于参考github链接源码进行直接修改,找到上下行代码参考修改的具体位置。
本代码以源代码视频应用文件举例(webcam_demo.py)

第一步:
在原项目工程代码中找到webcam_demo.py
修改视频获取路径(基于源代码修改):

def main():
    model = posenet.load_model(args.model)
    model = model.cuda()
    output_stride = model.output_stride

    # cap = cv2.VideoCapture(args.cam_id)
    cap = cv2.VideoCapture('3.mp4')
    cap.set(3, args.cam_width)
    cap.set(4, args.cam_height)

    #背景视频读取
    cap2 = cv2.VideoCapture('2.mp4')
    cap2.set(3, args.cam_width)
    cap2.set(4, args.cam_height)

然后在视频显示代码部分添加提取关键点显示界面:

            min_pose_score=0.15, min_part_score=0.1)



        cv2.imshow('posenet', overlay_image)
        # cv2.imshow('net', overlay_image)
        # cv2.resizeWindow('posenet', 500, 900)

        overlay_image2 = posenet.draw_skel_and_kp2(
            display_image2,display_image2, pose_scores, keypoint_scores, keypoint_coords,
            min_pose_score=0.15, min_part_score=0.1)

        cv2.imshow('posenet2', overlay_image2)
        #提取skeleton
        # cv2.namedWindow("dance", 0)
        # cv2.resizeWindow("dance", 600, 900)  # 设置窗口大小
        #
        # cv2.imshow("dance", img)

        frame_count += 1
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    print('Average FPS: ', frame_count / (time.time() - start))

第二步:
修改posenet/utils.py代码部分:
添加提取的骨架的视频背景函数:

#背景视频
def read_cap2(cap, scale_factor=1.0, output_stride=16):
    res2, img2 = cap.read()
    if not res2:
        raise IOError("webcam failure")
    return _process_input2(img2, scale_factor, output_stride)

添加定义骨架关键点绘制函数:

def draw_skel_and_kp2(
        img, img2, instance_scores, keypoint_scores, keypoint_coords,
        min_pose_score=0.1, min_part_score=0.1):        #将置信度由0.5改为0.3

    bk=img2
    out_img = img
    adjacent_keypoints = []
    cv_keypoints = []
    for ii, score in enumerate(instance_scores):
        if score < min_pose_score:
            continue

        new_keypoints = get_adjacent_keypoints(
            keypoint_scores[ii, :], keypoint_coords[ii, :, :], min_part_score)
        adjacent_keypoints.extend(new_keypoints)

        for ks, kc in zip(keypoint_scores[ii, :], keypoint_coords[ii, :, :]):
            if ks < min_part_score:
                continue
            cv_keypoints.append(cv2.KeyPoint(kc[1], kc[0], 10. * ks))

    if cv_keypoints:
        bk = cv2.drawKeypoints(
            bk, cv_keypoints, outImage=np.array([]), color=(255, 255, 0),
            flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
    out_img = cv2.polylines(bk, adjacent_keypoints, isClosed=False, color=(255, 255, 0),thickness=20)
    return out_img

然后就能以一个纯粹的骨架关键点样式显示在另一个UI界面啦:
Pytorch+Python实现人体关键点检测
Pytorch+Python实现人体关键点检测

Pytorch+Python实现人体关键点检测
上面用的是段dy的舞蹈视频做demo~


Reference:

1、https://github.com/rwightman/posenet-python
2、Zhou, Xingyi, Dequan Wang, and Philipp Krähenbühl. “Objects as points.” arXiv preprint arXiv:1904.07850 (2019).文章来源地址https://www.toymoban.com/news/detail-484257.html

到了这里,关于Pytorch+Python实现人体关键点检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【mmpose】从openmmlab官方文档看mmpose架构设计,模块组成,快速上手实现关键点检测效果(动物,人体,手部等)

    【mmpose】从openmmlab官方文档看mmpose架构设计,模块组成,快速上手实现关键点检测效果(动物,人体,手部等)

    MMPOSE 架构设计 MMPose 1.0 与之前的版本有较大改动,对部分模块进行了重新设计和组织,降低代码冗余度,提升运行效率,降低学习难度。使用 MMPose 1.0 时开发者会关心的内容: 整体代码架构与设计逻辑; 如何用config文件管理模块; 如何使用自定义数据集; 如何添加新的模

    2024年02月08日
    浏览(10)
  • 在 PyTorch 中使用关键点 RCNN 进行人体姿势估计--附源码

    人体姿态估计是计算机视觉领域的一个重要研究领域。它涉及估计人体上的独特点,也称为 关键点 。在这篇博文中,我们将讨论一种在包含人类的图像上查找关键点的算法,称为 Keypoint-RCNN 。该代码是使用 Pytorch 使用 Torchvision 库编写的。 假设您想要建立一名私人健身教练,

    2024年02月12日
    浏览(8)
  • YOLOv5姿态估计:HRnet实时检测人体关键点

    YOLOv5姿态估计:HRnet实时检测人体关键点

    前言: Hello大家好,我是Dream。 今天来学习一下 利用YOLOv5进行姿态估计,HRnet与SimDR检测图片、视频以及摄像头中的人体关键点 ,欢迎大家一起前来探讨学习~ 首先需要我们利用Pycharm直接克隆github中的姿态估计原工程文件,如果不知道怎样在本地克隆Pycharm,可以接着往下看,

    2024年01月17日
    浏览(13)
  • pytorch实现AI小设计-1:Resnet50人脸68关键点检测

    pytorch实现AI小设计-1:Resnet50人脸68关键点检测

            本项目是AI入门的应用项目,后续可以补充内容完善作为满足个人需要。通过构建自己的人脸数据集,此项目训练集为4580张图片,测试集为2308张图片,使用resnet50网络进行训练,最后进行效果展示。本项目也提供了量化内容,便于在硬件上部署。         研究A

    2024年01月18日
    浏览(8)
  • OpenMMLab-AI实战营第二期——2-1.人体关键点检测与MMPose

    OpenMMLab-AI实战营第二期——2-1.人体关键点检测与MMPose

    视频链接:B站-人体关键点检测与MMPose 关键点提取,属于模式识别 人体姿态估计的下游任务:行为识别(比如:拥抱。。) 下游任务:CG和动画,这个是最常见的应用 下游任务:人机交互(手势识别,依据收拾做出不同的响应,比如:HoloLens会对五指手势(3D)做出不同的反

    2024年02月11日
    浏览(8)
  • yolov8-pose:在yolov8上添加人体关键点检测

    yolov8-pose:在yolov8上添加人体关键点检测

        最近因为工作关系接触了yolo-pose,1月份yolov8也出来了,就想着能不能在yolov8上也加上pose分支,也算加深对网络的认识。     yolov8在数据处理上也考虑了keypoints的,所以数据处理部分不用太多的修改,主要修改了Detect类、Loss类。     Detect类:__init__方法中加入nkpt以及c

    2024年02月11日
    浏览(7)
  • MMPose姿态估计+人体关键点识别效果演示

    MMPose姿态估计+人体关键点识别效果演示

    1.1 背景 首先姿态估计属于计算机视觉领域的一个基础研究方向。MMPose是基于Pytorch的姿态估计开源算法库,功能全,涵盖的算法多。 1.2 姿态估计的任务分类 维度 :预测的是2D还是3D姿态。 输入格式 :图片 or 视频 姿态的表示形式 :关键点 or 形状等 目标类型 :全身 or 人脸

    2024年01月20日
    浏览(9)
  • OpenCV实现人脸关键点检测

    OpenCV实现人脸关键点检测

    目录 实现过程 1,代码解读 1.1 导入工具包 1.2导入所需图像,以及训练好的人脸预测模型 1.3 将 dlib 的关键点对象转换为 NumPy 数组,以便后续处理 1.4图像上可视化面部关键点 1.5# 读取输入数据,预处理 1.6进行人脸检测 1.7遍历检测到的框 1.8遍历每个面部 2,所有代码 3,结果

    2024年04月23日
    浏览(16)
  • 基于mediapipe的人体33个关键点坐标(BlazePose)

    基于mediapipe的人体33个关键点坐标(BlazePose)

    BlazePose是一种轻量化的卷积神级网络架构,适用于单人的关键点检测,在人体身上标注33个关键点,在单个中层手机CPU上的执行速度要比OpenPose在20核桌面CPU[5]上快25-75倍。 33个关键点如下图所示 导入库 导入模型 读入图像 关键点检测结果 此时会输出关键点检测结果,如下图所

    2024年02月12日
    浏览(27)
  • WinUI(WASDK)使用MediaPipe检查人体姿态关键点

    WinUI(WASDK)使用MediaPipe检查人体姿态关键点

    之前有用这个MediaPipe.NET .NET包装库搞了手势识别,丰富了稚晖君的ElectronBot机器人的第三方上位机软件的功能,MediaPipe作为谷歌开源的机器视觉库,功能很丰富了,于是就开始整活了,来体验了一把人体姿态关键点检测。 这个框架是微软最新的应用开发框架,我是用来开发程

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包