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的耳朵穴位关键点检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/278298

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...