论文阅读笔记(六)——基于改进深度学习方法的股骨x线骨折自动检测与定位

Automatic detection and localization of thighbone fractures in X-ray based on improved deep learning method

总结

投稿期刊:Computer Vision and Image Understanding
期刊等级:JCR Q1 中科院二区(ccf-b类期刊)
审稿周期:投稿很慢,全程半年-1年之间,一审估计2-3个月

论文评价:一篇很优秀的应用文,虽然说实话这篇完全是靠牺牲速度,硬生生堆起来的精度,但是他也说了,我就是追求精度,所以这篇没有大的硬伤,还是很不错的。

introdutcion

骨折漏诊是急诊最常见的诊断错误,可导致治疗延误和长期残疾。X光片的解释是一个耗时费力的人工过程,骨折需要医生肉眼检查X光片诊断。因此有必要开发一种算法辅助放射科医生检查骨折。

计算机辅助诊断(CAD)由于精度较低,在临床环境使用有限。由于大量标记图像和GPU的计算能力,已有许多基于深度学习的CAD研究。因此一些基于深度学习的骨折诊断方法随之出现,辅助放射科医生进行检查,并获得了较高的精度。

用于骨折检测的深度学习方法中通用的目标检测方法,一般来说,通用的目标检测框架主要分为两类,一类是平均精度较高的两级方法,另一类是实时性较好的单级方法。由于X光片下骨折检测的实时性相比于准确性不是很重要。

因此本文以两阶段检测方法为基准,提出了用于骨折检测的检测算法,通过重构组合特征金字塔,平衡特征金字塔每个特征映射的信息,采用全局上下文对集成特征进行细化。使用了迁移学习缓解数据不足的问题。并且在实际检测中得到了88.9%的AP。优于之前所有最先进方法。

method

本文的模型首先利用backbone对原始医疗图像进行特征提取,然后对特征提取的特征进行组合。然后通过region proposal network (RPN)从特征提取RoIs。随后通过RoI提取算法与RoI裁剪特征的大小。最后在R-CNN head下识别骨折部位并在多任务目标函数下细化位置。模型主要是设计了一个组合骨干来提取更多信息。

用于从原始图像中提取特征的部分通常被称为backbone,最常用的backbone是ResNet。它由5个阶段组成,每个阶段均包含BottleNeck,每个阶段的最后一层输出的feature map表示为{B1,B2,B3,B4,B5}。

本文基于ResNetX与特征金字塔设计了一个更好的backbone,模型首先通过Backbone对输入的骨折X光片图像进行特征提取,形成{B1,B2,B3,B4,B5}的特征图,随后利用包含{B2,B3,B4,B5}的多尺度feature map生成{C2,C3,C4,C5},通过下一层的特诊图进行上采样与本层特征图进行融合,这种自底向上的路径可以使集成特性更多地关注相邻的分辨率。在信息流过程中,每次融合会使得包含在非相邻层的语义信息就会被稀释。

首先通过max pooling和插值将{C2,C3,C5}调整到C4相同大小,其次通过integration module平均值( average )缩放特征的{C2,C3,C4,C5}。随后通过嵌入的全局上下文模块对集成特征进行细化。然后使用相同但相反的程序重新缩放精细化特征,将其添加到{C2,C3,C4,C5}中以加强原始特征,形成特征{P2,P3,P4,P5}。最后输出{P2,P3,P4,P5}用于检测FPN中同一pipeline 中的股骨骨折。通过这种方式,金字塔每个分辨率从其他分辨率获得相同信息,可以平衡信息流,使得特征更有分辨度。

其中Global context block受益于simplified non-local (SNL) block 和squeeze-excitation (SE),包括context modelling, bottleneck transformation和broadcast element-wise addition。传统的GCNet在最后一个1*1卷积之后添加,本文采用Global context block细化FPN后的特征。

利用RPN提出潜在断裂区域,即region of interest (RoI)。训练过程中RPN在特征度的每个像素中引入多尺度和宽高比的锚点框。然后计算锚点和ground truth之间的交集(IoU)。当超过一定阈值,就会被分配前景RoI,如果低于则被分配背景RoI。在测试中,RPN对对每个锚点分类,进行边界和位置调整,形成RoI。随后使用Non-maximal suppression(NMS)对RoI进行筛选,丢弃重叠交大区域。对于剩余RoI选择前景RoI(foreground RoIs )和背景RoI随机不分,知道总RoI达到128,256,然后将其送人提取器。

本文使用RoI Align layer作为RoI提取器,将特征图统一为77特征映射,随后使用R-CNN head对骨折进行检测,并与传统R-CNN不同的是,本文使用balanced L1 loss改善损失函数,可以使得模型更好收敛 。R-CNN head将77的特征图扁平化作为特征向量,输入到两个1024维度全连接层,用于预测骨折的包围盒。输出值包含是否骨折的概率与预测包围盒的回归系数。通过损失函数计算损失,通过SGD更新权值。

result

数据集使用Guan提供的3824张24位jpg格式股骨骨折图像,来自中国临沂市人民医院。其中358张作为测试数据集,3484张作为训练数据集,均含有真是标签。评价指标遵循PASCAL vocs -style AP和COCO-style AP指标,AP指的平均精度。其中AP50(IoU阈值50%)和AP75进行评价。

本文使用pytorch v1.6,CUDA10.2,Cudnn8.0.4(这两个是跑深度学习的显卡驱动)和MMdetection(这是个集成库,他估计就是用这里面集成的那些算法进行测试对比)。在4个NVIDIA GeForce GTX 1080Ti GPU上进行,内存为11gb。

由于数据集较少,在消融实验中采用迁移学习在imagenet上对改进模型和其他方法进行预训练。

使用水平翻转进行数据增强 (数据增强方法太少了)。batchsize=4 (在四个1080ti,batchsize还是4,所以单张只有1,说明这玩意的计算量和参数量巨大)。

权值衰减为0.0005,动量为0.9,前6个epoch的学习率为0.01,其余6个epoch的学习率为0.001。因为每个epoch有871次迭代,所以在整个训练过程中总共有10452次迭代。计算复杂度为271.4 GFLOPs,模型训练在每个GPU上大约消耗10gb内存,整个训练过程花费2h 10 min。

第一个实验中模型在NVIDIA GeForce GTX 1080Ti GPU上的测试速度大约是4FPS,检测精度为88.9%。
在这里插入图片描述

在第二实验中进行了对比,88.9%的精度远高于其他模型。
在这里插入图片描述

在第三个实验中,对每个成分进行了Ablation studies,分别测试了Proposed backbone,GC block,Proposed loss function三个成分的作用,均不使用得到了86.5%的精度(AP50),仅使用Proposed loss function得到了86.7的精度(AP50),仅使用Proposed backbone得到了87.9的精度(AP50),不使用Proposed loss function得到了88.4%的精度(AP50),(GC block好像必须搭配他们的backbone进行测试,所以没有对其单独测试),证明了每个模块都能有效提高精度。

第四个实验是在RPN中的IoU阈值的Ablation studies,测试了不同阈值的结果,当正负阈值为0.8和0.3时,AP50效果最佳,在正负阈值为0.7与0.4时,AP75最佳。

最后一个实是在R-CNN head上IoU阈值的Ablation studies,当正阈值和负阈值变化时,AP50略有变化。AP75在正阈值不变的情况下,随着负阈值的降低,AP75显著下降。此外,我们发现AP75和AP50的最佳正阈值都是0.5。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值