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

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

猜你喜欢

转载自blog.csdn.net/qq_41776136/article/details/131018630