<output id="brrn1"><ruby id="brrn1"></ruby></output>
<sub id="brrn1"></sub>
    <sub id="brrn1"></sub>

      <sub id="brrn1"><ruby id="brrn1"><noframes id="brrn1"><big id="brrn1"><del id="brrn1"></del></big>

      <th id="brrn1"><ruby id="brrn1"></ruby></th>

          <delect id="brrn1"><meter id="brrn1"></meter></delect>
        
        

          <output id="brrn1"></output>

            人工智能

            醫療保健案例研究:怎樣用深度學習檢測瘧疾

            廣告
            廣告

            導言 本文中,我們將集中討論人工智能(AI)與流行的開源工具、技術和框架如何被用于發展和改善醫療行業。俗話說,健康就是財富。在這篇文章中,我們將探討如何利用人工智能來檢測一種致命的疾病–瘧疾,以及如何建立一種低成本、有效和準確的開源解決方案。我們的目的有兩個,了解致命疾病瘧疾的動機和重要性以及深度學習在檢測瘧疾方面的有效性。

              本文主要討論以下主題:

              此項目的動機

              瘧疾檢測方法

              瘧疾檢測的深度學習

              從頭開始訓練的卷積神經網絡

              基于預訓練模型的遷移學習

              本文不是為了夸大人工智能的地位,而是展示人工智能如何用低成本、有效和準確的開源解決方案來幫助瘧疾的檢測和診斷,并減少人工的復雜勞動。

              Python和TensorFlow構建開源深度學習解決方案

              由于Python和TensorFlow深度學習框架的強大功能,我們可以以此構建強大的、可擴展的深度學習解決方案。這些工具的另一個好處是開放的源代碼是免費的,這使我們能夠建立具有成本效益的解決方案,并被大家輕易采用和使用。

              動機

              瘧疾是由瘧原蟲引起的一種致命的、傳染性的由蚊蟲傳播的疾病,這些寄生蟲由感染的雌性按蚊叮咬傳播。共有有五種主要類型的瘧疾。

              瘧疾估計風險健康圖(資料來源:Treated.com)

              很明顯,瘧疾在全球各地普遍流行,特別是在熱帶地區。本項目的動機是基于此疾病的性質和致命性。最初,如果被感染的蚊子叮咬,蚊子攜帶的寄生蟲會進入你的血液,開始破壞攜帶氧氣的紅細胞。通常在蚊子叮咬后幾天或數周內開始感到不適,瘧疾的第一癥狀與流感或病毒相似。然而,這些致命的寄生蟲可以生活在人身體內超過一年的時間。延誤治療時機可能引起并發癥甚至導致死亡,盡早和準確地檢測瘧疾可以保命。

              世界衛生組織公布了幾個關于瘧疾的情況,據統計,世界上將近一半的人正面臨著瘧疾風險,每年有2億以上的瘧疾患病人員和約40萬死于瘧疾的人。所以,利用深度學習,使瘧疾的檢測和診斷迅速、簡便和有效是非常有必要的。

              瘧疾檢測方法

              瘧疾的檢測和診斷有多種方法,本文簡要介紹部分方法。這些檢查包括但不限于厚和薄的血液涂片檢查、聚合酶鏈反應(PCR)和快速診斷試驗(RDT)。這里并沒有詳細介紹所有的方法,但后兩種測試都是通常使用的方法,特別是在沒有高質量顯微鏡的情況下。

              我們來看一個基于血液涂片的標準瘧疾診斷工作流程

              瘧疾檢測的血液涂片工作流程

              根據《世界衛生組織議定書》的指導方針,這一程序包括在100倍放大率下對血液涂片進行深入檢查。在此過程中,人們手工計算5000個細胞中含有寄生蟲的紅細胞。事實上,我們之前提到過的Rajaraman et. al.的論文,討論的是相似的話題,本文引用了論文中的觀點來使事情更清楚。

              厚血涂片有助于檢測寄生蟲的存在,而薄血涂片有助于識別引起感染的寄生蟲的種類(美國疾病控制和預防中心,2012)。

              診斷的準確性在很大程度上依賴于人類的專業知識,并且可能受到觀察者之間的差異、疾病流行但資源受限地區、大規模診斷等帶來的負面影響(Mitiku, Mengistu & Gelaw, 2003)。

              采用聚合酶鏈反應(PCR)和快速診斷試驗(RDT)等替代技術,然而,PCR分析的性能有限(Hommelsheim et al., 2014),

              RDT在疾病流行地區的成本效益較差(Hawkes, Katsuva & Masumbuko, 2009)。

              因此,瘧疾檢測絕對是一個復雜的手工過程,也許可以通過深度學習實現瘧疾檢測自動化。

              瘧疾檢測的深度學習

              由于血液涂片的常規人工診斷是一個復雜的手工過程,需要專業分類知識,并且要計數寄生和未感染細胞。如果世界各地的特定地區沒有足夠的專業知識,可能無法準確檢測瘧疾,還有可能會造成嚴重后果。在利用最先進的(SOTA)圖像處理和分析技術來進行瘧疾監測和構建基于機器學習的分類模型方面已經取得了一些進展。然而,由于數據量太大和功能設計太耗時,這些模型是不可擴展的。

              深度學習模型,或者更具體地說,卷積神經網絡(CNN)已被證明在各種計算機視覺任務中非常有效。假如您不了解CNN,可以通過本文更深入地了解CNN。簡而言之,CNN模型中的關鍵層包括卷積層和池化層,如下圖所示。

              典型的CNN結構(來源:Deepplearning.net)

              卷積層從數據中學習空間層次模式,這些模式也是平移不變的。因此他們能夠學習圖像的不同方面。例如,第一個卷積層將學習局部的模式,如邊角;第二個卷積層將根據第一層的特征學習更大的模式。這使得CNNs可以自動化特性工程,并學習有效的特性,這些特性還可以很好地概括新的數據點。池化層有助于降低采樣和降維。

              因此,CNN可以幫助我們實現自動化和可擴展的工程。此外,在模型的末尾插入密集層使我們能夠執行圖像分類等任務。使用像CNN這樣的深度學習模型進行瘧疾自動檢測可能非常有效、低成本和可擴展,特別是隨著遷移學習和預訓練模型的出現,這些模型即使在數據源不足等限制條件下也能正常工作。

              Rajaraman等人的論文《預訓練卷積神經網絡作為特征提取器,用于改進薄血涂片圖像中的寄生蟲檢測》顯示,通過利用論文中提到的六個預訓練模型,他們在檢測瘧疾和非感染樣本時的準確率達到了95.9%。因此,我們的重點是嘗試一些簡單的CNN模型和使用遷移學習的預訓練模型,看看我們在相同的數據集中得到的結果!我們將使用開源工具和框架如Python和TensorFlow來構建我們的模型。

              數據集詳細信息

              讓我們談談將在分析中使用的數據集。有研究人員在利斯特希爾國家生物醫學傳播中心(LHNCBC)仔細地收集和注釋了健康和受感染的血液涂片圖像數據集。

              事實上,他們已經開發了一款手機應用程序,該程序運行在一款Android智能手機上,并與傳統的光學顯微鏡相連,在孟加拉國吉大港醫學院醫院收集了150例惡性瘧原蟲感染患者和50例健康患者的giemsa染色薄血涂片。這款智能手機的內置攝像頭可以用微觀視野拍攝幻燈片的圖像。我們來檢查一下數據集結構,首先根據所使用的操作系統安裝一些基本的選項。

              我在云上使用基于Debian的系統,因為它有GPU,所以可以加速運行模型。如果沒有樹依賴選項話請先安裝,以便我們可以查看目錄結構。

              我們有兩個文件夾,其中包含受感染和健康的細胞圖像。 我們可以使用以下代碼進一步了解圖像總數。

              看起來我們有一個包含13779張瘧疾和非瘧疾(未感染)細胞圖像的平衡數據集。讓我們從中構建一個數據幀,這將在開始構建數據集時發揮作用。

              建立和探索圖像數據集

              要構建深度學習模型,我們需要訓練數據,但我們還需要測試模型在隱藏數據中的性能。分別使用60:10:30分割、驗證和測試數據集。我們將在訓練期間測試和驗證數據集,并檢查模型在測試數據集上的性能。

              顯然,由于血涂片和細胞圖像將根據、測試方法和拍攝照片的方向而變化,因此圖像的尺寸有所不同。 所以需要收集部分訓練數據集的摘要統計數據,以確定最佳圖像尺寸(注意不要接觸測試數據集!)。

              應用并行處理來加速圖像讀取操作,并根據匯總統計,根據結果將每個圖像調整為125×125像素,加載所有圖像并將它們調整為固定尺寸。

              再次利用并行處理加速與圖像加載和調整大小相關的計算。 最后,得到所需尺寸的圖像張量,如前面的輸出所示。接下來我們可以查看一些樣本單元格圖像,以了解這些數據是如何形成的。

              根據以上樣本圖像,我們可以注意到瘧疾和健康細胞圖像之間的一些細微差別。我們基本上會讓深度學習模型嘗試在模型訓練中學習這些模式。在開始訓練模型之前,需要進行一些基本的配置設置。

              我們修正了圖像的尺寸、批量大小、年代和分類標簽的編碼。我們將使用TensorFlow 2.0的alpha版本進行深度學習模型訓練。

              深度學習模型訓練階段

              在模型訓練階段,我們將建立幾個深度學習模型,并根據訓練數據對它們進行訓練,并在驗證數據上比較它們的性能。然后,我們將保存這些模型,并在模型評估階段再次使用它們。

              模式1:CNN從零開始

              第一個瘧疾檢測模型將從零開始建立和訓練一個基本的卷積神經網絡(CNN)模型。首先需要對模型架構進行定義。

              在前面的代碼架構上,我們的CNN模型有三個卷積和池化層,然后是兩個密集層,為了正則化,中途退出。

              我們得到的驗證準確率為95.6%,結果還不錯。盡管我們的模型看起來過于擬合,但我們的訓練準確率為99.9%。通過繪制訓練和驗證準確度的損耗曲線,我們可以對此有清晰的認識。

              基本CNN的學習曲線

              因此,我們可以看到,在第五階段之后,情況似乎并沒有改善很多。記得保存這個模型,以便接下來進行評估。

              model.save(‘basic_cnn.h5’)

              深度遷移學習

              正如人類具有跨任務傳遞知識的固有能力一樣,遷移學習使我們能夠將以往學習任務中的知識應用到更新的、相關的任務中,在機器學習或深度學習的環境中也是如此。

              深度遷移學習的幾點思考

              在本文中,我們的想法是,我們能否利用一個預先訓練好的深度學習模型(它是在一個大數據集上訓練的,比如ImageNet),通過在上下文中應用和傳輸瘧疾檢測的知識來解決瘧疾檢測的問題?

              我們將運用兩種最流行的深度遷移學習策略。

              作為特征提取器的預訓練模型

              預先訓練與微調模式

              我們將使用由牛津大學視覺幾何組(VGG)開發的預訓練VGG-19深度學習模型進行實驗。 VGG-19預訓練模型是已經預先訓練過的模型,它位于具有大量不同圖像類別的大型數據集(ImageNet)上。所以該模型應該已經學習了一個強大的特征層次結構,這些特征也跟CNN模型學習的特征相關。 因此,該模型已經學習了超過一百萬個圖像特征,可以作為適合計算機視覺問題的新圖像的良好特征提取器,用于瘧疾檢測。 讓我們簡要討論一下VGG-19模型架構。

              認識VGG-19模型

              VGG-19模型是一個19層(卷積和完全連接)深度學習網絡,建立在ImageNet數據庫上,該數據庫是為圖像識別和分類而構建的。 這個模型由Karen Simonyan和Andrew Zisserman創建。VGG-19模型的體系結構如下圖所示。

              VGG-19模型體系結構

              可以清楚地看到模型總共有16個卷積層,使用3 x 3卷積濾波器以及用于下采樣的最大池層,并且每層中總共有兩個完全連接的4096個單元的隱藏層,接著是1000個單元的密集層,其中 每個單元代表ImageNet數據庫中的一個圖像類別。不需要最后三層,因為我們將使用完全連接的密集層來預測瘧疾。我們需要更關注前五個塊,以便可以利用VGG模型作為有效的特征提取器。

              對于其中一個模型,我們將它作為一個簡單的特征提取器,通過凍結所有五個卷積塊來確保它們的權重不會在每個歷元之后更新。對于最后一個模型,我們將對VGG模型應用微調,在這里解凍最后兩個塊(第4塊和第5塊),以便在訓練自己的模型時,在每個epoch更新它們的權重。

              模型2:作為特征提取器的預訓練模型

              為了建立這個模型,我們將利用TensorFlow加載VGG-19模型,并凍結卷積塊,以便使用它作為圖像特征提取器。并且需要在最后插入我們自己的密集層來執行分類任務。

              從前面的輸出可以很明顯地看出,模型中有很多層,我們將只使用VGG-19模型的凍結層作為特征提取器。可以使用以下代碼來驗證模型中有多少層是可訓練的,以及在網絡中共有多少層。

              現在,使用前面模型中類似配置和回調來訓練模型。可以觀察以下圖表,圖表顯示了模型的準確性。

              冷凍預訓練CNN的學習曲線

              這表明,這個模型并沒有像基本的CNN模型那樣過度擬合,性能也并不是真的更好,實際上比我們的基本CNN模型要差一些。保存這個模型,以便將來進行評估。

              model.save(‘vgg_frozen.h5’)

              模型3:圖像增強的精調預訓練模型

              在最后一個模型中,我們將對預訓練的VGG-19模型的最后兩個塊中出現的層的權重進行微調。除此之外,我們還將介紹圖像增強的概念:從訓練數據集中加載現有的圖像,并對它們應用一些圖像轉換操作,例如旋轉、剪切、平移、縮放等等,以生成現有圖像的新版本。由于這些是隨機變換的,所以我們不會每次都得到相同的圖像。我們將利用tf.keras中名為ImageDataGenerator的程序。keras可以幫助我們創建形象增強器。

              除了縮放圖像(這是必須的)之外,我們不對驗證數據集應用任何轉換,因為我們會用它來評估每個時期的模型性能。讓我們來看一批圖像增強轉換的一些示例結果。

              樣本增強圖像

              在前面的輸出中,您可以清楚地看到圖像的細微變化。現在,我們將構建我們的深度學習模型,以確保VGG-19模型的最后兩個模塊是可訓練的。

              我們在模型中降低了學習速度,因為我們不想在微調時對預先訓練的層進行大的權重更新。這個模型的訓練過程將略有不同,因為我們使用數據生成器和fit_generator(…)函數。

              這看起來是最好的模型,它的驗證精度達到了96.5%。基于訓練精度,我們的模型似乎沒有第一個模型擬合得那么好。這可以通過下面的學習曲線來驗證。

              微調預訓練CNN的學習曲線

              保存這個模型,這樣就可以在測試數據集上用它來評估模型了。

              model.save(‘vgg_finetuned.h5’)

              這就完成了模型訓練階段,接下來在實際的測試數據集上測試以上模型的性能!

              深度學習模式性能評估階段

              現在,我們通過對測試數據集中的數據進行預測,以此來評估剛剛在訓練階段構建的三個不同的模型,因為僅僅進行驗證是不夠的!我們還構建了一個實用程序模塊model_evaluation_utils,用它來評估具有相關分類指標的深度學習模型的性能。第一步是擴展測試數據。

              下一步是加載之前保存深度學習模型,并對測試數據進行預測。

              最后一步是利用model_evaluation_utils模塊,檢查每個模型的性能與相關的分類指標。

              看起來,第三個模型在測試數據集中測試結果最好,在三個模型中的精確度達到96%,這是相當不錯的。

              結語

              在本文中,我們研究了一個關于瘧疾檢測的醫學成像案例研究。瘧疾檢測工作非常復雜,沒有足夠的專業人員也是非常嚴重的問題。利用人工智能技術構建開源軟件可以使人類在檢測瘧疾方面達到最高精確度,也希望在醫療保健領域能更多地采用開源軟件和人工智能,從而使人工智能夠造福社會。

            我還沒有學會寫個人說明!

            企業應如何進行云遷移?小心這5個陷阱!

            上一篇

            ASC19最新戰況:北航打破HPL基準測試賽會紀錄!

            下一篇

            你也可能喜歡

            醫療保健案例研究:怎樣用深度學習檢測瘧疾

            長按儲存圖像,分享給朋友

            ITPUB 每周精要將以郵件的形式發放至您的郵箱


            微信掃一掃

            微信掃一掃
            亚洲黄色片视频,光棍电影韩国伦理网,女神吧,伊人电影在线观看