计算机视觉在医疗领域的应用非常广泛,52CV曾有相关博文:
AI医疗 | 新开源计算机视觉技术用于新生儿胎龄估计
NIHCC发布迄今世界最大的CT医学影像数据集(附下载)
Kaggle新上比赛:胸部X光片肺炎检测
前天PyImageSearch博主Adrian Rosebrock发表博文展示了使用Keras库利用深度学习技术进行疟疾检测的流程,并取得了超过目前文献的最好方法,值得大家参考。(昨天52CV-医学影像群里还有一位同学说如何做医学图像方面的毕设,这篇文章真是及时雨啊)
文末附代码和数据库下载。
疟疾全球分布
疟疾是一种致命传染病,在全世界范围内每年造成超过40万的人死亡,下图展示了疟疾发病数量的全球分布图。红色代表高危地区。
由上图可知,疟疾最泛滥的地区在中非。而这也往往是世界经济欠发达地区,医疗条件和生活卫生环境堪忧。
疟疾的地理分布和以下因素强相关:
贫困程度、医疗条件、是否战争、政府是否腐败、传染媒介(蚊虫叮咬等)。
可知,在这些地区开展疟疾检测的技术手段不仅需要速度快还需要是低成本的(设备低廉而且要省电)。
目前疟疾检测的方法
目前临床医疗环境中对疟疾的诊断主要依赖两种方法。
一种是血液采样涂片,通过有经验的医生在显微镜下观察载玻片并手动计算感染的红细胞数,有时候医生需要数5000个细胞,这显然需要耗费大量的时间。
为了使疟疾检测更快,科学家和研究人员开发了快速诊断检测(RDT)的抗原检测。
所使用设备如下所示:
虽然RDT明显快于细胞计数,但它的准确性也低得多。
新方法,深度学习自动检测
值得高兴的是,2018年,NIH提出了新的基于深度学习的疟疾检测方法,通过采集血液样本图像,将疟疾的检测建模为已感染、未感染的二分类问题,他们的论文名为《Pre-trained convolutional neural networks as feature extractors toward improved parasite detection in thin blood smear images》,使用了6个预训练模型。
这种方法取得了可观的检测精度(95.9%),但训练时间也很长,需要24个小时。
更大的问题是,这么多大型的预训练模型,实际使用时是极其耗时、耗电、耗内存的。在刚才我们看到的疟疾高发地区部署这样的系统依然面临挑战。
于是,作者的想法是,构建小型结构的CNN网络,在原始数据上重新训练,并期望达到相当的精度。
作者使用方法
Adrian Rosebrock通过构建残差CNN网络来实现疟疾检测。
其中一些细节包括:
1.数据集直接使用NIH发布的疟疾数据集,其共有27588幅图像,正负样本各13794幅图像(文末附下载)。
图像样本示例:
2.训练集:验证集:测试集的数量之比为:8:1:1。
3.训练迭代次数50次,batch size 设为32,初始学习率1e-1,动量0.9。
4.数据预处理阶段除了必要的归一化外还经过多种数据增广操作,包括:旋转、缩放、平移、镜像等。
5.输入图像resize到64*64大小(而NIH研究中使用的ImageNet预训练模型需要的大小)。
6.模型构建使用Keras构建残差网络(ResNet.build())
7.使用softmax分类模型。
使用Titan X GPU训练,经过50个epoch,共计54分钟的训练,模型精度达到:
- 96.50% accuracy on 训练集
- 96.78% accuracy on 验证集
- 97% accuracy on 测试集
检测精度高于NIH的6个大型模型的方法!而模型大小仅17.7M!
原博文地址:
https://www.pyimagesearch.com/2018/12/03/deep-learning-and-medical-image-analysis-with-keras/