题目:基于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
文章来源:https://www.toymoban.com/news/detail-473663.html
关键点检测器模型
python tools/model_converters/publish_model.py work_dirs/rtmpose-s-ear/best_PCK_epoch_220.pth checkpoint/best_0606.pth
文章来源地址https://www.toymoban.com/news/detail-473663.html
到了这里,关于AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!