0
点赞
收藏
分享

微信扫一扫

手骨关键点检测案例

关键点检测应用有很多,在医学上比如手骨关键点检测,膝关节关键点检测等。今天我就以手骨关键点检测为例,通过卷积神经网络来实现检测。

1、关键点检测的常见两种深度学习方法

关键点检测的最终任务是输出预测关节点位置的坐标,目前关键点检测主要有两类方法(1)、用卷积神经网络+全连接层直接回归坐标点(坐标值回归);(2)、在坐标位置处加高斯函数生成热力图,让卷积神经网络输出预测热力图,训练后者与前者接近(热力图回归)。

这两种方法各有优缺点:方法1直接让网络输出坐标来进行优化学习是一个极其非线性的过程,网络需要自行将空间位置转换为坐标。而方法2坐标热力图实际上构造了一个中间态,因为关键点其实很难准确地被某一个像素位置所定义,其实目标点附近的点也很像目标点,坐标上加上高斯图,相当于对坐标进行了“软标注”,让网络更好收敛,高斯热力图中距离目标点越近,激活值越大,这样网络能有方向的去快速到达目标点。但是方法1是一个端到端的训练过程,而方法2不是端到端的训练过程,还需要在热力图的基础上求最高激活值的位置来得到关键点坐标

在之前的文章中我分享过关键点检测的案例​​Tensorflow入门教程(十八)——特征点检测案例​​,当时采用的是卷积神经网络直接对关键点坐标进行回归,但是今天将采用方法2高斯热力图回归来检测关键点。

2、关键点检测网络

大家看过我之前的文章,肯定对UNet模型已经非常熟悉了,其实VNet模型可以看做是从UNet模型演变过来的,网络模型结构如下所示。该结构出自2016年发表的一篇论文《V-Net:Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation》,我这里就不多说了。采用2dVnet网络来进行关键点检测。

手骨关键点检测案例_卷积神经网络

3、数据处理

采用的数据是x-ray手骨图像,关键点是以坐标形式存储的。首先加载图像和坐标,并将图像和坐标重新设置到网络输入的指定大小(512x512),然后以坐标点为中心,生成高斯热力图,注意这里每一个关键点就是一个通道的高斯热力特征图,手骨关键点一共有37个,所以一共生成37个高斯热力特征图。如果所示为手骨图像和部分关键点的高斯热力特征图。

手骨关键点检测案例_类方法_02

手骨关键点检测案例_类方法_03

4、结果

下面是模型训练时损失函数变化的情况。

手骨关键点检测案例_数据_04

在数据上进行测试,所有关键点的高斯热力特征图的金标准和预测结果结果如下所示。

手骨关键点检测案例_类方法_05

为了方便大家更高效地学习,我将代码进行了整理并更新到github上,点击原文链接即可访问。目前我只有10例x-ray手骨数据(带标注信息),如果谁有完整的x-ray数据集,可以在公众号里给我留言。


如果大家觉得这个项目还不错,希望大家给个StarFork,可以让更多的人学习。如果有任何问题,随时给我留言我会及时回复的。

举报

相关推荐

0 条评论