截止至北京时间17日夜间23时,全球新冠肺炎确诊病例已经超过18万例,其中中国以外确诊病例超过10万例,很多都因此而被隔离或者停止工作。 前天, 马里兰大学博士 Adrian Rosebrock 在自己的博客上发布了一篇关于 使用X光图像检测新冠肺炎的完整实践的博文,对于需要帮助的人来说,这或许是一个起点。
本文 使用深度学习框架Keras和TensorFlow在X射线图像数据集上训练新型冠状病毒肺炎( COVID-19 )自动探测器,是 一篇使用深度学习框架Keras和TensorFlow进行疾病诊断的完整入门教程。 从数据集到代码都有对应的资料 , 既适合刚入门的新手,也可以为专业领域的研究者提供一些简单的参考。
通过阅读这篇文章,你将学会:
对COVID-19阳性的患者进行X射线图像的数据集采样
对健康人进行X射线图像的数据集采样
训练一个使用本文数据集自动检测X射线图像中的COVID-19的CNN
特别提示: 本文是出于教育学习的目的编写,由于 作者并不是医学领域专家,因此这份教程 仅仅作为学习使用,绝不能用来做为临床诊断 。
如何在X光图像中检测COVID-19
下图是一张COVID-19检测呈阳性病人的X光照片。利用X射线图像,我们可以使用Keras和TensorFlow来训练一个机器学习分类器,然后用它来检测 COVID-19。由于 COVID-19攻击人的呼吸上皮细胞,因此我们可以用X射线来检测病人肺部的健康状况。
数据集
左图:阳性样本;右图:阴性样本
本文使用的COVID-19 X射线图像数据集是由蒙特利尔大学博士后Joseph Cohen所整理的,该数据即包含中东呼吸综合征、SARS和ARDS等19个病例,作者筛选出了其中的25张 COVID-19 阳性 的肺部X光图片。
数据集地址: https://github.com/ieee8023/covid-chestxray-dataset
本文使用的健康样本则来源于Kaggle的胸部x射线图像(肺炎)数据集,Kaggle的胸部X光数据集存在噪声等问题,但是它仍可以作为 COVID-19探测器的一个证明。
数据集地址: https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia
使用Keras和TensorFlow实现COVID训练
鉴于数据较少,作者使用在 ImageNet上进行预训练 权重 的实例化VGG16模型,去掉了全连接层的头。在此基础上,构建了一个由 POOL => FC = SOFTMAX组成的全新FC层头,并将其附加到VGG16之上。然后冻结VGG16的CONV权值,使得仅有最后一层网络被训练。
模型训练:
# compile our model print("[INFO] compiling model...") opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the head of the network print("[INFO] training head...") H = model.fit_generator( trainAug.flow(trainX, trainY, batch_size=BS), steps_per_epoch=len(trainX) // BS, validation_data=(testX, testY), validation_steps=len(testX) // BS, epochs=EPOCHS)
输出结果:
从结果可以看出, 这个COVID-19自动探测器在 样本数据集上获得了约90-92%的精度。尽管训练数据非常有限,但模型并没有过度拟合。
基于COVID-19数据集的训练中Loss和精度
总结
本文所讨论的方法最大的限制就是有限的数据,但在未来,将会有更多可用于模型训练的高质量COVID-19图像数据集。而如果要将COVID-19探测器部署在实地中,那就需要专业医疗专业人员和深度学习研究者的共同努力。值得一提的是,本文作者分享了整个训练过程使用到数据集和源代码。在 极市平台 公众号后台输入 COVID 即可获取下载链接。
原文链接:
Detecting COVID-19 in X-ray images with Keras, TensorFlow, and Deep Learning
Be First to Comment