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

相关文章

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装