查看原文
其他

快来抄作业!MICCAI 2023头影关键点检测挑战赛SOTA方案全面解析

SUTD-VLG OpenMMLab 2024-04-23


本文来自社区投稿,作者:SUTD-VLG


在刚刚结束的 MICCAI 2023 头影关键点定位的挑战赛中,我们团队取得了 SOTA 表现(3个指标第一,1个第三)。为了提高实验效率和方便项目管理,我们全程基于 MMPose 框架开展比赛。在比赛过程中,我们使用了一些对高分辨率图中关键点检测的十分有效的解决方案:


  • 采用超分辨率的思路,在原分辨率上进行热图的回归,减少定位误差;

  • 模型选择和方法方面我们使用了 HRNet 骨干网络和 DARK 处理方法;


所有的模型权重和全部代码都已开源,欢迎大家使用~ 


具体的代码仓库链接在这里:https://github.com/5k5000/CLdetection2023



比赛介绍


头影关键点挑战赛 CL-Detection2023 是由深圳大学、国立台湾科技大学和深圳大学总医院主办的国际性赛事。本赛事的目标是从高分辨的 X 光图像中检测定位出 38 个关键点。为此,挑战赛提供了多中心、多仪器的 600 张 X 光图像(训练:验证:测试=400:50:150),每张图像均标注了 38 个不同的头颅解剖关键点。然而,区别于常见的自然图像的人体姿态估计的任务,如何处理高分辨率和低对比度的医学图像是此次挑战赛的难点,为此我们也针对性地进行了模型的设计。


挑战赛的官网为:

https://cl-detection2023.grand-challenge.org/


接下来呢,我们将从任务分析模型选择偏差矫正等方面来详细地介绍我们的 SOTA 解决方案。



医学关键点检测 VS 人体姿态估计


在这里粗略谈一下我们视角里的医学关键点检测和人体姿态估计的异同。从任务上而言,前者可以认为是后者的子集,并且任务会更加简单。这是因为人体姿态估计中不仅需要对人体的关键点准确定位,还需要将每个关键点分配到不同实例中;而在 CL-Detection 比赛中针对的是单人的头部 X 光图像,也就是说没有先定位出不同人头部的需求。


在现今人体姿态估计的框架中分成了自顶向下(先用检测方法定位出每个人,再进行单人的关键点检测)和自底向上)定位出所有关键点,再使用算法对同属一个人体的关键点进行连接)两种流派。我们在比赛中自然地选择了自顶向下的框架,只需要固定将完整的图像作为预先的检测框送入框架即可完成适配。


既然二者的任务如此相似,是否在两个领域内的方法设计范式也非常接近呢?针对这个任务我们在两个领域内分别进行了调研,我们发现即使两者在任务上相似,但是两个领域的研究者们思考的重点却有不小的差异:(见下图)



在方法框架上:在头影关键点检测中,研究者们所使用的方法框架更加多样,一方面大家受到领域内经典架构 UNet 设计的熏陶,大家常使用经典的 U 型下采样-上采样架构作为基本架构再加以其它设计来完成关键点热力图的生成,其次我们注意到该领域内的研究者们会比较偏好多阶段设计(由粗到细)或者多阶段训练。在人体姿态估计中,方法框架表现的更加统一,遵循了 Backbone-Neck-Head 的架构,如下图所示:



在偏差矫正上:在人体关键点中,研究者们针对方法流程中以及热力图定位中的偏差, 进行了详细地探讨(见 2020 年 CVPR 的两篇文章 UDP[1] 和 DARK[2] ), 他们针对基于热力图方法的关键点定位设计了一套无偏的数据处理以及热力图定位后处理方法,来矫正方法中的偏差,能够显著地提升模型精准定位的能力。然而,在头影关键点检测任务上, 我们发现偏差的问题却很少被研究和考虑。(实际上这样的偏差问题在两个任务上都同样存在,我们在后面的实验中也验证了偏差矫正对进一步精细定位的作用)



因此,在这次比赛中我们的动机就是:


  1. 在医学关键点检测任务上,结合 MMPose 框架重新探索经典 Backbone-Neck-Head 的架构并考虑热力图定位中的偏差矫正的问题,在获得卓越性能的同时,为领域提供一个强大且便于探索的基线模型。 

  2. 考虑到医学图像本身的大尺度的成像特性(1900 * 2400) , 我们试图采用超分辨率的思路,在原图像尺寸分辨率下完成热力图回归,以进一步减少热力图定位的难度与误差。



方法设计



我们的方法框架如上图所示。具体而言,我们采取了下面的改进措施:


1. 特征提取和融合:选择了 HRNet-w48[3] 作为骨干网络用于提取多个尺度的特征,在 Neck 和 Head 的设计上我们参考了近期的一个工作 SRPose [4]。在 Neck 的 Fusion 模块(用于聚合相邻层级的特征), 采用了可分离卷积的设计(将常规卷积分解成 Depth-wise Convolution 和 Point-Wise Convolution 的组合) 来减少模型参数量。


2.特征的解码:Head 的功能是将 Neck 中聚合的特征解析成关键点的热力图。为了获得原图尺寸的热力图,需将 Neck 中的下采样的聚合特征进行上采样到原图分辨率。在 SRpose 的 Head 中,使用了超分辨率的技术 Pixel Shuffle——将通道“拉伸”形成上采样的图像。具体而言,我们首先使用一个关键点的解码器 Encoder 将 Neck 中的特征针对不同关键点解析出其独有的关键点特征。随后,使用大核卷积针对每一个关键点特征按照上采样比例 s 进行通道维度的扩增;最后,再通过 pixel shuffle 将多个小热力图转换成大尺寸的上采样热力图。


3. 无偏后处理:我们采用了 DARK 作为无偏数据处理以及后处理方法,来矫正方法中的偏差,以显著地提升模型精准定位的能力。


4. 深监督训练:在训练过程中,我们对超分辨率的热力图进行了多个层级的热力图计算 L2 损失,我们通过实验发现仅对 Neck 中聚合特征的倒数两层进行监督,能实现最优的效果。



实验与性能结果


官网排行榜单


CL-Detection 挑战赛分为两个阶段: validation 和 test, 在两个阶段上分别计算两个指标 Mean Radial Error (MRE), 即预测点到金标准的平均距离,以及 Successful Detection Rate under 2mm (SDR2),即允许误差小于 2mm 的成功检测率。我们的方法在两张榜单 4 个指标上,3 个取得了第一,1 个取得了第三

排名结果可在官网的排行榜上查看(用户名为fivethousand):
https://cl-detection2023.grand-challenge.org/evaluation/challenge/leaderboard/


本地对比实验和消融实验的结果:


我们在下面这张图中展现了我们在比赛阶段中的探索之路:我们的一切探索从 HRNet-w48 出发(见第一行“B1: HRNet-w48),将它作为最初的基线。随后,我们在基线模型 HRNet-w48 的基础上中增加不同的模块或者调整超参数,一旦发现某次调整能够带来新的增益后,我们便将调整后的方法更新作为新的基线模型。例如,我们在“B1: HRNet-w48”的基础上将输入调整为 1024*1024 后得到了更好的结果,我们便将新的设置作为基线模型,记作“B2: B1 + larger input (1024x1024)", 以此类推。(每个加深的行都是新的基线模型)



具体来说,我们在这里总结了一些根据我们的尝试,有增益和无增益的改动。


有用的尝试:


  1. 无偏数据处理与热力图后处理:MRE 误差从 1.786 降低到了 1.729,SDR 2mm 成功检测率从 72.9% 提升到了74.2%,性能有了相对明显的提升 (参考 B6)。

  2. 大尺寸图像输入:SDR 2mm 成功检测率从 65.2% 提升到 70.2%,性能提高了 5%(参考 B2)。

  3. 合适的 Sigma 值:这可以为模型性能带来 1%~2% 的性能提高(参考 B3 和 B8)。

  4. 合适的数据增强和测试时增强 TTA:数据增强和 TTA 不愧是打比赛涨点的选择方案,这能够带来约 1% 的改进。

  5. 超分辨率的热力图回归:通过超分辨率的尺度的热图回归+深监督的方式,模型表现依旧继续上升,带来了约 1% 的上涨。


无用的尝试:


  1. 其他的损失函数:如 AdaptiveWingLoss 和 FocalLoss,这两个损失函数的使用在我们解决方案里面没有性能上的帮助,还会增加训练的不稳定性。

  2. 在线困难样本挖掘:这是一个直觉性的选择方案,但是并没有带来性能上的提升。

  3. 为某些关键点训练专家模型:并没有因为设计专家模型而带来性能改进,还带来了模型冗余,打破了统一的模型框架。如果要提升性能,可能需要特别的针对性设计才会带来提升。

  4. 训练时根据关键点裁剪最小外包矩形:我们任务这一个操作没有带来提升的原因是因为头影关键点分布已经相对离散了,外包矩形和整幅图的大小相差无几,没有起到作用也是可以理解的。



可视化的结果展示


图中,红色是预测点,绿色是金标准,黄色的线为对应金标准和预测点两个点连接的直线,长短可视化表示了误差大小。



总结一波


Talk is cheap, please show me your code. 欢迎大家关注我们的方案,比赛方案中的所有细节都放在了论文和代码仓库中,大家可以来抄作业呀~


论文:

https://arxiv.org/pdf/2309.17143.pdf

代码:

https://github.com/5k5000/CLdetection2023


此外,我们将比赛方案在其它医学关键点检测数据集上进行了适配并增加了一系列新的设计,在不久的将来会将新的论文挂出,敬请期待。


参考文献:


[1] Huang J, Zhu Z, Guo F, et al. The devil is in the details: Delving into unbiased data processing for human pose estimation[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020: 5700-5709.

[2] Zhang F, Zhu X, Dai H, et al. Distribution-aware coordinate representation for human pose estimation[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020: 7093-7102.

[3] Wang J, Sun K, Cheng T, et al. Deep high-resolution representation learning for visual recognition[J]. IEEE transactions on pattern analysis and machine intelligence, 2020, 43(10): 3349-3364.

[4] Wang H, Liu J, Tang J, et al. Lightweight Super-Resolution Head for Human Pose Estimation[J]. arXiv preprint arXiv:2307.16765, 2023.

金融领域专属大模型!FinGPT的创新技术架构与应用实践揭秘

2023-11-20

简化部署,优化推理!LMDeploy RESTful API 让大模型落地更丝滑

2023-11-17

YOLO系列模型的部署、精度对齐与int8无损失量化加速

2023-11-16

点击下方“阅读原文”直达代码仓库页面

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存