利用深度學習技術檢測x射線圖像中的COVID-19

2020-04-15     機器學習與數據分析

前言


在本教程中,您將學習:

  1. 採樣COVID-19陽性的患者x射線圖像的開源數據集
  2. 採樣「正常」樣本健康病人的x光照片
  3. 通過我們創建的數據集訓練一個CNN自動檢測x射線圖像中的COVID-19

免責聲明:本文所使用的方法和技巧僅供教學用途。這不是一項科學嚴謹的研究,也不會發表在期刊上。這篇文章是為那些對計算機視覺/深度學習感興趣,並希望通過實際的、動手操作的方法來學習的讀者準備的。


COVID-19如何在x射線圖像中被檢測到?


COVID-19測試目前很難獲得——它們的數量根本不夠,而且製造的速度也不夠快,這造成了恐慌。鑒於COVID-19測試套件有限,我們需要依賴其他診斷措施。

出於本教程的目的,我想探討x射線圖像,因為醫生經常使用x射線和CT掃描來診斷肺炎、肺部炎症、膿腫和/或淋巴結腫大。

由於COVID-19攻擊我們呼吸道的上皮細胞,我們可以用x射線來分析病人肺部的健康狀況。考慮到幾乎所有的醫院都有x射線成像儀,在沒有專門的測試工具的情況下,使用x射線來測試COVID-19是有可能的。

缺點是,x射線分析需要一位放射學專家,而且需要大量的時間——當世界各地的人們生病時,這是很寶貴的。因此,開發一個自動化的分析系統是必要的,以節省醫療專業人員的寶貴時間。


我們的COVID-19患者x射線圖像數據集


我們本教程中使用的COVID-19 x射線圖像數據集是由蒙特婁大學博士後Joseph Cohen博士管理的。一周前,科恩博士開始收集COVID-19病例的x射線圖像,並將其發布在以下GitHub repo上:

https://github.com/ieee8023/covid-chestxray-dataset


你會發現19例一氧化碳中毒病例,以及中東呼吸綜合徵、SARS和ARDS。為了創建本教程的COVID-19 x射線圖像數據集,我解析了在Cohen博士的存儲庫中找到的metada .csv文件。選擇COVID-19陽性(忽略中東呼吸綜合徵、SARS和ARDS病例)。

最後留下了25張陽性COVID-19例的x線圖像(如下圖)。

下一步是採集健康病人的x光圖像。


為此,我使用Kaggle的胸部x射線圖像(肺炎)數據集:

https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia

並從健康患者中取樣25張x射線圖像(上圖右側)。Kaggle的胸部x光數據集有很多問題,即有噪聲/不正確的標籤,但是它作為一個足夠好的起點來證明COVID-19概念探測器。

我得到了總共50張圖像,平均分為25張COVID-19陽性x射線圖像和25張健康病人x射線圖像。


使用Keras和TensorFlow實現我們的COVID-19訓練腳本


現在我們使用深度學習腳本自動診斷covid19。代碼下載請訪問這個網站:

https://www.getdrip.com/forms/637913414/submissions


這個腳本通過選擇TensorFlow來利用TensorFlow 2.0和Keras深度學習庫。

此外,我們使用scikit-learn(用於機器學習的Python庫)繪圖的matplotlib和用於在數據集中加載和預處理圖像的OpenCV。


用Keras和TensorFlow訓練我們的COVID-19探測器


實現了腳本之後,現在就可以訓練我們的自動COVID-19檢測器了:

Epoch 24/25

5/5 [==============================] - 27s 5s/step - loss: 0.3175 - accuracy: 0.9250 - val_loss: 0.2395 - val_accuracy: 0.9000

Epoch 25/25

5/5 [==============================] - 1s 101ms/step - loss: 0.3655 - accuracy: 0.8250 - val_loss: 0.2522 - val_accuracy: 0.9000

[INFO] evaluating network...

precision recall f1-score support


covid 0.83 1.00 0.91 5

normal 1.00 0.80 0.89 5


accuracy 0.90 10

macro avg 0.92 0.90 0.90 10

weighted avg 0.92 0.90 0.90 10


[[50]

[14]]

acc: 0.9000

sensitivity: 1.0000

specificity: 0.8000


從上面的結果可以看出,我們的COVID-19自動探測器僅基於x射線圖像,在樣本數據集上獲得了約90-92%的準確率,而沒有使用地理位置、人口密度等其他數據來訓練這個模型。

我們還獲得了100%的敏感性和80%的特異性,這意味著:有COVID-19的患者(即,我們可以準確地識別他們「COVID-19陽性」100%的時間使用我們的模型。沒有COVID-19的患者(即,我們可以準確地識別他們為「COVID-19陰性」。正如我們的訓練歷史圖表所示,我們的網絡並沒有過度擬合,儘管我們的訓練數據非常有限:

參考:https://www.pyimagesearch.com/2020/03/16/detecting-covid-19-in-x-ray-images-with-keras-tensorflow-and-deep-learning/?utm_campaign=Artificial%2BIntelligence%2BWeekly&utm_medium=email&utm_source=Artificial_Intelligence_Weekly_153

文章來源: https://twgreatdaily.com/frVoh3EBrZ4kL1Vi_2DI.html