AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测

本文主要是介绍AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 题目:基于RTMPose的耳朵穴位关键点检测
  • 背景
  • 任务
  • 数据集
  • 训练目标检测器
    • 错误:NameError: name 'unicode' is not defined
  • 评估目标检测器
  • 训练关键点检测器
  • 评估关键点检测器
  • 模型轻量化转换
    • 目标检测器模型
    • 关键点检测器模型

题目:基于RTMPose的耳朵穴位关键点检测

背景

根据中医的“倒置胎儿”学说,耳朵的穴位反映了人体全身脏器的健康,耳穴按摩可以缓解失眠多梦、内分泌失调等疾病。耳朵面积较小,但穴位密集,涉及耳舟、耳轮、三角窝、耳甲艇、对耳轮等三维轮廓,普通人难以精准定位耳朵穴位。

任务

Labelme标注关键点检测数据集(子豪兄已经帮你完成了)
划分训练集和测试集(子豪兄已经帮你完成了)
Labelme标注转MS COCO格式(子豪兄已经帮你完成了)
使用MMDetection算法库,训练RTMDet耳朵目标检测算法,提交测试集评估指标
使用MMPose算法库,训练RTMPose耳朵关键点检测算法,提交测试集评估指标
用自己耳朵的图像预测,将预测结果发到群里
用自己耳朵的视频预测,将预测结果发到群里
需提交的测试集评估指标(不能低于baseline指标的50%)
目标检测Baseline模型(RTMDet-tiny)
RTMDet-tiny
在这里插入图片描述

关键点检测Baseline模型(RTMPose-s)
RTMPose-s
在这里插入图片描述

数据集

耳朵穴位关键点检测数据集,MS COCO格式,划分好了训练集和测试集,并写好了样例config配置文件
链接: https://pan.baidu.com/s/1swTLpArj7XEDXW4d0lo7Mg 提取码: 741p

在这里插入图片描述
将数据集下载完成后,分别放到mmpose和mmdetection的data文件夹下,如图:
在这里插入图片描述

训练目标检测器

修改该数据集的配置:

# 数据集类型及路径
dataset_type = 'CocoDataset'
data_root = 'data/Ear210_Keypoint_Dataset_coco/'
metainfo = {'classes': ('ear',)}
NUM_CLASSES = len(metainfo['classes'])

然后执行命令:

python tools/train.py data/faster_r_cnn_triangle.py

在这里插入图片描述

错误:NameError: name ‘unicode’ is not defined

python2 的unicode 函数在 Python3 中被命名为 str。在 Python3 中使用 ·str 来代替 Python2 中的 unicode.

在这里插入图片描述

如果还有错误,将pycocotools的版本改为2.0.2。
训练完成后
在这里插入图片描述

评估目标检测器

执行命令:

 python tools/test.py data/faster_r_cnn_triangle.py  work_dirs/faster_r_cnn_triangle/best_coco_bbox_mAP_epoch_50.pth

在这里插入图片描述

训练关键点检测器

更改数据集路径和类别

_base_ = ['mmpose::_base_/default_runtime.py']# 数据集类型及路径
dataset_type = 'CocoDataset'
data_mode = 'topdown'
data_root = 'data/Ear210_Keypoint_Dataset_coco/'# 三角板关键点检测数据集-元数据
dataset_info = {'dataset_name':'Ear210_Keypoint_Dataset_coco','classes':'ear','paper_info':{'author':'Tongji Zihao','title':'Triangle Keypoints Detection','container':'OpenMMLab','year':'2023','homepage':'https://space.bilibili.com/1900783'},'keypoint_info':{0:{'name':'肾上腺','id':0,'color':[255,0,0],'type': '','swap': ''},1:{'name':'耳尖','id':1,'color':[0,255,0],'type': '','swap': ''},2:{'name':'胃','id':2,'color':[0,0,255],'type': '','swap': ''},3: {'name': '眼', 'id': 3, 'color': [255, 255, 0], 'type': '', 'swap': ''},4: {'name': '口', 'id': 4, 'color': [0, 255, 255], 'type': '', 'swap': ''},5: {'name': '肝', 'id': 5, 'color': [255, 0, 128], 'type': '', 'swap': ''},6: {'name': '对屏尖', 'id': 6, 'color': [50, 255, 50], 'type': '', 'swap': ''},7: {'name': '心', 'id': 7, 'color': [0, 50, 255], 'type': '', 'swap': ''},8: {'name': '肺', 'id': 8, 'color': [255, 50, 128], 'type': '', 'swap': ''},9: {'name': '肺2', 'id': 9, 'color': [128, 255, 128], 'type': '', 'swap': ''},10: {'name': '膀胱', 'id': 10, 'color': [255, 255, 255], 'type': '', 'swap': ''},11:{'name':'脾','id':11,'color':[255,0,0],'type': '','swap': ''},12:{'name':'角窝中','id':12,'color':[0,255,0],'type': '','swap': ''},13:{'name':'神门','id':13,'color':[0,50,255],'type': '','swap': ''},14: {'name': '肾', 'id': 14, 'color': [255, 255, 0], 'type': '', 'swap': ''},15: {'name': '耳门', 'id': 15, 'color': [0, 255, 255], 'type': '', 'swap': ''},16: {'name': '听宫', 'id': 16, 'color': [0, 128, 255], 'type': '', 'swap': ''},17: {'name': '听会', 'id': 17, 'color': [255, 0, 128], 'type': '', 'swap': ''},18: {'name': '肩', 'id': 18, 'color': [50, 255, 50], 'type': '', 'swap': ''},19: {'name': '扁桃体', 'id': 19, 'color': [0, 50, 255], 'type': '', 'swap': ''},20: {'name': '腰骶椎', 'id': 20, 'color': [255, 50, 128], 'type': '', 'swap': ''},},'skeleton_info': {0: {'link':('肾上腺','肾上腺'),'id': 0,'color': [100,150,200]},1: {'link':('耳尖','耳尖'),'id': 1,'color': [200,100,150]},2: {'link':('胃','胃'),'id': 2,'color': [150,120,100]},3: {'link': ('眼', '眼'), 'id': 3, 'color': [15, 150, 200]},4: {'link': ('口', '口'), 'id': 4, 'color': [150, 100, 150]},5: {'link': ('肝', '肝'), 'id': 5, 'color': [150, 120, 200]},6: {'link': ('对屏尖', '对屏尖'), 'id': 6, 'color': [200, 150, 120]},7: {'link': ('心', '心'), 'id': 7, 'color': [200, 100, 100]},8: {'link': ('肺', '肺'), 'id': 8, 'color': [150, 120, 50]},9: {'link': ('肺2', '肺2'), 'id': 9, 'color': [100, 50, 200]},10: {'link': ('膀胱', '膀胱'), 'id': 10, 'color': [250, 100, 150]},11: {'link': ('脾', '脾'), 'id': 11, 'color': [150, 250, 100]},12: {'link': ('角窝中', '角窝中'), 'id': 12, 'color': [100, 250, 200]},13: {'link': ('神门', '神门'), 'id': 13, 'color': [110, 180, 150]},14: {'link': ('肾', '肾'), 'id': 14, 'color': [150, 50, 50]},15: {'link': ('耳门', '耳门'), 'id': 15, 'color': [100, 250, 255]},16: {'link': ('听宫', '听宫'), 'id': 16, 'color': [200, 200, 150]},17: {'link': ('听会', '听会'), 'id': 17, 'color': [200, 200, 200]},18: {'link': ('肩', '肩'), 'id': 18, 'color': [100, 50, 50]},19: {'link': ('扁桃体', '扁桃体'), 'id': 19, 'color': [30, 100, 250]},20: {'link': ('腰骶椎', '腰骶椎'), 'id': 20, 'color': [125, 250, 100]},}
}

安装必要的库

 pip install pyqtwebengine

开始训练

python tools/train.py data/rtmpose-s-ear.py

在这里插入图片描述

评估关键点检测器

执行命令:

python tools/test.py data/rtmpose-s-ear.py  work_dirs/rtmpose-s-ear/best_PCK_epoch_220.pth

在这里插入图片描述

模型轻量化转换

目标检测器模型

python tools/model_converters/publish_model.py work_dirs/faster_r_cnn_triangle/epoch_50.pth checkpoint/faster_r_cnn_triangle_epoch_50_0606.pth

在这里插入图片描述

关键点检测器模型

python tools/model_converters/publish_model.py work_dirs/rtmpose-s-ear/best_PCK_epoch_220.pth checkpoint/best_0606.pth

在这里插入图片描述

这篇关于AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/131065236
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/278298

相关文章

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Spring AI 实现 STDIO和SSE MCP Server的过程详解

《SpringAI实现STDIO和SSEMCPServer的过程详解》STDIO方式是基于进程间通信,MCPClient和MCPServer运行在同一主机,主要用于本地集成、命令行工具等场景... 目录Spring AI 实现 STDIO和SSE MCP Server1.新建Spring Boot项目2.a

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R