建立無瘧疾的世界——快速診斷瘧疾程式,為你的健康保駕護航

人工智慧頻道發表於2018-11-09

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章