一、安装MMPose
1、用MIM安装MMCV
pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.1"
mim install "mmdet>=3.1.0"
2、 安装其它工具包
pip install opencv-python pillow matplotlib seaborn tqdm pycocotools -i https://pypi.tuna.tsinghua.edu.cn/simple
3、下载 MMPose
git clone https://github.com/open-mmlab/mmpose.git -b tutorial2023
(官方的版本会实时更新,这里是一位大佬申请的版本固定的版本,使用官方版本应该也可以)
4、进入MMPose目录
cd *****
5、安装 MMPose
pip install -r requirements.txt
pip install -v -e .
# "-v" 表示输出更多安装相关的信息 # "-e" 表示以可编辑形式安装,这样可以在不重新安装的情况下,让本地修改直接生效
6、安装验证
1、下载配置文件和模型权重文件
mim download mmpose --config td-hm_hrnet-w48_8xb32-210e_coco-256x192 --dest .
下载过程往往需要几秒或更多的时间,这取决于您的网络环境。完成之后,您会在当前目录下找到这两个文件:td-hm_hrnet-w48_8xb32-210e_coco-256x192.py
和 hrnet_w48_coco_256x192-b9e0b3ab_20200708.pth
, 分别是配置文件和对应的模型权重文件。
2、验证推理示例
python demo/image_demo.py tests/data/coco/000000000785.jpg td-hm_hrnet-w48_8xb32-210e_coco-256x192.py hrnet_w48_coco_256x192-b9e0b3ab_20200708.pth --out-file vis_results.jpg --draw-heatmap
3、可视化结果
7、下载预训练模型权重文件和视频素材
新建一个Python File文件,复制下面内容:(创建文件夹)
import os
# 创建 checkpoint 文件夹,用于存放预训练模型权重文件
os.mkdir('checkpoint')
# 创建 outputs 文件夹,用于存放预测结果
os.mkdir('outputs')
# 创建 data 文件夹,用于存放图片和视频素材
os.mkdir('data')
os.mkdir('data/test')
素材地址:(分别下载放到data文件夹中)
# 多人图片
https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20220610-mmpose/images/multi-person.jpeg
# 单人视频-唱跳篮球
https://zihao-openmmlab.obs.myhuaweicloud.com/20220610-mmpose/videos/cxk.mp4
# 妈妈和女儿跳舞,经微信压缩
https://zihao-openmmlab.obs.myhuaweicloud.com/20220610-mmpose/videos/mother_wx.mp4
# 两个女生跳舞视频
https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20220610-mmpose/videos/two-girls.mp4
8、检查安装成功
新建一个Python File文件,复制下面内容:
# 检查 Pytorch
import torch, torchvision
print('Pytorch 版本', torch.__version__)
print('CUDA 是否可用',torch.cuda.is_available())
# 检查 mmcv
import mmcv
from mmcv.ops import get_compiling_cuda_version, get_compiler_version
print('MMCV版本', mmcv.__version__)
print('CUDA版本', get_compiling_cuda_version())
print('编译器版本', get_compiler_version())
# 检查 mmpose
import mmpose
print('mmpose版本', mmpose.__version__)
二、安装MMDetection
1、用MIM安装MMCV
pip install -U openmim
mim install mmcv-full
mim install mmengine
mim install 'mmcv==2.0.0rc3'
mim install "mmdet>=3.0.0rc6"
2、安装其它工具包
pip install opencv-python pillow matplotlib seaborn tqdm pycocotools -i https://pypi.tuna.tsinghua.edu.cn/simple
3、下载 MMDetection
git clone https://github.com/open-mmlab/mmdetection.git -b 3.x
(官方的版本会实时更新,这里是一位大佬申请的版本固定的版本,使用官方版本应该也可以)
4、进入MMPose目录
cd *****
5、安装 MMDetection
pip install -v -e .
# "-v" 指详细说明,或更多的输出 # "-e" 表示在可编辑模式下安装项目,因此对代码所做的任何本地修改都会生效,从而无需重新安装。
6、验证安装
1、下载配置文件和模型权重文件
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .
2、推理验证
python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu
你会在当前文件夹中的 outputs/vis
文件夹中看到一个新的图像 demo.jpg
,图像中包含有网络预测的检测框。
7、下载预训练模型权重文件和视频素材
新建一个Python File文件,复制下面内容:(新建文件夹)(素材在mmpose里,复制过来)
import os
# 创建 checkpoint 文件夹,用于存放预训练模型权重文件
os.mkdir('checkpoint')
# 创建 outputs 文件夹,用于存放预测结果
os.mkdir('outputs')
# 创建 data 文件夹,用于存放图片和视频素材
os.mkdir('data')
os.mkdir('data/test')
8、检查安装成功
# 检查 Pytorch
import torch, torchvision
print('Pytorch 版本', torch.__version__)
print('CUDA 是否可用',torch.cuda.is_available())
# 检查 mmcv
import mmcv
from mmcv.ops import get_compiling_cuda_version, get_compiler_version
print('MMCV版本', mmcv.__version__)
print('CUDA版本', get_compiling_cuda_version())
print('编译器版本', get_compiler_version())
# 检查 mmpose
import mmdet
print('mmdetection版本', mmdet.__version__)
三、MMPose预训练模型预测
1、进入 mmpose 主目录
2、预测单张图像
(1)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 --kpt-thr 0.2 --nms-thr 0.3 --radius 8 --thickness 4 --draw-bbox --draw-heatmap --show-kpt-idx
(2)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
3、预测视频:直接将--input
换成视频路径即可
四、关键点检测数据集
1、标定数据集
pip install labelme
2、使用labelme标注图片,图片和数据集分别存放与不同的文件夹中
——文件夹名字 |
---images |
---labelme_jsons |
3、由于需要对数据集进行格式转换(转换成coco格式)
使用地址(同济自豪师兄),需要使用jupyter使用
4、【B】划分训练集和测试集:
(1)In【2】:里面的路径换成图片和标注所在的路径(文件夹的名字即可)
(2)中间删除的步骤全部跳过
(3)运行划分训练集和测试集
(4)继续向下运行
5、【D】Labelme转COCO-批量:
(1)导入工具包(运行即可)
(2)运行指定数据集信息
① In【2】中的地址路径修改(文件夹的名字即可)
② In【3】中 'supercategory' 换成标注时框的名字、'id' 换成框的个数、'name' 也换成标注时框的名字、'keypoints' 换成标注时点的名称、'skeleton' 可以进行修改,可以规定哪两个关键点之间可以进行连线。
③ 运行下一步———函数-处理单个labelme标注json文件
④ 运行下一步———函数-转换当前目录下所有labelme格式的json文件
⑤ 继续向下运行
.................................
⑥ 最终在最初文件夹下会出现两个文件
train_coco.json |
val_coco.json |
五、目标检测下载config配置文件
1、选择RTMDet模型
https://github.com/open-mmlab/mmdetection/tree/3.x/configs/rtmdet
2、下载config配置文件至data
目录
https://zihao-openmmlab.obs.myhuaweicloud.com/20220610-mmpose/triangle_dataset/rtmdet_tiny_triangle.py
在里面包括:RTMDet-tiny RTMDet-s RTMDet-m RTMDet-l。
3、要在mmpose
和mmdetection
两个目录都运行一遍
六、目标检测-训练
1、进入mmdetection主目录
2、目标检测算法:RTMDet
在命令行中运行
python tools/train.py data/rtmdet_tiny_triangle.py
在work_dirs
目录下,查看训练日志和训练得到的模型权重文件
3、测试集上评估模型精度
python tools/test.py data/rtmdet_tiny_triangle.py work_dirs/rtmdet_tiny_triangle/epoch_200.pth
七、目标检测-模型权重文件精简转换
1、进入mmdetection主目录
2、模型轻量化转换
# RTMDet-tiny
python tools/model_converters/publish_model.py work_dirs/rtmdet_tiny_triangle/epoch_200.pth checkpoint/rtmdet_tiny_triangle_epoch_200_202305120847.pth
模型权重文件保存在checkpoint
目录
八、目标检测-预测
1、进入mmdetection主目录
2、目标检测预测-单张图像
# RTMDet
python demo/image_demo.py data/test_triangle/triangle_3.jpg data/rtmdet_tiny_triangle.py --weights checkpoint/rtmdet_tiny_triangle_epoch_200_202305120847-3cd02a8f.pth --out-dir outputs/E2_rtmdet --device cuda:0 --pred-score-thr 0.3
3、目标检测预测-视频
# RTMDet
python demo/video_demo.py data/test_triangle/triangle_9.mp4 data/rtmdet_tiny_triangle.py data/rtmdet_tiny_triangle.py --device cuda:0 --score-thr 0.6 --out outputs/E2_out_video_rtmdet.mp4
4、目标检测预测-摄像头实时画面
九、关键点检测-下载config配置文件
1、进入 mmpose 主目录
2、下载config配置文件至data
目录
https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20220610-mmpose/triangle_dataset/rtmpose-s-triangle.py
里面选择:RTMPose-S、 RTMPose-M、 RTMPose-L、 RTMPose-X(不用的注释掉)
十、关键点检测-训练RTMPose
1、进入 mmpose 主目录
2、训练(建议在命令行中运行)
python tools/train.py data/rtmpose-s-triangle.py
3、测试集上评估模型精度
python tools/test.py data/rtmpose-s-triangle.py work_dirs/rtmpose-s-triangle/epoch_300.pth
十一、关键点检测-模型权重文件精简转换
1、进入 mmpose 主目录
2、模型精简转换
python tools/misc/publish_model.py work_dirs/rtmpose-s-triangle/epoch_300.pth checkpoint/rtmpose-s-triangle-300.pth
十二、关键点检测预测-命令行
1、进入 mmpose 主目录
2、单张图像-关键点检测预测
# RTMDet --> RTMPose
python demo/topdown_demo_with_mmdet.py data/rtmdet_tiny_triangle.py checkpoint/rtmdet_tiny_triangle_epoch_200_202305120847-3cd02a8f.pth data/rtmpose-s-triangle.py checkpoint/rtmpose-s-triangle-300-32642023_20230524.pth --input data/test_triangle/triangle_4.jpg --output-root outputs/G2_RTMDet-RTMPose --device cuda:0 --bbox-thr 0.5 --kpt-thr 0.5 --nms-thr 0.3 --radius 36 --thickness 30 --draw-bbox --draw-heatma --show-kpt-idx
3、视频-关键点检测预测
# RTMDet --> RTMPose
python demo/topdown_demo_with_mmdet.py data/rtmdet_tiny_triangle.py checkpoint/rtmdet_tiny_triangle_epoch_200_202305120847-3cd02a8f.pth data/rtmpose-s-triangle.py checkpoint/rtmpose-s-triangle-300-32642023_20230524.pth --input data/test_triangle/triangle_9.mp4 --output-root outputs/G2_Video --device cuda:0 --bbox-thr 0.5 --kpt-thr 0.5 --nms-thr 0.3 --radius 16 --thickness 10 --draw-bbox --draw-heatmap --show-kpt-id