瘧疾檢測-Keras深度學習醫學影像分析
- 2019 年 12 月 27 日
- 筆記
電腦視覺在醫療領域的應用非常廣泛,52CV曾有相關博文:

前天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!
原博文地址: