当前位置: 首页 > news >正文

从零开始的目标检测和关键点检测(三):训练一个Glue的RTMPose模型

从零开始的目标检测和关键点检测(三):训练一个Glue的RTMPose模型

  • 一、重写config文件
  • 二、开始训练
  • 三、ncnn部署

从零开始的目标检测和关键点检测(一):用labelme标注数据集

从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型

一、重写config文件

1、数据集类型即coco格式的数据集,在dataset_info声明classes、keypoint_info(关键点)、skeleton_info(骨架信息)。

dataset_type = 'CocoDataset'
data_mode = 'topdown'
data_root = 'E:\\pythonproject\\mmdetection\\data\\glue_134_Keypoint\\'# glue关键点检测数据集-元数据
dataset_info = {'dataset_name':'glue_134_Keypoint','classes':'glue','keypoint_info':{0:{'name':'head','id':0,'color':[255,0,0],'type': '','swap': ''},1:{'name':'tail','id':1,'color':[0,255,0],'type': '','swap': ''},},'skeleton_info': {0: {'link':('head','tail'),'id': 0,'color': [100,150,200]},}
}

2、训练参数

# 训练超参数
max_epochs = 200 # 训练 epoch 总数
val_interval = 10 # 每隔多少个 epoch 保存一次权重文件
train_cfg = {'max_epochs': max_epochs, 'val_interval': val_interval}
train_batch_size = 32
val_batch_size = 8
stage2_num_epochs = 20
base_lr = 4e-3
randomness = dict(seed=21)# 优化器
optim_wrapper = dict(type='OptimWrapper',optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05),paramwise_cfg=dict(norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True))# 学习率
param_scheduler = [dict(type='LinearLR', start_factor=1.0e-5, by_epoch=False, begin=0, end=20),dict(# use cosine lr from 210 to 420 epochtype='CosineAnnealingLR',eta_min=base_lr * 0.05,begin=max_epochs // 2,end=max_epochs,T_max=max_epochs // 2,by_epoch=True,convert_to_iter_based=True),
]# automatically scaling LR based on the actual training batch size
auto_scale_lr = dict(base_batch_size=1024)

3、模型定义、数据预处理、数据加载

详细见源码。

二、开始训练

1、开始训练

python tools/train.py data/glue_134_Keypoint/rtmpose-t-glue.py

2、训练结果

07/27 14:34:07 - mmengine - INFO - Epoch(val) [200][6/6]    \
coco/AP: 0.851412  coco/AP .5: 1.000000  coco/AP .75: 1.000000  coco/AP (M): -1.000000 \
coco/AP (L): 0.857120  coco/AR: 0.892683  coco/AR .5: 1.000000  coco/AR .75: 1.000000  \
coco/AR (M): -1.000000  coco/AR (L): 0.892683  \
PCK: 1.000000  AUC: 0.789634  NME: 0.013435  data_time: 0.044700  time: 0.070389

测试一下训练结果

topdown测试 RTMDet + RTMPose

python demo/topdown_demo_with_mmdet.py \E:\\pythonproject\\mmdetection\\data\\glue_134_Keypoint\\rtmdet_tiny_glue.py \E:\\pythonproject\\mmdetection\\work_dirs\\rtmdet_tiny_glue\\best_coco_bbox_mAP_epoch_180.pth \data/glue_134_Keypoint/rtmpose-t-glue.py \work_dirs/rtmpose-t-glue/best_PCK_epoch_90.pth \--input data/glue_134_Keypoint/test_image/img.png \--output-root data/glue_134_Keypoint/test_image/result/ \--device cpu \--bbox-thr 0.5 \--kpt-thr 0.5 \--nms-thr 0.3 \--radius 5 \--thickness 5 \--draw-bbox  \--draw-heatmap \--show-kpt-idx

在这里插入图片描述
Pose测试 RTMPose,即手动把glue截出来再丢到网络里

python demo/image_demo.py data/glue_134_Keypoint/test_image/img_2.png \data/glue_134_Keypoint/rtmpose-t-glue.py \work_dirs/rtmpose-t-glue/best_PCK_epoch_90.pth \--out-file data/glue_134_Keypoint/test_image/result_2.png \--draw-heatmap

在这里插入图片描述
3、训练过程可视化

训练集损失函数

在这里插入图片描述

训练集准确率

在这里插入图片描述

测试集评估指标

在这里插入图片描述

测试集评估指标

在这里插入图片描述

三、ncnn部署

在线模型转换:Deploee

上传文件完成在线转换

http://www.lryc.cn/news/216167.html

相关文章:

  • Qt6 中弹出消息框,一段时间后自动退出
  • elementUI树节点全选,反选,半选状态
  • Kafka、RabbitMQ、RocketMQ中间件的对比
  • Mac 创建并使用 .zshrc 文件
  • Unity3D移动开发如何依据性能选择Shader
  • 基于stm32F4的智能宠物喂食器的设计:LVGL界面、定时喂食喂水通风
  • jumpserver堡垒机docker方式安装部署
  • 在基于亚马逊云科技的湖仓一体架构上构建数据血缘的探索和实践
  • VScode clangd 插件浏览 linux 源码
  • GZ035 5G组网与运维赛题第8套
  • 《golang设计模式》第三部分·行为型模式-02-命令模式(Command)
  • 【linux进程控制(一)】进程终止--如何干掉一个进程?
  • 言情小说怎么推广?如何推广网络小说?
  • TensorFlow 的应用场景有哪些
  • JAVA提取嵌套夹带文件之Apache Tika
  • SSL数字证书服务
  • 浅谈安科瑞直流电表在荷兰光伏充电桩系统中的应用
  • 淘宝详情API接口怎么实现大数据分析和商品价格监控
  • 智能政务,办事更轻松!拓世法宝AI智慧政务数字人一体机,重新定义你的政务办理体验!
  • WebBits库如何使用
  • 通过netstat命令查看Linux的端口占用
  • 不用动脑小白也能制作出精美的电子杂志
  • 【计算系统】5分钟了解超算,高性能计算,并行计算,分布式计算,网格计算,集群计算以及云计算的区别
  • 6大场景,玩转ChatGPT!
  • 工业废水再利用在哪些地方
  • Spring Cloud的ElasticSearch的进阶学习
  • WordPress恢复时候遇到的几个问题
  • 设备码解释
  • 基于Docker-consul容器服务更新与发现
  • firefox浏览器添加自定义搜索引擎方法