【OpenMMLab AI实战营二期笔记】第三天 MMPose代码教程

本文详细介绍了RTMPose和MMPose的关键点检测流程,从配置conda环境、安装依赖库,到模型的预训练预测,包括命令行和PythonAPI的方式。此外,还涉及到了数据集、训练过程、模型权重的转换和预测结果的解析。文章最后提到了在训练日志可视化和预测过程中遇到的错误及其解决方法。
摘要由CSDN通过智能技术生成

RTMPose关键点检测全流程

代码教程地址:github.com/TommyZihao/MMPose_Tutorials
在这里插入图片描述
注意:以下所有代码都在本地运行,本地环境Ubuntu22,GPU RTX3090,CUDA v11.3

0.配置conda环境

conda create -n openmmlab-learning python=3.9 # 创建环境
conda activate openmmlab-learning # 激活环境
pip install jupyter #安装jupyternotebook
cd """到你的目录下面"""
git clone https://github.com/TommyZihao/MMPose_Tutorials.git # 拉取教程代码
jupyter-notebook#打开notebook

1.安装MMDetection和MMPose

1.1安装MMPose

按照教程示例代码安装完成之后文件结构如下图所示,且没有报错
在这里插入图片描述
下图是数据文件夹中下载的视频和图片
在这里插入图片描述

1.2安装MMDetection

和1.1中安装过程类似
在这里插入图片描述
都安装完后如上图所示文件夹中会有两个子文件夹分别是mmdetection和mmpose

1.3 MMPose预训练模型预测-命令行

主要运行代码:(用的自顶向下的demo,需要两个权重文件,目标检测和关键点检测)

# 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 \ #输出路径
        --device cuda:0 \ #计算设备
        --bbox-thr 0.5 \ #bbox的置信度阈值
        --kpt-thr 0.2 \ #关键点检测的置信度阈值
        --nms-thr 0.3 \ #框的非极大抑制的IOU(交并比)阈值
        --radius 8 \ #可视化关键点的半价
        --thickness 4 \ #线宽
        --draw-bbox \ #是否要画边界框
        --draw-heatmap \ #是否画热力图
        --show-kpt-idx #是否标明几号关键点

结果展示:
请添加图片描述
下面的代码相比上面的只是更换了模型的权重文件,其他一样

# 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 \
        --device 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

结果展示:
请添加图片描述
预测视频只需要将输入文件由图片路径改为视频路径

1.4 MMPose预训练模型预测-Python API

通过mmpose提供的api,手写全流程,注意文件路径。

2. MMDetection三角板目标检测

2.1下载三角板关键点检测数据集

分别在mmdetection和mmpose两个文件夹都要跑一次。
在mmpose文件夹下跑完后内容如图(在mmdetection文件夹跑完同理):
在这里插入图片描述

补充:
COCO格式的数据集是一种常用的图像识别和物体检测数据集格式,由微软公司和卡内基梅隆大学共同开发。该格式的数据集包含了大量的图像、物体类别、物体边界框以及物体实例的分割信息等。
COCO格式的数据集通常包括以下几个文件:
图像文件夹:包含所有的图像文件,文件名通常为图像的唯一标识符。
标注文件:包含了所有的物体类别、边界框、分割信息等,通常以JSON格式存储。
类别文件:包含了所有的物体类别信息,通常以JSON格式存储。
图像列表文件:包含了所有的图像文件名,用于训练和测试数据集的划分。
标注文件中的数据包含以下几个字段:
“image_id”: 图像的唯一标识符。
“category_id”: 物体的类别标识符,对应类别文件中的类别ID。
“bbox”: 物体的边界框信息,包含了左上角坐标和宽度、高度等信息。
“segmentation”: 物体的分割信息,通常是一个多边形或者一个掩码。
“area”: 物体的面积大小。
“iscrowd”: 标识物体是否为一个团体(例如一群人),以及是否需要进行分割处理。

2.2下载config配置文件

分别在mmdetection和mmpose两个文件夹都要跑一次,会分别获得两个配置文件
在这里插入图片描述

2.3训练

使用教程提供的配置文件以及数据集,训练结果会存在“mmdetection/work_dirs/faster_r_cnn_triangle/”路径下,日志文件在该路径下的以日期命名的文件夹下

2.4可视化训练日志

YOLOV3论文精读中有详细的评估指标的介绍。通过可视化训练日志可以监控到训练过程是否有错,对于小目标和中等目标的评价指标为-1表示数据集中没有此类目标。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5模型权重文件精简转换

把大的权重文件转换为小的权重文件,这是因为训练过程中得到的pth文件包含许多训练的时候的信息,我们在预测的时候用不到这些信息,正如下图的提示所写
在这里插入图片描述
在我运行完这段代码后,模型由331.0 MB减少到165.7MB

2.5下载训练好的模型权重

如果不想自己训练的话,可以下载训练好的模型,注意也要在两个文件夹下都运行。

2.6预测

预测结果会保存为json文件和图片

{"bboxes": [[1816.48095703125, 1074.160400390625, 3174.092041015625, 3364.85791015625], [991.135009765625, 4024.948974609375, 3228.870361328125, 5352.5830078125], [191.60765075683594, 1780.585693359375, 1543.306640625, 4016.48291015625]], "labels": [0, 0, 0], "scores": [0.9999654293060303, 0.9999547004699707, 0.9999374151229858]}

请添加图片描述

3.MMPose、RTMPose三角板关键点检测

基本流程和目标检测的流程是差不多的,具体需要改配置文件里的路径

4.错误整理

(1)在运行【D3】三角板目标检测-可视化训练日志.ipynb时,报错’DataFrame’ object has no attribute ‘append’
解决方案:将.append改为._append
(2)在运行【D3】三角板目标检测-可视化训练日志.ipynb时,报错No such file or directory
解决方案:注意修改路径,下载的目标路径要修改为你的虚拟环境的matplotlib包下面,同时要通过mpl.get_cachedir()获得缓存文件的地址,我的是~/.cache/matplotlib/fontlist-v330.json,然后删除json文件,之后修改envs\openmmlab-learning\lib\site-packages\matplotlib\mpl-data\matplotlibrc文件,如下

# 找到font.family,取消该行注释
font.family:  sans-serif
# 向font.sans-serif行中添加SimHei
font.sans-serif: SimHei, DejaVu Sans, ...

之后重启Terminal
(3)运行【F2】三角板关键点检测-训练RTMPose,报错albumentations is not installed
解决方案:pip install albumentations -i https://pypi.tuna.tsinghua.edu.cn/simple

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是吧这都有重名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值