使用PyTorch 檢測眼部疾病

2020-12-05 騰訊網

重磅乾貨,第一時間送達

深度學習是基於人工神經網絡(ANN)的機器學習方法大家庭的一部分。深度學習是當今普遍存在的一種學習方式,它被廣泛應用於從圖像分類到語音識別的各個領域。在這篇文章中,我將向你展示如何構建一個簡單的神經網絡,用PyTorch從視網膜光學相干斷層掃描圖像中檢測不同的眼部疾病。

數據集

OCT 是一種成像技術,用於捕捉活體患者視網膜的高解析度橫截面。每年大約要進行3000萬次 OCT 掃描,這些圖像的分析和解釋需要大量的時間。

這個數據集來自 kaggle,它被分成3個文件夾(train,test,val) ,每個圖像類別包含子文件夾: 脈絡膜新血管生成(CNV) ,糖尿病性黃斑水腫(DME) ,早期 AMD (DRUSEN)中出現的多個視網膜,以及保留中心凹輪廓的正常視網膜,沒有任何視網膜液體/水腫(NORMAL)。

加載和預處理圖像

首先,我們要加載所有的庫,並指定函數,我們將用來加載我們的數據和模型在 GPU 上。

cuda

然後我們將解析 train 文件夾中的所有圖像,以創建包含訓練圖像的每個通道的平均值和標準差的兩個矢量。我們要利用這些數據對圖像進行normalize操作。

現在我們使用 pytorch 加載數據。每幅圖像都是中心像素,大小為490x490像素(為了在每幅圖像之間保持統一大小) ,然後轉換為張量,再進行規範化。

可視化數據

現在我們已經加載並預處理了數據,我們可以進行一些數據探索。

在左邊我們可以看到原始圖像,在右邊我們看到經過預處理的圖像。標準化將所有通道的平均值都集中在零點附近,這種操作有助於網絡更快地學習,因為梯度對每個通道的作用是一致的,並有助於在圖像中產生有意義的特徵。

我們繪製訓練集標籤、驗證集標籤以及測試集標籤的分布圖便於檢查標籤不平衡。我們可以看到,驗證集和測試集中的標籤分布是均勻的,而訓練集中的標籤分布是不平衡的。有不同的方法來處理不平衡的數據集,這裡我們嘗試了抽樣處理。

加載數據

這裡我們使用自定義加載器在 GPU 上加載數據。由於 GPU 的內存不足以容納數以千計的圖像,因此需要批量大小將數據以較小的批量輸入模型。訓練數據集並不是整體加載的,我們使用了一個自定義的採樣器來對數據進行子採樣(為了使每個標籤的分布更加均勻) ,並將訓練數據總數減少到4000個圖像,以加快計算時間的速度。

模型

部分結果

最後我們創建了我們的模型,給出了我們相對較小的樣本量(並且為了加快訓練時間) ,我們使用了遷移學習和 ResNet 的預訓練模型,並刪除了最終的全連接層,並添加了兩個線性層和一個 ReLu 激活函數。因為我們正在做一個分類任務,我們的損失函數將是交叉熵損失。

訓練模型

一個經過訓練的模型是有用的,因為它的層已經被訓練來提取特徵(比如特定的形狀或線條,等等)。因此,在訓練過程中,網絡卷積部分的權重和偏差不會發生很大變化。另一方面,我們創建的全連接層是用隨機權重初始化的。解決這個問題的一個方法是凍結網絡中所有預先訓練的部分,只訓練最後的全連接層,然後解凍所有的網絡,以較低的學習率訓練它。我們採用了另一種技術:我們對網絡的每個部分使用不同的學習速度。更深的網絡層使用更低的學習率。通過這種方法,我們訓練了分類器,並對預訓練的網絡進行了微調,而無需對其進行兩次訓練。

作為一個例子,我們使用 Adam 優化器對這個網絡進行了15個 epoch 的訓練,學習率為0.004,並使用了一個學習率調度器。

計劃學習率是非常有用的,因為高學習速率有助於網絡學習更快,但他們有可能錯過最小的損失函數。另一方面,低學習率可能太慢了。

我們使用了一個調度器,降低了學習率一旦它停止,以減少損失函數。我們繪製每個 epoch 的損失函數、學習速度和不同的分類指標:

所有的指標在短短幾個時期內就達到了0.9,在訓練結束時驗證的準確率達到了93.75% ,對於一個簡單的網絡來說,這已經不錯了!

測試模型

最後,我們使用測試集來測試模型。首先讓我們看看相關矩陣:

這幾乎是完美的!該模型能夠正確地對幾乎所有的標籤進行分類,其中11% 的DRUSEN 圖像混淆為 CNV。現在讓我們來看看測試集的度量:

最後,測試集上的所有度量值都是0.97,甚至高於驗證集!

這個網絡表現很好,但是它還可以改進:

更多的 epoch :由於時間限制,我們只訓練了15個 epoch,使用更多的 epoch 可以極大地提高準確性;

早期停止:使用更多的時期,我們可以避免數據過擬合的風險和增加泛化誤差,早期停止訓練,避免為了過度擬合測試集引起的驗證集的loss爆炸;

改變參數:學習速度,權重衰減等。所有的參數均可以調整,以提高準確性;

使用數據增強:增加隨機旋轉、裁剪等等可以幫助模型更好地泛化。

相關焦點

  • 用Java實現目標檢測|PyTorch
    這篇來自AWS軟體工程師的投稿,結合實例,詳細介紹了DJL這個為Java開發者設計的深度學習庫:5分鐘,你就能在PyTorch上,用Java實現目標檢測。5分鐘,用Java實現目標檢測文 / 知乎用戶@LankingPyTorch在深度學習領域中的應用日趨廣泛,得益於它獨到的設計。無論是數據的並行處理還是動態計算圖,一切都為Python做出了很多簡化。
  • 用Java實現目標檢測 | PyTorch
    這篇來自AWS軟體工程師的投稿,結合實例,詳細介紹了DJL這個為Java開發者設計的深度學習庫:5分鐘,你就能在PyTorch上,用Java實現目標檢測。5分鐘,用Java實現目標檢測文 / 知乎用戶@LankingPyTorch在深度學習領域中的應用日趨廣泛,得益於它獨到的設計。
  • 陸英明點評 | 基因療法:眼部疾病治療革新者
    一些常見的眼部疾病,如年齡相關性黃斑變性和視網膜色素變性都會損害感光細胞,導致嚴重的視力喪失,其中年齡相關性黃斑變性是老年人致盲的重要原因。 對於這類疾病,研究者們從視網膜再生入手,開發了多種方法,但這些方法都面臨著諸多挑戰。
  • 使用Google Colab上的PyTorch YOLOv3
    weights = opt.weightsimg_size = opt.img_size# 初始化設備device = torch_utils.select_device(opt.device)# 初始化模型model = Darknet(opt.cfg, img_size)# 加載權重attempt_download(weights)if weights.endswith('.pt'): # pytorch
  • 警惕冬季乾燥引發眼部疾病
    冬季到來,因為天氣變化導致的乾眼症等眼部疾病開始出現。專家提醒:①注意保暖,減少冷空氣對交感神經的刺激;②遠視眼和明顯加重的老視等,儘量不要去暗室,如電影院等;③專家提醒下雪外出要戴墨鏡或防護眼鏡。
  • 國家眼部疾病臨床醫學研究中心黑龍江省分中心落戶哈醫大二院
    人民網哈爾濱12月4日電 日前,哈爾濱醫科大學附屬第二醫院通過國家眼部疾病臨床醫學研究中心認定,成為國家眼部疾病臨床醫學研究中心黑龍江省分中心,系全省首家,標誌著哈醫大二院眼部疾病臨床醫學研究邁向新裡程。
  • 福利,PyTorch中文版官方教程來了
    教程作者來自 pytorchchina.com。教程網站:http://pytorch123.com教程裡有什麼教程根據 PyTorch 官方版本目錄,完整地還原了所有的內容。教程的一部分內容,使用 torch.view 改變 tensor 的大小或形狀用教程設計一個聊天機器人,以上為部分對話。
  • 別以為只是睡眠不足,這3種眼部疾病要當心
    大多數人在提到紅血絲的時候,都會以為是自己睡眠不足,卻不知一些眼部疾病也會導致紅血絲持續存在,所以要注意。哪些眼部疾病會導致紅血絲出現?1、急性結膜炎急性結膜炎是一種流行性眼病,它有著極強的傳染性,在發病時速度比較快,患者在患病時會感覺到眼部刺痛並且有異物感,眼睛有灼熱感卻能看清楚東西。
  • 超算安裝GPU-based軟體 (以pytorch為例)
    一般運作方式是,如果我的計算依賴非常共性的軟體,我可以找超算管理員安裝,使用的時候可以通過module load來初始化自己所需軟體。已有共性軟體如下:Vasp和Gaussian是算力消耗的大頭,但是超算用戶覆蓋幾十個學院的幾百個方向,不可能面面俱到,把所有人需要的軟體都裝在/opt 也是不現實的。
  • 使用PyTorch實現鳥類音頻檢測卷積網絡模型
    以及為什麼鳥類的聲音檢測對我們環境的未來如此重要介紹你聽說過自動語音識別,你聽說過音樂標籤和生成,但是你聽說過鳥的聲音檢測嗎?大約在一年前,在我高二的時候,我第一次聽到這種音頻深度學習的用例。事實上,鳥音頻檢測是我做深度學習和計算機科學的第一個項目。我參與了一個研究項目,在北阿拉斯加的郊區用純粹的聲音來探測鳥類的存在。
  • 使用PyTorch實現目標檢測與跟蹤
    重磅乾貨,第一時間送達 引言 在昨天的文章中,我們介紹了如何在PyTorch中使用您自己的圖像來訓練圖像分類器,然後使用它來進行圖像識別。本文將展示如何使用預訓練的分類器檢測圖像中的多個對象,並在視頻中跟蹤它們。
  • 《PyTorch中文手冊》來了
    這樣的回答就很明確了,其實 PyTorch 和 Torch 都使用的是相同的底層,只是使用了不同的上層包裝語言。註:LUA 雖然快,但是太小眾了,所以才會有 PyTorch 的出現。Uber 的 "Pyro" 也是使用的這個庫。
  • 眼部按摩器有用嗎? 眼部按摩儀該怎麼挑選?
    眼部按摩器有用嗎? 眼部按摩儀該怎麼挑選?時間:2016-06-15 10:26   來源:360常識網   責任編輯:沫朵 川北在線核心提示:原標題:眼部按摩器有用嗎? 眼部按摩儀該怎麼挑選? 眼部按摩器有用嗎? 眼部健康不容忽視,在我們忙碌工作的同時也要經常對眼睛進行有效地緩解放鬆,讓眼睛也放個假。
  • 還不會使用PyTorch框架進行深度學習的小夥伴,看過來
    為了使用 PyTorch,你需要先訪問其官網並安裝 PyTorch。如果你正在使用 Conda,你可以通過運行以下簡單命令來安裝 PyTorch:為了定義 PyTorch 張量,首先需要導入 torch 包。PyTorch 允許你定義兩種類型的張量,即 CPU 和 GPU 張量。
  • Facebook 發布 Detectron2:基於 PyTorch 的新一代目標檢測工具
    雷鋒網 AI 開發者按:Detectron 是 FAIR 在 2018 年初公開的目標檢測平臺,包含了大量業內最具代表性的目標檢測、圖像分割、關鍵點檢測算法,該框架主要基於 python 和 caffe2 實現,開源項目已獲得了超 2.2w 的星標數。
  • 保護眼部健康,我們需要了解的知識
    在一些臨床病例中,來自SARS-CoV和SARS-CoV-2患者的眼淚和結膜分泌物樣本均顯示出可檢測到的病毒RNA。以前的一項研究報告了一名臨床醫生在與病人打交道時感染了SARS-CoV-2,但他在工作過程中對除眼睛以外的身體其他部位都進行了嚴格的保護措施。但是,研究人員在對114例COVID-19肺炎患者的結膜拭子樣本進行檢測時,發現通過RT-PCR檢測不到SARS-CoV-2。
  • PyTorch官方教程書限時免費!500頁內容帶你上手最流行框架
    書籍地址:https://pytorch.org/assets/deep-learning/Deep-Learning-with-PyTorch.pdfPyTorch 是當前最熱的深度學習框架之一。自 2016 年誕生以來,PyTorch 迅速發展,成為廣受開發者和研究人員喜愛的框架。
  • Pytorch框架安裝方法(基於Anaconda環境和Pycharm IDE)
    1.6 單擊啟動Anaconda Prompt 創建虛擬「房間」通過conda創建一個名為:pytorch的虛擬「房間」,可以方便未來對不同版本的PyTorch進行管理,具體方法如下:conda create -n pytorch python=3.61.7 查看創建的「房間」方法:conda info --envs
  • 眼科專家:滴眼液用錯易引發多種眼部疾病
    如何正確的使用滴眼液?11日,中新網記者就這些問題採訪了相關眼科專家。專家表示,選錯了滴眼液,不但達不到想保養眼睛的效果,反而可能給眼睛造成意想不到的麻煩。當日,中新網記者走訪重慶沙坪垻商圈多個藥房發現,在出售滴眼液的貨架上,多數商品外包裝上印有「緩解乾眼症」「緩解眼疲勞、充血」「緩解眼睛發癢」等字樣。
  • Pytorch 中文文檔和中文教程
    簡單介紹GitHub項目管理:https://github.com/apachecn/pytorch-doc-zhPytorch 版本地址:https://pytorch.apachecn.org項目所翻譯的Pytorch版本