AI实战营:MMPose开源算法库

news2024/11/29 10:55:03
  • RTMPose关键点检测全流程
  • MMPose预训练模型预测-命令行
    • 预测单张图
      • # HRNet
        python .\demo\topdown_demo_with_mmdet.py .\demo\mmdetection_cfg\faster_rcnn_r50_fpn_coco.py https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth .\configs\body_2d_keypoint\topdown_heatmap\coco\td-hm_hrnet-w32_8xb64-210e_coco-256x192.py https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w32_coco_256x192-c78dce93_20200708.pth --input .\data\test\multi-person.jpeg --output-root .\outputs\B1_HRNet_1 --dev cuda:0 --bbox-thr 0.5 --kpt-thr 0.2 --nms-thr 0.3 --radius 8 --thickness 4 --draw-bbox --draw-heatmap --show-kpt-idx
      • Loads checkpoint by http backend from path: https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
        Loads checkpoint by http backend from path: https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w32_coco_256x192-c78dce93_20200708.pth
        06/03 20:47:33 - mmengine - WARNING - `Visualizer` backend is not initialized because save_dir is None.  
      • #RTMPose
        python .\demo\topdown_demo_with_mmdet.py .\demo\mmdetection_cfg\faster_rcnn_r50_fpn_coco.py https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth .\projects\rtmpose\rtmpose\body_2d_keypoint\rtmpose-s_8xb256-420e_coco-256x192.py https://download.openmmlab.com/mmpose/v1/projects/rtmpose/rtmpose-s_simcc-aic-coco_pt-aic-coco_
        420e-256x192-fcb2599b_20230126.pth --input .\data\test\multi-person.jpeg --output-root .\outputs\B1_RTM_1 --d
        evice cuda:0 --bbox-thr 0.5 --kpt-thr 0.5 --nms-thr 0.3 --radius 8 --thickness 4 --draw-bbox --draw-heatmap --show-kpt-idx
        
      • Loads checkpoint by http backend from path: https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
        Loads checkpoint by http backend from path: https://download.openmmlab.com/mmpose/v1/projects/rtmpose/rtmpose-s_simcc-aic-coco_pt-aic-coco_420e-256x192-fcb2599b_20230126.pth
        Downloading: "https://download.openmmlab.com/mmpose/v1/projects/rtmpose/rtmpose-s_simcc-aic-coco_pt-aic-coco_420e-256x192-fcb2599b_20230126.pth" to C:\Users\16798/.cache\torch\hub\checkpoints\rtmpose-s_simcc-aic-coco_pt-aic-coco_420e-256x192-fcb2599b_20230126.pth
        100%|██████████████████████████████████████████████████████████████████| 60.8M/60.8M [00:37<00:00, 1.71MB/s]
        06/03 23:04:00 - mmengine - WARNING - `Visualizer` backend is not initialized because save_dir is None.
        d:\workspace\.git\mmpose\mmpose\models\heads\coord_cls_heads\rtmcc_head.py:217: UserWarning: The predicted si
        mcc values are normalized for visualization. This may cause discrepancy between the keypoint scores and the 1D heatmaps.
          warnings.warn('The predicted simcc values are normalized for '
    • 预测视频:直接将--input 换成视频路径即可
      • #HRNet 
        python .\demo\topdown_demo_with_mmdet.py .\demo\mmdetection_cfg\faster_rcnn_r50_fpn_coco.py https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth .\configs\body_2d_keypoint\topdown_heatmap\coco\td-hm_hrnet-w32_8xb64-210e_coco-256x192.py https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w32_coco_256x192-c78dce93_20200708.pth --input .\data\test\mother_wx.mp4 --output-root .\outputs\B1_HRNet_2 --device cuda:0 --bbox-thr 0.5 --kpt-thr 0.2 --nms-thr 0.3 --radius 5 --thickness 2 --draw-bbox --draw-heatmap --show-kpt-idx
        
      • Loads checkpoint by http backend from path: https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
        Loads checkpoint by http backend from path: https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w32_coco_256x192-c78dce93_20200708.pth
        06/03 23:11:03 - mmengine - WARNING - `Visualizer` backend is not initialized because save_dir is None.
         
      • #TRMPose
        python .\demo\topdown_demo_with_mmdet.py .\demo\mmdetection_cfg\faster_rcnn_r50_fpn_coco.py https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth projects/rtmpose/rtmpose/body_2d_keypoint/rtmpose-s_8xb256-420e_coco-256x192.py https://download.openmmlab.com/mmpose/v1/projects/rtmpose/rtmpose-s_simcc-aic-coco_pt-aic-coco_420e-256x192-fcb2599b_20230126.pth --input data/test/mother_wx.mp4 --output-root outputs/B1_RTM_2 --device cuda:0 --bbox-thr 0.5 --kpt-thr 0.5 --nms-thr 0.3 --radius 5 --thickness 2 --draw-bbox --draw-heatmap  --show-kpt-idx
        
      • Loads checkpoint by http backend from path: https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
        Loads checkpoint by http backend from path: https://download.openmmlab.com/mmpose/v1/projects/rtmpose/rtmpose-s_simcc-aic-coco_pt-aic-coco_420e-256x192-fcb2599b_20230126.pth
        06/03 23:14:39 - mmengine - WARNING - `Visualizer` backend is not initialized because save_dir is None.
        d:\workspace\.git\mmpose\mmpose\models\heads\coord_cls_heads\rtmcc_head.py:217: UserWarning: The predicted si
        mcc values are normalized for visualization. This may cause discrepancy between the keypoint scores and the 1D heatmaps.
          warnings.warn('The predicted simcc values are normalized for '
  • MMPose预测训练模型预测-Python API
    • import cv2
      import numpy as np
      from PIL import Image
      import matplotlib.pyplot as plt
      import torch
      import mmcv
      from mmcv import imread
      import mmengine
      from mmengine.registry import init_default_scope
      from mmpose.apis import inference_topdown
      from mmpose.apis import init_model as init_pose_estimator
      from mmpose.evaluation.functional import nms
      from mmpose.registry import VISUALIZERS
      from mmpose.structures import merge_data_samples
      from mmdet.apis import inference_detector, init_detector
      
      # 设备
      device = torch.device('cuda') if torch.cuda.is_available() else torch.device(
          'cpu')
      print('device:', device)
      # 载入待测图片
      img_path = 'data/test/multi-person.jpeg'
      # 打开图片
      Image.open(img_path)
      # 构建目标检测模型
      # Faster RCNN
      detector = init_detector(
          'demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py',
          'https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth',
          device=device)
      # RTMPose-Tiny
      detector = init_detector(
          'projects/rtmpose/rtmdet/person/rtmdet_m_640-8xb32_coco-person.py',
          'https://download.openmmlab.com/mmpose/v1/projects/rtmpose/rtmdet_m_8xb32-100e_coco-obj365-person-235e8209.pth',
          device=device)
      # 构建人体姿态估计模型
      pose_estimator = init_pose_estimator(
          'configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w32_8xb64-210e_coco-256x192.py',
          'https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w32_coco_256x192-c78dce93_20200708.pth',
          device=device,
          cfg_options={'model': {
              'test_cfg': {
                  'output_heatmaps': True
              }
          }})
      # 预测-目标检测
      init_default_scope(detector.cfg.get('default_scope', 'mmdet'))
      #获取目标检测预测结果
      detect_result = inference_detector(detector, img_path)
      detect_result.keys()
      # 预测类别
      print(detect_result.pred_instances.labels)
      # 置信度
      print(detect_result.pred_instances.scores)
      # 框坐标:左上角X坐标、左上角Y坐标、右下角X坐标、右下角Y坐标
      print(detect_result.pred_instances.bboxes)
      # 置信度阈值过滤,获得最终目标检测预测结果
      # 置信度阈值
      CONF_THRES = 0.5
      pred_instance = detect_result.pred_instances.cpu().numpy()
      bboxes = np.concatenate((pred_instance.bboxes, pred_instance.scores[:, None]), axis=1)
      bboxes = bboxes[np.logical_and(pred_instance.labels == 0, pred_instance.scores > CONF_THRES)]
      bboxes = bboxes[nms(bboxes, 0.3)][:, :4]
      print(bboxes)
      # 预测-关键点
      # 获取每个 bbox 的关键点预测结果
      pose_results = inference_topdown(pose_estimator, img_path, bboxes)
      print(len(pose_results))
      # 把多个bbox的pose结果打包到一起
      data_samples = merge_data_samples(pose_results)
      print(data_samples.keys())
      # 预测结果-关键点坐标
      print(data_samples.pred_instances.keypoints.shape)
      # 索引为 0 的人,每个关键点的坐标
      print(data_samples.pred_instances.keypoints[0,:,:])
      # 预测结果-关键点热力图
      # 每一类关键点的预测热力图
      print(data_samples.pred_fields.heatmaps.shape)
      idx_point = 13
      heatmap = data_samples.pred_fields.heatmaps[idx_point,:,:]
      print(heatmap.shape)
      # 索引为 idx 的关键点,在全图上的预测热力图
      plt.imshow(heatmap)
      plt.show()

    • MMPose官方可视化工具visualizer

      • # 半径
        pose_estimator.cfg.visualizer.radius = 10
        # 线宽
        pose_estimator.cfg.visualizer.line_width = 8
        visualizer = VISUALIZERS.build(pose_estimator.cfg.visualizer)
        # 元数据
        visualizer.set_dataset_meta(pose_estimator.dataset_meta)
        # 可视化
        img = mmcv.imread(img_path)
        img = mmcv.imconvert(img, 'bgr', 'rgb')
        
        img_output = visualizer.add_datasample(
            'result',
            img,
            data_sample=data_samples,
            draw_gt=False,
            draw_heatmap=True,
            draw_bbox=True,
            show_kpt_idx=True,
            show=False,
            wait_time=0,
            out_file='outputs/B2.jpg')
        print(img_output.shape)
        plt.figure(figsize=(10, 10))
        plt.imshow(img_output)
        plt.show()

  • 多人检测问题

     

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/606980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python反转语句:实用技巧提升编程能力

Python反转语句&#xff1a;实用技巧提升编程能力 Python是一门流行的编程语言&#xff0c;许多开发者都会选择Python作为主要的开发语言。其中一个原因是Python的语法简单易学&#xff0c;不仅适合初学者入门&#xff0c;也能被经验丰富的开发者用来构建复杂应用程序。在本文…

【网络原理】数据链路层 和 应用层 重点协议

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; 目 录 &#x1f340;一. 以太网协议&#xff08;数据链路层&#xff09;&#x1f33b;二. DNS &#xff08;应用层&#xff09;&#x1f33f;三. 网络原理知识面试总结 &#x1f34…

【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)

全方位渗透和探究SpringMVC的核心原理和运作机制 SpringMVC简介Spring Web MVC是什么Spring Web MVC的工作模式Spring Web MVC能帮我们做什么SpringMVC的底层依赖 SpringMVC工作流程SpringMVC中的组件DispatcherServlet前端控制器DispatcherServlet的职责和作用 HandlerMapping…

chatgpt赋能python:Python如何发送手机短信:实现方法解析和应用场景介绍

Python如何发送手机短信&#xff1a;实现方法解析和应用场景介绍 随着移动 App 的兴起&#xff0c;手机短信已成为现代人日常生活中不可或缺的一部分。在有些场景下需要编写 Python 程序去自动化发送短信&#xff0c;例如企业营销活动、警报系统等。本文将介绍 Python 发送短信…

chatgpt赋能python:Python可以搜集网上资料吗?

Python 可以搜集网上资料吗&#xff1f; Python 是一种非常流行的编程语言&#xff0c;它广泛应用于数据科学、机器学习、人工智能等领域。作为一名 Python 工程师&#xff0c;我们经常需要在互联网上搜集资料来解决开发中的问题&#xff0c;但是有些人会问&#xff1a;Python…

设计模式B站学习(一)(java)

这里写目录标题 一、设计模式概述1.1 软件设计模式的产生背景1.2 软件设计模式的概念1.3 学习设计模式的必要性1.4 设计模式分类 二、UML图2.1 类图概述2.2 类图的作用2.3 类图表示法2.3.1 类图表示方法2.3.2 类与类之间关系的表示方法2.3.2.1 关联关系2.3.2.2 聚合关系2.3.2.3…

C语言,指针详解

1. 指针是什么&#xff1f; 1. 指针是内存中一个最小单元的编号 2. 口头上的“指针”&#xff0c;指的是指针变量 #include<stdio.h>int main() {int a10;int * pa&a;// pa 是一个指针变量,用来存放 a 的地址//int ——> pa 所指向对象的类型//* 代表 pa是个指针…

【ros/ros2】ros2 humble镜像制作过程中碰到的问题记录

文章目录 序言1. 避免手动设置时区2. docker build中间某一步失败了3. sudo apt install ros-humble-desktop安装报错 E: Unable to locate package ros-humble-desktop4. 编译ros2 humnble时报错5. sudo rosdep init失败6. 下载依赖时失败&#xff1a;rosdep install --from-p…

局域网技术

共享信道的分配技术是局域网的核心技术&#xff0c;而这一技术又与网络的拓扑结构和传输介质有关。 拓扑结构&#xff1a; 1.总线型拓扑&#xff1a; 总线一种多点广播介质&#xff0c;所有的站点通过接口硬件连接到总线上。 传输介质主要是同轴电缆&#xff08;基带和宽带…

chatgpt赋能python:Python取消空格:如何优化代码和改善SEO?

Python取消空格&#xff1a;如何优化代码和改善SEO&#xff1f; 如果你是一位有10年python编程经验的工程师&#xff0c;那么你一定深刻体会到代码的质量对软件应用的重要性。而在今天&#xff0c;随着搜索引擎优化&#xff08;SEO&#xff09;的发展和对网页排名的更高要求&a…

FastBup:计算机视觉大型图像数据集分析工具

0.简介 官方github网址项目目的&#xff1a;当前大规模图像数据集一团糟&#xff0c;数据量巨大但质量堪忧&#xff0c;有时候训练集、验证集、测试集会有重复数据造成数据泄露。FastBup可以识别重复项、近似重复项、异常图像、错误标注、异常值&#xff0c;在cpu上就可以处理…

Apache Kafka - 流式处理

文章目录 概述什么是流式处理流式处理的一些概念时间状态流和表的二元性时间窗口 流式处理的设计模式单个事件处理使用本地状态多阶段处理和重分区使用外部查找——流和表的连接流与流的连接乱序的事件重新处理 概述 Kafka被广泛认为是一种强大的消息总线&#xff0c;可以可靠…

Zabbix(一)

介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 功能组件 Server &#xff1a; Zabbix server是zabbix软件的核心组件 Zabbix agent向其报告可用性、系统完整性和统计信息 Zabbix server存储所有的配置信息、统计信息和操作信…

chatgpt赋能python:Python取出列表中的若干元素

Python取出列表中的若干元素 Python是一个功能强大且易于学习的编程语言&#xff0c;具有广泛的应用领域。在数据科学和机器学习中&#xff0c;Python是一个非常流行的语言&#xff0c;因为它具有许多用于处理数据和矩阵运算的库&#xff0c;例如NumPy和pandas。在Python的列表…

chatgpt赋能python:使用Python向微信发送信息的方法详解

使用Python向微信发送信息的方法详解 Python作为一种广泛应用于科学计算、数据处理等多个领域的编程语言&#xff0c;也可以用于自动化工作流程和自动发送微信消息等操作&#xff0c;大大提高了工作效率。如果你想在日常工作中用Python向微信群或个人发送自定义信息&#xff0…

linux网络设置

文章目录 一、查看网络配置1.查看网络接口信息——ifconfig1.1查看所有本机的网络的网络设备1.2设置网络接口参数1.3对指定的设备开启或关闭 2.查看主机名称——hostname2.1查看或临时设置当前主机名2.2永久设置主机名 3.查看路由表条目——route3.1查看当前主机路由表3.2添加路…

chatgpt赋能python:Python取消赋值:让你的代码更清晰简洁

Python取消赋值&#xff1a;让你的代码更清晰简洁 在Python编程中&#xff0c;我们经常需要使用赋值语句对变量进行赋值。但在某些情况下&#xff0c;我们也会发现需要取消赋值&#xff0c;即将已经赋过值的变量重新设为未赋值状态。这时&#xff0c;Python提供了一种特殊的语…

阿里云 Windows Server 2022 安装 Docker

阿里云Windows Server 2022 安装 Docker 文章目录 情景尝试正解 安装Docker管理工具安装Docker重启系统配置Docker系统路径配置Docker引擎(也许不用)启动Docker服务 情景 情景&#xff1a;最近一直在搞微服务&#xff0c;团队的服务器是阿里云的 Windows Server 2022&…

chatgpt赋能python:Python发展史:从诞生到井喷的开源之路

Python发展史&#xff1a;从诞生到井喷的开源之路 1. Python诞生的背景和历史 Python作为一种高级动态编程语言&#xff0c;在世界上得到了广泛应用&#xff0c;其诞生与发展也是有着自己的背景和历史的。20世纪90年代初期&#xff0c;著名的荷兰数学家Guido van Rossum开发了…

操作系统之文件管理

目录 认识文件管理 文件的逻辑结构 文件目录 文件的物理结构 文件存储空间管理 文件的基本操作 文件共享 文件保护 文件系统的全局结构 虚拟文件系统 内容摘自&#xff1a;4.1_1_初识文件管理_哔哩哔哩_bilibili 认识文件管理 文件——就是一组有意义的信息/数据集合…