林靜敏,魏松林
(1.廈門城市職業(yè)學院,福建 廈門 361008;2.廈門海洋職業(yè)技術學院,福建 廈門 361100)
在眼科診療中,臨床眼科醫(yī)生可以通過眼底圖像對患者的眼部健康狀況進行評估和診斷。眼科疾病要想早發(fā)現(xiàn)、早診斷、早治療,最重要的是定期眼底檢查。據(jù)WHO公布的權(quán)威數(shù)據(jù)顯示,截至2021年,中國現(xiàn)存的視力障礙人群總數(shù)已高達1.5億,平均每位眼科專家需要解決超過5000人的眼部健康問題。面對巨量的眼底圖像的評估和診斷需求,人工檢測速度慢、可重復性差、勞動強度大等缺點顯現(xiàn)無疑[1]。因此,研究和發(fā)展智能自動化的眼底疾病輔助診斷技術,對于眼科疾病及相關疾病的早期篩查、治療監(jiān)控及術后評估具有重要臨床意義。
隨著大數(shù)據(jù)發(fā)展,基于醫(yī)療大數(shù)據(jù)的人工智能輔助診斷技術不斷發(fā)展和普及,基于眼底圖像的智能輔助診斷系統(tǒng)在糖尿病視網(wǎng)膜病變、青光眼、白內(nèi)障、年齡相關性黃斑病變等眼底疾病的篩查和診治工作中展現(xiàn)了良好的靈敏度和特異度,提高了眼科醫(yī)生的診斷效率[2-6],極大節(jié)省了篩查成本。深度學習的概念源自于人工神經(jīng)網(wǎng)絡的研究,它是通過對大量的樣本數(shù)據(jù)進行訓練,從而找到數(shù)據(jù)的內(nèi)在規(guī)律和表示層次關系,這些規(guī)律的獲取對圖像識別、聲音處理等都有極大幫助,因此它在語音和圖像識別領域取得的效果遠遠超過其他相關技術。2018年,世界首個獲批用于糖尿病視網(wǎng)膜病變的自主診斷人工智能(Artificial Intelligence,AI)在美國上市[7],該設備可用于檢測22歲及以上DR患者的視網(wǎng)膜病變程度。2020年,中國國家藥品監(jiān)督管理局審查通過兩款DR眼底圖像輔助診斷軟件產(chǎn)品,產(chǎn)品采用基于卷積神經(jīng)網(wǎng)絡的自主設計網(wǎng)絡結(jié)構(gòu),基于分類標注的眼底圖像數(shù)據(jù),對算法模型進行訓練和驗證。
通過對國內(nèi)外眼底圖像輔助診斷系統(tǒng)的調(diào)研發(fā)現(xiàn),現(xiàn)有眼底圖像分類大多解決的是二元分類問題,集中在對某種疾病嚴重程度進行分級,對專業(yè)眼科醫(yī)生的初步篩查疾病起到的幫助很小,同時存在網(wǎng)絡參數(shù)存儲量巨大、運行時間長等問題。因此,本文以輕量化的深度學習模型為構(gòu)建載體,設計并實現(xiàn)一種可用于硬件部署的多分類眼底圖像輔助診斷系統(tǒng),通過降低模型參數(shù)量的方式來提高系統(tǒng)的運算效率,以期為眼底疾病的診斷提供參考信息和幫助。
基于深度學習的眼底圖像輔助診斷系統(tǒng)的一般流程包括數(shù)據(jù)獲取、數(shù)據(jù)預處理、模型設計、訓練和精度評估五大步驟。通常數(shù)據(jù)的質(zhì)量決定了深度學習模型和算法所能達到的最佳效果,因此充分收集、理解和挖掘數(shù)據(jù),能有效地提高系統(tǒng)精度,提升深度學習模型在眼底疾病智能化診斷中的應用效果。
本文所用數(shù)據(jù)集來源于2019年北京大學國際眼底圖像智能識別競賽(Ocular Disease Intelligent Recognition,ODIR),其中數(shù)據(jù)集視網(wǎng)膜眼底圖像共5000張,源于北京上工醫(yī)信科技有限公司合作醫(yī)院及醫(yī)療機構(gòu)進行眼健康檢查的患者數(shù)據(jù),數(shù)據(jù)集標簽信息均為專業(yè)醫(yī)生診斷標注,包括患者的ID索引、年齡、性別、醫(yī)生的診斷關鍵詞以及診斷結(jié)果。診斷結(jié)果針對患者左右眼一對圖片分為八個標簽:N表示正常眼(Normal),D表示糖尿病視網(wǎng)膜病變(Diabetic Retinopathy),G 表示青光眼(Glaucoma),C表示白內(nèi)障(Cataract),A表示年齡相關性黃斑病變(Age-related Macular Degeneration),H表示高血壓視網(wǎng)膜病變(Hypertensive Retinopathy),M表示病理性近視(Pathologic Myopia),O 表示其他疾?。∣thers),對應病癥數(shù)據(jù)集樣圖如圖1所示。
圖1 標簽對應病癥數(shù)據(jù)集樣圖
為了使數(shù)據(jù)更好地適用于網(wǎng)絡訓練,本文對數(shù)據(jù)進行了預處理和圖片增強操作等,具體的數(shù)據(jù)集處理流程為:原始數(shù)據(jù)集—標簽重生成—劃分訓練驗證集—調(diào)整圖片大小—圖片增強訓練擴充。
數(shù)據(jù)集提供的原始標簽是針對患者左右雙眼,即兩張圖片對應一個標簽,但數(shù)據(jù)集標簽部分提供了左右雙眼的醫(yī)生診斷說明,這為我們重新生成雙眼各自對應的標簽、有效擴充訓練集提供可靠的理論依據(jù)。當然,擴充訓練集的同時也可以提高算法的識別能力,進而提高深度學習模型的泛化能力。本文采用以下的標簽重生成流程。
(1)根據(jù)ODIR數(shù)據(jù)集中的專業(yè)醫(yī)務人員診斷信息建立一個疾病種類—標簽映射表,共有98個種類,此外還有4個無歸類標簽:圖片質(zhì)量差、圖片偏位、相機曝光異常和無眼底圖片,共計26張照片(可視為數(shù)據(jù)缺失,進行剔除)。疾病種類主要集中在標簽O(其他疾?。┥?,共87種不同疾病,這87種不同疾病的關聯(lián)性不大,分類識別特征不明顯,故不納入本文的數(shù)據(jù)集。
(2)分別提取左右眼單一疾病關鍵詞,根據(jù)疾病種類-標簽映射表來匹配對應的標簽信息,形成對應的標簽匹配表。若存在患者疾病類別數(shù)量不唯一,則需要多次匹配,以確保疾病種類與標簽一一對應。
(3)合并上面的標簽匹配表,形成最終的ID索引與標簽信息關系。表1為各疾病種類、樣本數(shù)量及比例統(tǒng)計表,樣本總數(shù)為10536張。從患者眼底疾病相關性分布上看,正常眼數(shù)量和糖尿病視網(wǎng)膜病變數(shù)量位居前兩位,比例分別為40.45%和24.13%。標簽重生成過程是進行數(shù)據(jù)處理的不可缺少的部分,它是真正理解圖片的各個類別的關鍵步驟。
表1 各疾病樣本數(shù)量及比例統(tǒng)計
通常,深度學習針對給出標記數(shù)據(jù)集,通過給定訓練集訓練模型,檢驗模型擬合效果,再將模型運用于驗證集中,從而給出預測的標記結(jié)果。為保證通過訓練集得到的算法具有足夠的泛化能力,采用設置多組隨機數(shù)劃分訓練集。考慮到本文設計的網(wǎng)絡框架輸入的圖片都是單一圖片,我們隨機采取每個種類的10%作為驗證集,其余90%作為訓練集。
數(shù)據(jù)增強(Augmentation)是一種為了使數(shù)據(jù)更好地適應應用場景,整體對訓練圖片進行變換的手段[8]。通過數(shù)據(jù)增強操作,凸顯我們感興趣的信息,抑制造成干擾的那部分,增加相似圖像之間的差異性,減少過擬合現(xiàn)象,提高網(wǎng)絡的學習能力。本文所采用的數(shù)據(jù)增強包括形態(tài)學變換和cutout等方法。主要有以下幾個步驟。
(1)將驗證集中心裁剪,去除原始圖像多余黑色背景,留存中間眼球圖像信息,并把大小統(tǒng)一調(diào)整為224×224作為網(wǎng)絡模型的輸入;縮放訓練集圖像,按0.6~1.0比率對圖片區(qū)域隨機裁剪,如圖2所示,并通過形態(tài)學變換隨機水平翻轉(zhuǎn),豐富圖像的多樣性。
(2)將驗證集和訓練集圖像轉(zhuǎn)化為張量形式(Tensor)并進行歸一化處理,以提升網(wǎng)絡訓練速率及提高實驗精度。
圖2 對縮放的圖像隨機裁剪
目前的眼底視網(wǎng)膜圖像分類方法大多解決的是單一類別疾病,而通過疾病多分類眼底疾病輔助診斷系統(tǒng)的臨床應用較少。針對眼底疾病多分類輔助診斷系統(tǒng),現(xiàn)有的實現(xiàn)方法主要采用基于ResNet為主干網(wǎng)絡的深度學習模型。如圖3所示,50層殘差神經(jīng)網(wǎng)絡由卷積層堆疊而成的殘差單元、池化層以及全連接層組成。Purohit[9]設計的一種使用ResNet網(wǎng)絡作為主干網(wǎng)絡的多分類深層神經(jīng)網(wǎng)絡,用于分類青光眼、糖尿病視網(wǎng)膜病變和年齡相關性黃斑變性,最終的分類峰值準確率和平均準確率分別為91.16%和85.79%。XIE[10]提出的基于SLO圖像的交叉注意力多分支神經(jīng)網(wǎng)絡眼底疾病分類,以ResNet作為主干網(wǎng)絡提取特征信息,并使用多分支網(wǎng)絡和交叉注意力模塊,最后實現(xiàn)了95.47%的準確率。以上基于ResNet為主干網(wǎng)絡的深度學習模型雖然能夠?qū)崿F(xiàn)較高的準確率,但缺點是網(wǎng)絡參數(shù)存儲量巨大,從而在部署時對存儲容量的要求相當高,此外對硬件的算力也有相當高的要求,這對于卷積網(wǎng)絡在嵌入式硬件等領域的應用產(chǎn)生了極大的限制。
圖3 ResNet50網(wǎng)絡結(jié)構(gòu)
基于以上分析,本文采用了一種輕量化卷積神經(jīng)網(wǎng)絡模型SqueezeNet。SqueezeNet是由Iandola[11]等提出的一種輕量級網(wǎng)絡結(jié)構(gòu),它能夠在ImageNet數(shù)據(jù)集上達到AlexNet近似的效果,但是參數(shù)比AlexNet少50倍。本文分別對SqueezeNet和ResNet50進行模型保存實驗,其中ResNet50占用存儲空間為89.9MB,而SqueezeNet僅占用2.78MB,模型文件可比ResNet50小32倍。SqueezeNet是以較少的參數(shù)和較小的模型尺寸實現(xiàn)與主流的卷積神經(jīng)網(wǎng)絡模型相當甚至更高的準確率,可以降低內(nèi)存的要求并提高計算速度,從而更容易部署到嵌入式平臺、FPGA(Field Programmable Gate Array,現(xiàn)場可編程邏輯門陣列)以及ASIC(Application Specific Integrated Circuit,專用集成電路)。
輕量級網(wǎng)絡SqueezeNet包含卷積層、池化層、Fire模塊(SqueezeNet的結(jié)構(gòu)主體)和softmax分類器。Fire模塊使用1×1卷積配合3×3卷積進行特征提取,在模塊的輸入端設置了瓶頸層,可以降低輸入特征圖的通道數(shù),從而降低特征提取的計算量。一個Fire模塊由squeeze部分和expand部分組成,如圖4所示。squeeze部分是由一組連續(xù)的1×1卷積組成,其作用就是削弱通道數(shù),為后續(xù)卷積運算降低成本。expand部分是完成特征的提取工作,由一組連續(xù)的1×1卷積和一組連續(xù)的3×3卷積共同組成。
圖4 Fire模塊的示意圖[12]
本文設計的眼底圖像輔助診斷系統(tǒng)結(jié)構(gòu)如圖5所示,為了判定7類狀態(tài)(6種病癥和1種正常),引入了7個獨立的輕量化的SqueezeNet深度學習模型,分別單獨訓練7種二分類狀態(tài);7個SqueezeNet模型的輸出匯總至“綜合分析模塊”,進行必要的數(shù)據(jù)整理、分析工作,并根據(jù)分析結(jié)果輸出多標簽病癥信息。
圖5 系統(tǒng)結(jié)構(gòu)框圖
深度學習的訓練中,通常需要足夠多的訓練數(shù)據(jù)集來不斷地訓練模型的參數(shù)。當數(shù)據(jù)集較少而模型參數(shù)較大時則會出現(xiàn)過擬合現(xiàn)象。為了避免因訓練數(shù)據(jù)集不足而導致的過擬合現(xiàn)象,本文在訓練過程中應用遷移學習,將torchvision庫中預訓練的SqueezeNet權(quán)重(設置 weights='SqueezeNet1_1_Weights.DEFAULT')導入到本項目,并通過設置每個分支模型末端的分類模塊來匹配本項目的二分類需求,最后在保持前端特征提取模塊參數(shù)不變的情況下只需要訓練分類模塊。預訓練好的SqueezeNet模型,是通過ImageNet數(shù)據(jù)集上的1000類物體共計120萬張圖像進行分類訓練得到的模型,可以有效地避免過擬合并提高模型的泛化能力。
3.3.1 訓練與測試環(huán)境
本系統(tǒng)實驗訓練與測試環(huán)境如下:
系統(tǒng)為Windows 10中文版,CPU為Intel i5-8265U(4核8線程)。使用的Python版本為3.9.12,Pytorch版本為1.12.0。模型訓練過程設置的參數(shù)為:損失函數(shù)設置成CrossEntropyLoss(交叉熵損失函數(shù)),優(yōu)化器為SGD(隨機梯度下降),學習率為0.001,動量為0.9,批處理大小為64,總迭代次數(shù)為50。
3.3.2 評估指標
醫(yī)學圖像分類常用的評價指標為:準確率A(Accuracy)、精確率 P(Precision)、召回率 R(Recall)和F測度(F-Measure)。F測度常用F1測度來進行評價,它的值越高表示方法越有效。具體計算公式如下。
以DR二分類為例,TP(True Positive)是指屬于DR樣本被正確分類至DR樣本的數(shù)量;TN(True Negative)是指不屬于DR樣本被正確分類至其他對應樣本的數(shù)量;FP(False Positive)是指不屬于DR樣本被錯誤分類至 DR樣本的數(shù)量;FN(False Negative)是指屬于DR樣本被錯誤分類至其他樣本的數(shù)量。
3.3.3 結(jié)果與分析
從多標簽疾病種類預測角度分析單一疾病,預測結(jié)果如表2所示。預測結(jié)果最好的是白內(nèi)障(C)和病理性近視(M),可能是由于這兩種疾病的病灶特征與其他存在明顯差異。年齡相關性黃斑準確率達到了88.09%,接近文獻[13]中用深度卷積神經(jīng)網(wǎng)絡(DCNN)形成的智能識別眼底圖像88.4%的準確率。從準確率(A)來看,正常眼和糖尿病預測結(jié)果最差,主要因為數(shù)據(jù)中未患有該病數(shù)量較大,假設模型不具有判斷能力,全部預測為負樣本,那么該指標也將較接近于1,對于這兩種疾病種類該指標作評價存在一定的偏差。從精確率及F1測度指標看,模型對于青光眼(G)和高血壓視網(wǎng)膜病變(H)的病灶特征最難學習和識別,容易出現(xiàn)漏檢。
表2 多標簽疾病種類預測評價指標
為驗證SqueezeNet輕量級深度學習模型的運算速度,本文從單一疾病預測角度,對比了ResNet50和SqueezeNet作為主干網(wǎng)絡的系統(tǒng)精度、模型參數(shù)占用量和系統(tǒng)運行時間,實驗結(jié)果如表3所示。從數(shù)據(jù)上看,SqueezeNet與ResNet50精度相差5.4%;ResNet50占用存儲空間為 89.9 MB,而SqueezeNet僅占用2.78MB,模型文件可比ResNet50小32倍;ResNet50在只使用4核CPU訓練9000張圖像的情況下,單個迭代的運行時間為68.22分鐘,而SqueezeNet僅運行8.97分鐘,速度上提高6.6倍。即在相差5.4%的精度下,SqueezeNet深度學習模型只用ResNet50模型3.09%的存儲量和13.14%的運行時間。因此,在不大幅降低模型精度的前提下,相比于ResNet50模型,SqueezeNet能極大地提高運算速度、提高系統(tǒng)利用率。
表3 SqueezeNet與ResNet50運行指標對比
綜上所述,本文先通過重新生成ODIR數(shù)據(jù)集標簽的方式得到單眼數(shù)據(jù)集,采用圖片增強擴充數(shù)據(jù)集,并基于輕量化的SqueezeNet深度學習模型提出了一種實現(xiàn)多標簽眼底圖像輔助診斷系統(tǒng)。實驗結(jié)果表明,此網(wǎng)絡模型在六種疾病和正常眼底圖像的多分類上取得了優(yōu)異的分類結(jié)果,最佳單模型的準確率為89.47%,驗證了SqueezeNet強大的特征提取能力;此外SqueezeNet可以在僅僅使用ResNet50模型3.09%的存儲量、13.14%的運行時間,即可實現(xiàn)僅相差5.4%的精度,非常適合于硬件部署。本文以輕量化的深度學習模型為構(gòu)建載體,設計并實現(xiàn)一種多分類眼底圖像輔助診斷系統(tǒng),該系統(tǒng)的模型參數(shù)量小、運算效率高、適合于硬件部署。為了提高整個系統(tǒng)的精度,未來可以通過多模型融入技術、引入注意力機制、引入FPGA系統(tǒng)板實現(xiàn)等方向進行優(yōu)化和完善。