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

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

背景

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

任务

Labelme标注关键点检测数据集(子豪兄已经帮你完成了)
划分训练集和测试集(子豪兄已经帮你完成了)
Labelme标注转MS COCO格式(子豪兄已经帮你完成了)
使用MMDetection算法库,训练RTMDet耳朵目标检测算法,提交测试集评估指标
使用MMPose算法库,训练RTMPose耳朵关键点检测算法,提交测试集评估指标
用自己耳朵的图像预测,将预测结果发到群里
用自己耳朵的视频预测,将预测结果发到群里
需提交的测试集评估指标(不能低于baseline指标的50%)
目标检测Baseline模型(RTMDet-tiny)
RTMDet-tiny
AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测_第1张图片

关键点检测Baseline模型(RTMPose-s)
RTMPose-s
AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测_第2张图片

数据集

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

AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测_第3张图片
将数据集下载完成后,分别放到mmpose和mmdetection的data文件夹下,如图:
AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测_第4张图片

训练目标检测器

修改该数据集的配置:

# 数据集类型及路径
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

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

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

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

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

如果还有错误,将pycocotools的版本改为2.0.2。
训练完成后
AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测_第7张图片

评估目标检测器

执行命令:

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

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

训练关键点检测器

更改数据集路径和类别

_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

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

评估关键点检测器

执行命令:

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

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

模型轻量化转换

目标检测器模型

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

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

关键点检测器模型

 python tools/misc/publish_model.py   work_dirs/faster_r_cnn_triangle/best_coco_bbox_mAP_epoch_45.pth    checkpoint/faster_r_cnn_triangle_epoch45.pth

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

你可能感兴趣的:(OpenMMLab,人工智能)