ITPub博客

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航

原创 人工智能 作者:李佳惠 时间:2018-11-09 11:32:39 0 删除 编辑

Carlos Atico Ariza是2018年秋季的洞察研究员,他部署了一个网络应用程序,利用图像分析来诊断疟疾患者:Malaria Hero(下文暂译为:疟疾英雄)——将临床医生的压力减轻了85%。在成为洞察员之前,Carlos担任数据科学顾问,负责构建端到端的机器学习解决方案,如无人监督的异常检测系统。在他化学和生物工程博士期间,他研究了一系列控制干细胞的方法,为再生医学领域做出贡献。

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航


小而致命的敌人

蚊子对世界一半以上的人口来说不仅仅是一种滋扰。传染病的传播,在一定程度上要归功于依赖蚊子的寄生虫"优雅而致命"的生命周期。例如,疟疾寄生虫已经进化出了特殊的形式——用于寄生蚊子和繁殖红细胞。利用蚊子的繁殖特性,疟疾寄生虫每年感染2亿多人,每年造成40多万人死亡!

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航


疟疾诊断的瓶颈

血液的显微镜检查是诊断疟疾的最著名的方法。将患者的血液涂抹在载玻片上并用对比剂染色,以便识别红细胞内的寄生虫。受过训练的临床医生在放大100倍的显微镜下检查20个显微镜视野,从5,000个细胞(世卫组织规程http://www.wpro.who.int/mvp/lab_quality/2096_oms_gmp_sop_09_rev1.pdf)中计算出含有寄生虫的红细胞。

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航

疟疾诊断血涂片工作流程。

可以想象,手动计算5,000个细胞是一个缓慢的过程。这很容易给诊所工作人员带来负担,尤其是在疫情爆发的地方。因此,我想确定图像分析和机器学习如何减轻临床医生的负担并帮助确定患者的优先顺序。

什么是F-beta!?

在看似无寄生虫的样本中遗漏一个寄生虫可能是致命的。在没有发现寄生虫的情况下,血液涂片和细胞计数每8小时重复一次。如果在三次重复后没有发现寄生虫,则患者痊愈。这样做是为了最大限度地减少可能导致死亡的误诊(假阴性)数量。因此,为了建立疟疾诊断的筛查工具,我需要尽量减少假阴性。

我想限制误诊数量以节省临床医生的时间。如果我建立了一种错误地预测大多数细胞被感染的工具,临床医生将不得不花费尽可能多的时间来确认单细胞图像的预测,就像他们通过显微镜计数细胞一样。所以,我使用了F-beta评分(https://en.wikipedia.org/wiki/F1_score),即F2分数作为比较我研究ML分类的度量标准。

欢迎使用开源数据

我找到了一个很好的数据集,它包含27,558个单细胞图像,其中有相同数量的感染和未感染细胞。这些细胞来自200名患者,每四名患者中就有三名患有疟疾。从显微镜视野的图像中分理出单细胞。关于这个数据集的最酷的事情之一是,图像是使用手机拍摄的!而不是 使用那种 附在显微镜上的花哨的相机。

所有图像均由专业幻灯片阅读器手动注释。更多有关信息,请通过你最喜爱的互联网门户网站访问美国国家医学图书馆。(https://ceb.nlm.nih.gov/repositories/malaria-datasets/)

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航

用于训练疟疾英雄的数据集的信息图表

可解释的工程特性

卷积神经网络以优秀的图像分类器著称。然而,在构建机器学习模型时的实用建议是从一个简单的模型开始(https://blog.insightdatascience.com/always-start-with-a-stupid-model-no-exceptions-3a22314b9aaa),然后根据模型性能快速迭代(https://blog.insightdatascience.com/how-to-deliver-on-machine-learning-projects-c8d82ce642b0)。因此,我首先着眼于工程视觉上的显着特性,利用一个不太复杂的模型,并测量特性与整体分类的相关性。

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航

通过OpenCV的BLOB检测将染色的寄生虫检测为BLOB

我设计了能够指示细胞颜色、面积、凸度和圆度的特性。我还创建了一些特性来确定寄生虫是否在细胞中可见。由于寄生虫的颜色与细胞质不同,我们有一个很好的二进制对象(BLOB)检测用例。BLOB检测识别强度与周围像素不同的连接像素组。更多关于BLOB的内容在这里(https://www.learnopencv.com/blob-detection-using-opencv-python-c/)和这里(https://docs.opencv.org/trunk/d0/d7a/classcv_1_1SimpleBlobDetector.html)。最后,我在我的特性集中的每个细胞中包含了检测到的BLOB的数量,因为在一个细胞中可以找到多个寄生虫。

建立模型

在工程特性之后,我保留了20%的数据用于测试,并对剩余的80%进行了3倍交叉验证。然后我比较了四个ML分类器并选择了一个F2指数为0.8的随机森林模型(https://www.datacamp.com/community/tutorials/random-forests-classifier-python)。

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航


工作流程:从感染(蓝色轮廓)和未感染(橙色轮廓)单细胞图像中提取的特性,为模型训练、比较和选择提供数据。模型中最大的F2指数是0.80。

但是,我还想将它与CNN进行比较,因为我注意到BLOB探测器的表现并不如我想象的那么好。BLOB检测似乎在细胞的边缘或周边做得很差。此外,有些寄生虫没有用造影剂彻底染色,使得寄生虫和细胞之间的颜色差异对于BLOB检测来说太细微了。

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航


可解释模型错误分类的感染细胞(假阴性)。请注意,中间细胞似乎在右下角含有染色不良的寄生虫,因此难以正确分类。

一些受感染的细胞难以定性。例如,以下面的图像为例。寄生虫不可见。然而,专家幻灯片阅读器认为细胞被感染了。幻灯片阅读器可能已经发现我已在图像中圈起来的细胞上的小白点。这些可能是粘连旋钮,它们确实存在于受感染的细胞上。

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航

感染细胞上的潜在粘连旋钮。

无论上述是否是粘连旋钮,都难以提取这些指示寄生感染的细微特性。因此,我继续实施卷积神经网络,而不是继续设计特性。

事情变得复杂

我从一个训练有素的卷积神经网络生成了特性:初始v3。初始v3在ImageNet图像上进行了训练,以对像幼犬和行人这样的物体进行分类,但不能确定细胞是否受到寄生虫的攻击。因此,为了重新启动初始v3,我删除了分类层并为每个图像生成了2048个特性。然后,我使用PCA和训练的ML分类器将维度降低到100个特性。经过3次交叉验证、测试和比较四种ML分类器进行训练后,我获得了F2指数为0.92的L2正则逻辑回归,这比随机森林模型好得多。显而易见的选择是使用改变用途的CNN作为疟疾英雄的后端。

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航


简化的CNN管道:使用预先训练的CNN从单细胞图像中提取的特性用于模型训练,比较和选择。模型中最大的F2指标是0.92。

疟疾英雄在malariahero.org

为了部署疟疾英雄,我学会了使用Dash(https://plot.ly/products/dash/)。Dash教程非常适合你入门。在编排Dash,Flask,gunicorn,nginx,Docker和AWS之后,疟疾英雄"活了"下来。

为了使用网络应用程序,临床医生将上传来自患者的单个细胞的图像。每个细胞都被归类为感染或未感染。三个正则表达式从每个图像中提取元数据,包括患者ID号。然后将结果按患者分组并根据感染率分类。

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航

疟疾英雄网络应用程序界面

如果你没有想要分类的单个单元格图像,请随时按下malariahero.org(http://malariahero.org/)上的演示按钮。这是我存储在AWS上的两名患者的单细胞图像,并对每张图像进行如上所述的分类,以演示输出结果。

重要结论

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航

与疟疾英雄相比,估计手动计数细胞/寄生虫所花费的时间。

疟疾英雄节省时间。与手动计数不同的是,临床医生可以捕获每个视野的图像并上传具有自动计数和分类的细胞的图像。我曾经培养干细胞,通过显微镜计数细胞是这项工作的一部分。我估计使用疟疾英雄可以节省大约85%的临床医生时间。根据正常的9-5 M-F工作时间表,这意味着每月可以多看1,400名患者。

产生的结果使临床医生能够根据感染率对患者进行优先排序,加快对病情加重的患者的治疗。由于结果是根据感染率进行分类的,因此临床医生可以查看该列表并快速确定患者的优先顺序。

创建无疟疾的世界——快速诊断疟疾程序,为你的健康保驾护航


一名医生,遇到可能大量感染的病人。疟疾英雄将帮助他快速诊断并优先考虑患者!

请记住,数据集中的图像是使用智能手机拍摄的。疟疾英雄展示了为流动医生或资源有限的诊所提供有价值且价格合理的工具的潜力。这将使流动医生能够访问偏远地区或进行家庭呼叫以上传图像并接收快速诊断。

此外,用显微镜诊断疟疾是一种在没有练习的情况下容易出错的技能。提供再训练有助于临床医生提高其分类能力,如此处所述(https://www.hindawi.com/journals/jpr/2017/9064917/)。可以想象,上传到疟疾英雄的图像可以与经常进行疟疾寄生虫检测的临床医生共享。以这种方式,更有经验的临床医生可以确认ML分类结果或向没有经验或不经常进行疟疾诊断的临床医生提供帮助。

代码

该项目的代码可在我的GitHub上公开获得。(https://github.com/caticoa3/malaria_hero)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31545819/viewspace-2219354/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-09-19

  • 博文量
    57
  • 访问量
    61315