譯者 | 朱先忠
審校| 孫淑娟
圖1 :原作者自己設計的Iluminado計畫的封面
2019年世界衛生組織估計,全球共有約22億視力障礙者,其中至少有10億人本來可以預防或仍在治療。就眼部護理領域而言,全世界面臨許多挑戰,包括預防、治療和復健服務的覆蓋範圍和品質不平等。缺乏訓練有素的眼部護理人員,眼部護理服務與主要衛生系統的整合也很差。我的目標是激發人們的行動來共同應對這些挑戰。本文中展示的項目是我目前正在進行的數據科學頂峰項目Iluminado的一部分。
我創建本文專案的目的是想訓練一個深度學習整合模型,最終實現該模型對於低收入家庭來說非常容易獲得,並且可以以低成本執行初始疾病風險診斷。透過使用我的模型程序,眼科醫生就可以根據視網膜眼底攝影確定是否需要立即進行幹預。
OphthAI提供了一個名為視網膜眼底多疾病影像資料集(Retinal Fundus Multi-Disease Image Dataset,簡稱「RFMiD」)的公共可用影像資料集,該資料集包含3200張眼底影像,這些影像由三台不同的眼底相機拍攝,並由兩名資深視網膜專家根據已裁決的共識進行註釋。
這些影像是從2009-2010年期間進行的數千次檢查中提取的,既選擇了一些高品質的影像也包含不少低品質的影像,從而使數據集更具挑戰性。
資料集共分為三個部分,包括訓練集(60%或1920張影像)、評估集(20%或640張影像)和測試集(20%和640張)。平均而言,訓練集、評估集和測試集中的患有疾病的比例分別為60±7%、20±7%和20±5%。此資料集的基本目的是解決日常臨床實踐中出現的各種眼部疾病,共確定了45類疾病/病理。這些標籤可以分別在三個CSV檔案中找到,它們是RFMiD_Training_Labels.CSV、RFMiD_Validation_Labels.SSV和RFMiD_Testing_Labels.CSV。
下面這張圖是用一種被稱為眼底照相機的工具拍攝的。眼底照相機是一種專門的低倍顯微鏡,連接在一台閃光相機上,用來拍攝眼底,也就是眼睛後方的視網膜層。
現在,大多數眼底相機都是手持式的,因此患者只需直視鏡頭。其中,明亮的閃光部分錶示已拍攝眼底圖。
手持攝影機是有其優點的,因為它們可以被攜帶到不同的位置,並且可以容納有特殊需求的患者,例如輪椅使用者。此外,任何接受過所需培訓的員工都可以操作攝像頭,從而能夠使服務水平低下的的糖尿病患者可以快速、安全、高效地進行年度檢查。
眼底視網膜影像系統拍照狀況:
圖2:基於各自視覺特徵拍攝的影像:(a)糖尿病視網膜病變(DR)、(b)老年黃斑部病變(ARMD)及(c)中度霾(MH)。
最初的篩檢過程可以透過深度學習來輔助,但最終診斷由眼科醫師使用裂隙燈檢查進行。
這個過程也被稱為生物顯微鏡診斷,它涉及對活細胞的檢查。醫生可以進行顯微鏡檢查,以確定病人的眼睛是否有任何異常。
#圖3:裂隙燈檢查圖示
與傳統的機器學習演算法不同,深度卷積神經網路(CNN)可以使用多層模型的方法來實現從原始資料中自動提取和分類特徵。
最近,學術界發表了大量文章,都是有關使用卷積神經網路(CNN)來識別各種眼部疾病的,如糖尿病視網膜病變和結果異常(AUROC >0.9)的青光眼等。
AUROC分數將ROC曲線匯總為一個數字,該數字描述了模型在同時處理多個閾值時的表現。值得注意的是,AUROC分數為1代表是一個完美的分數,而AUROC得分為0.5對應於隨機猜測。
圖4:ROC曲線示意圖展示
交叉熵通常在機器學習中用作損失函數。交叉熵是資訊理論領域的一種度量,它建立在熵定義的基礎上,通常用於計算兩個機率分佈之間的差異,而交叉熵可以被認為是計算兩個分佈之間的總熵。
交叉熵也與邏輯損失有關,稱為對數損失。儘管這兩種度量方法來自不同的來源,但當用作分類模型的損失函數時,這兩種方法計算的數量相同,可以互換使用。
(有關具體詳情,請參考:https://machinelearningmastery.com/logistic-regression-with-maximum-likelihood-estimation/)
交叉熵是給定隨機變數或事件集的兩個機率分佈之間差異的量測。您可能還記得,資訊量化了編碼和傳輸事件所需的位數。低機率事件往往包含更多的信息,而高機率事件則包含較少的信息。
在資訊理論中,我們喜歡描述事件的「驚訝」。事件發生的可能性越小,就越令人驚訝,這意味著它包含了更多的資訊。
在給定事件P(x)的機率的情況下,就可以為事件x計算資訊h(x),如下所示:
#h(x) = -log(P(x))
圖4:完美的插圖(圖片來源:Vlastimil Martinek)
熵是從機率分佈傳輸隨機選擇的事件所需的位元數。偏態分佈具有較低的熵,而事件具有相等機率的分佈一般具有較大的熵。
圖5:目標與預測機率之比的完美說明(圖片來源:Vlastimil Martinek)
偏態機率分佈具有較少的“意外”,反過來也具有較低的熵,因為可能的事件占主導地位。相對來說,平衡分佈更令人驚訝,而且熵更高,因為事件發生的可能性相同。
熵H(x)可以針對具有x個離散狀態中的一組x的隨機變數及其機率P(x)計算,如下圖所示:
圖6:多層交叉熵公式(圖片來源:Vlastimil Martinek)
多重類別分類-我們使用多分類交叉熵-屬於交叉熵的具體應用情形,其中的目標採用的是單熱編碼向量方案。 (有興趣的讀者可參考Vlastimil Martinek的文章)
#圖7:熊貓與貓損失計算的完美分解圖(圖片來源:Vlastimil Martinek)
#圖8:損失值的完美分解圖1(圖片來源:Vlastimil Martinek)
圖9:損失值的完美分解圖2(圖片來源:Vlastimil Martinek)
##圖9:關於機率和損失的視覺化展示(圖片來源:Vlastimil Martinek)
#二元交叉熵怎麼樣?圖10:分類交叉熵公式圖解(圖片來源:Vlastimil Martinek)
在我們的專案中選擇使用了二元分類-二元交叉熵方案,即目標為0或1的交叉熵方案。如果我們將目標分別轉換為[0,1]或[1,0]的熱編碼向量方式並進行預測,那麼我們就可以使用交叉熵公式來計算。
圖11:二元交叉熵計算公式圖解(圖片來源:Vlastimil Martinek)
使用非對稱損失演算法處理不平衡資料在一個典型的多標籤模型環境中,資料集的特徵可能存在不成比例數量的正標籤和負標籤的情況。此時,資料集傾向於負標籤的這種趨勢對於優化過程具有主導性影響,並最終導致正標籤的梯度強調不足,從而降低預測結果的準確性。
這也正是我目前選用的資料集所面臨的情況。
本文專案中採用了BenBaruch等人所發展的非對稱損失演算法(參考圖12),這是一種解決多標籤分類的方法,不過其中的類別也存在嚴重不平衡分佈情形。
我想到的辦法是:透過不對稱地修改交叉熵中的正負分量,從而減少負標籤部分的權重,最終實現突出上述處理起來較為困難的正標籤部分的權重。
圖12:非對稱多標籤分類演算法(2020,作者:Ben-Baruch等)
待測試的體系架構總體歸納一下,本文專案使用如圖所示的體系架構:
圖13(圖片來源:Sixu)#
上述架構所採用的關鍵演算法主要包括:
另外,上述有關演算法相關內容一定會在我完成本文Capstone專案後加以更新!有興趣的讀者敬請期待!
朱先忠,51CTO社群編輯,51CTO專家部落格、講師,濰坊一所高校電腦教師,自由程式界老兵一枚。
原文標題:#Deep Ensemble Learning for Retinal Image Classification (CNN),作者:Cathy Kam
以上是視網膜影像分類的深度集成學習演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!