基于深度學(xué)習(xí)的肺炎CT圖像分類與識別算法的研究_第1頁
基于深度學(xué)習(xí)的肺炎CT圖像分類與識別算法的研究_第2頁
基于深度學(xué)習(xí)的肺炎CT圖像分類與識別算法的研究_第3頁
基于深度學(xué)習(xí)的肺炎CT圖像分類與識別算法的研究_第4頁
基于深度學(xué)習(xí)的肺炎CT圖像分類與識別算法的研究_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

目錄摘要 1ABSTRACT 2第1章緒論 41.1研究背景 41.2國內(nèi)外研究現(xiàn)狀 41.2.1國內(nèi)現(xiàn)狀 41.2.2國外現(xiàn)狀 51.3研究的目的和意義 51.3.1研究目的 51.3.2研究意義 61.4論文的組織結(jié)構(gòu) 6第2章深度學(xué)習(xí)概述 72.1卷積神經(jīng)網(wǎng)絡(luò)概述 72.1.1卷積層 72.1.2池化層 92.1.3全連接層 102.2遷移學(xué)習(xí)原理 102.3常見的神經(jīng)網(wǎng)絡(luò)分類模型 112.4本章小結(jié) 15第3章基于DenseNet169和遷移學(xué)習(xí)的圖像分類實現(xiàn) 163.1實驗環(huán)境和思路 163.1.1實驗環(huán)境 163.1.2實驗數(shù)據(jù)集 163.1.3實驗思路 193.2數(shù)據(jù)預(yù)處理 183.2.1圖像可視化處理 193.2.2圖像增強 203.3肺炎CT圖像分類模型構(gòu)建 213.3.1DenseNet169模型搭建 203.3.2對DenseNet169模型做出遷移學(xué)習(xí) 223.3.3損失函數(shù) 233.3.4訓(xùn)練及測試過程 233.4實驗結(jié)果對比與分析 243.4.1評價指標(biāo) 243.4.2實驗結(jié)果分析 25第4章結(jié)論與展望 264.1結(jié)論 264.2展望 26參考文獻 27致謝 28附錄 29 基于深度學(xué)習(xí)的肺炎CT圖像分類與識別算法的研究摘要肺炎的發(fā)病率和致死率每年持續(xù)上升。據(jù)中國疾病預(yù)防控制中心2019年的數(shù)據(jù)顯示,全球肺炎的致死人數(shù)已達250萬,是全球第四大死因。近年以來,新冠肺炎疫情頻頻爆發(fā),確診人員劇增,在現(xiàn)代醫(yī)學(xué)診斷領(lǐng)域,肺部疾病的早期準(zhǔn)確診斷對于提高治療效果和降低死亡率至關(guān)重要,傳統(tǒng)的肺炎診斷方法主要依賴醫(yī)生觀察患者的CT圖像,診斷結(jié)果完全取決于醫(yī)生的專業(yè)知識和經(jīng)驗,容易受到主觀因素的影響,存在診斷準(zhǔn)確率不高且耗時長的缺點。因此,本文提出將DenseNet169與遷移學(xué)習(xí)相結(jié)合,對肺炎影像進行分類的方法。通過該方法可以快速、自動地將CT圖像分為肺炎和正常兩類。本項目擬采用基于ImageNet的DenseNet169預(yù)訓(xùn)練模型參數(shù),以局部肺炎影像為研究對象,進行參數(shù)共享的遷移學(xué)習(xí)。這不僅提供了更有效的模型初始化,還能夠有效地減少對樣本數(shù)目及網(wǎng)絡(luò)學(xué)習(xí)所需時間的依賴性,并增強其泛化能力。實驗結(jié)果證明,與傳統(tǒng)的ResNet方法相比,該方法的識別準(zhǔn)確率達到96%,能夠更好地實現(xiàn)對肺炎圖像的分類。本研究結(jié)果表明,該數(shù)學(xué)模型可作為一種較為客觀的臨床診斷指標(biāo)。關(guān)鍵詞:肺炎;DenseNet169;遷移學(xué)習(xí);圖像分類;深度學(xué)習(xí)RESEARCHONPNEUMONIACTIMAGECLASSIFICATIONANDRECOGNITIONALGORITHMBASEDONDEEPLEARNINGABSTRACTTheincidenceandmortalityofpneumoniahavebeencontinuouslyincreasingeachyear.AccordingtothedatafromtheChineseCenterforDiseaseControlandPreventionin2019,theglobaldeathtollfrompneumoniahasreached2.5million,makingitthefourthleadingcauseofdeathworldwide.Inrecentyears,thefrequentoutbreaksofCOVID-19haveledtoasurgeinconfirmedcases.Inthefieldofmodernmedicaldiagnosis,earlyandaccuratediagnosisoflungdiseasesiscrucialforimprovingtreatmentoutcomesandreducingmortalityrates.TraditionalmethodsofdiagnosingpneumoniarelymainlyondoctorsobservingCTimagesofpatients.Diagnosisresultsareheavilyreliantontheexpertiseandexperienceofthemedicalprofessionals,makingthemsusceptibletosubjectiveinfluencesandleadingtolowdiagnosticaccuracyandlongprocessingtimes.Therefore,thispaperputsforwardapneumoniaimageclassificationmethodbasedonDenseNet169andtransferlearning.ThismethodenablestherapidandautomaticcategorizationofCTimagesintopneumoniaandnormalclasses.ByutilizingtheDenseNet169networkmodelparameterspre-trainedontheImageNetdatasetandconductingtransferlearningwithparametersharingonalocalpneumoniaimagedataset,notonlymoreeffectivemodelinitializationisachievedbutalsoasignificantreductionindependencyonimagequantityandnetworktrainingtime,therebyenhancingthemodel'sgeneralizationability.ExperimentalresultsindicatethatcomparedtotheResNetmodel,theproposedmodelinthispaperexhibitshigheraccuracy,withanaverageprecisionrateof%.Iteffectivelyaccomplishestheclassificationofpneumoniaimages.Hence,thismodelcanproviderelativelyobjectivemetricsforclinicaldiagnosis.Keywords:Pneumonia;DenseNet169;TransferLearning;ImageClassification;DeepLearning第1章緒論研究背景在現(xiàn)代醫(yī)學(xué)領(lǐng)域中,肺炎等肺部疾病的早期診斷對其治療及預(yù)后具有重要意義。但是,對肺炎的常規(guī)診斷很大程度上取決于醫(yī)生對CT圖像的觀察和解讀,這種方法容易受到主觀因素的影響,診斷準(zhǔn)確性有限且耗時較長,這導(dǎo)致了在臨床實踐中的挑戰(zhàn)。深度學(xué)習(xí)算法能夠從海量的醫(yī)學(xué)影像數(shù)據(jù)中學(xué)習(xí)特征,并通過訓(xùn)練建立準(zhǔn)確的圖像識別分類模型,為醫(yī)護人員提供更有效的輔助工具。因此,應(yīng)用深度學(xué)習(xí)方法實現(xiàn)肺炎CT圖像的自動分析與診斷,可以提高診斷的客觀性和準(zhǔn)確性,減少人為誤判的可能性,為醫(yī)療工作者提供更有力的支持,從而改善患者的治療效果和生存率。圖像分類的本質(zhì)就是提取和分析圖像的特征,然后利用神經(jīng)網(wǎng)絡(luò)模型對圖像進行分類[1]。現(xiàn)在,在圖像分類技術(shù)領(lǐng)域,采用卷積神經(jīng)網(wǎng)絡(luò)解決問題已經(jīng)變得非常普遍和流行。DenseNet-169是一種卓越的卷積神經(jīng)網(wǎng)絡(luò),在圖像分類任務(wù)上展現(xiàn)出了極高的潛力和表現(xiàn)。同時其模型訓(xùn)練時間較長,以及參數(shù)眾多占用GPU內(nèi)存較大的問題,可通過結(jié)合遷移學(xué)習(xí)來提升模型訓(xùn)練速度。國內(nèi)外研究現(xiàn)狀1.2.1國內(nèi)研究現(xiàn)狀在醫(yī)學(xué)輔助診斷中,更多研究針對圖像分類展開。而肺炎CT圖像就是極好訓(xùn)練數(shù)據(jù)。肺炎具有高發(fā)病率和死亡率,是全球所有年齡段死亡的主要感染性原因[2]。雖然上世紀(jì)90年代以來,全球70歲及以上人群的肺炎死亡率已經(jīng)明顯降低,但是其對老年人健康的威脅卻一直存在,2007年至2017年,全球70歲以上人群的肺炎死亡率上升了33.6%[3]。2019新型冠狀病毒肺炎對人類健康造成了巨大的傷害,其爆發(fā)引起全球?qū)Ψ窝准胺尾扛腥绢惣膊〉闹匾?。肺部感染是由?xì)菌、病毒和真菌等多種病原體所致,其發(fā)病機制也各不相同,故對其進行早期診斷和治療具有重要意義。隨著計算機技術(shù)和醫(yī)學(xué)成像技術(shù)的不斷發(fā)展,基于深度學(xué)習(xí)的醫(yī)學(xué)圖像處理方法,如肺CT、X光片等,得到了越來越多的應(yīng)用。這些模型有助于醫(yī)師更精確地確定病變部位,并對病變進行精確定位,以提高診斷的準(zhǔn)確率與效率。傳統(tǒng)的病毒檢測法是對每位患者使用逆轉(zhuǎn)錄聚合酶鏈反應(yīng)(RT-PCR)檢測,以此來診斷病毒感染。然而,RT-PCR方法耗時長,檢測假陰性率高[4]。雖然CT圖像提供了豐富的病理信息,然而,由于缺乏計算機對感染區(qū)域的準(zhǔn)確量化,使得醫(yī)務(wù)人員難以快速提供診斷信息。馮宇等[5]針對傳統(tǒng)計算機輔助檢測系統(tǒng)存在大量誤判的問題,提出了一種基于三維卷積神經(jīng)網(wǎng)絡(luò)的肺結(jié)節(jié)識別方法。馬園等[6]采用深度信念網(wǎng)絡(luò)方法在CT圖像中識別肺結(jié)節(jié)的良惡性。戴正行等的研究結(jié)果顯示,相對于人工診斷,將人工智能技術(shù)應(yīng)用于肺結(jié)節(jié)的良惡性診斷,具有較高的準(zhǔn)確率。1.2.2國外研究現(xiàn)狀隨著計算機技術(shù)和醫(yī)學(xué)影像技術(shù)的不斷發(fā)展,無創(chuàng)診斷技術(shù)(如CT、MRI等)飛速發(fā)展。在當(dāng)今臨床實踐中,采用醫(yī)學(xué)影像技術(shù)進行輔助診斷已成為醫(yī)護人員必不可少的工具。將可視化技術(shù)和圖像處理技術(shù)相結(jié)合,其在臨床診療中起到了相當(dāng)重要的作用。Thakur團隊[7]應(yīng)用深度學(xué)習(xí)方法在胸片和CT混合圖像的數(shù)據(jù)集中對COVID-19患者進行分類診斷,結(jié)果顯示準(zhǔn)確率達98.28%。ThankiRohit[8]首先利用深度神經(jīng)網(wǎng)絡(luò)提取視網(wǎng)膜圖像的深度特征,然后使用基于邏輯回歸的分類器進行分類,該算法組合優(yōu)于所有現(xiàn)有的青光眼分類系統(tǒng)。Mei等人[9]克服了二元分類鑒定單克隆漿細(xì)胞(單克隆PC)的現(xiàn)有方法的缺點,構(gòu)建了多發(fā)性骨髓瘤的多目標(biāo)檢測模型,最終以90.8%的平均準(zhǔn)確率識別六個骨髓細(xì)胞譜系。Warin等人[10]建立了FasterR-CNN、YOLOv5、RetinaNet和CenterNet多類目標(biāo)檢測模型,用于口腔潛在惡性疾病(OPMDs)和口腔鱗狀細(xì)胞癌(OSCC)的早期發(fā)現(xiàn)。研究的目的和意義1.3.1研究目的肺炎的患病率和死亡率一直居高不下,在全球范圍內(nèi)成為導(dǎo)致各個年齡群體死亡的主要傳染病因素。雖然自1990年以來肺炎的死亡率有所下降,但對于老年人而言,它仍然具有巨大的危害。據(jù)統(tǒng)計,2007年至2017年間,全球70歲以上的成年人肺炎感染死亡人數(shù)增加了33.6%。與此同時,2019年新冠狀病毒肺炎(COVID-19)的暴發(fā)給全球醫(yī)療系統(tǒng)帶來了沉重的負(fù)擔(dān),世界范圍內(nèi)的肺炎問題再度受到人們的關(guān)注。引起肺炎發(fā)病的因素有很多,包括細(xì)菌,病毒,真菌等。不同種類病原體導(dǎo)致的肺炎,往往需要使用不同的治療方法。因此,及時確診肺部感染的病原體對于制定有效的治療方案至關(guān)重要。算法的主要目的在于提升肺炎診斷的準(zhǔn)確性和效率,從而在多個層面上改善臨床醫(yī)療實踐。1.3.2研究意義早期診斷和治療對于肺炎這一常見且嚴(yán)及重的呼吸系統(tǒng)疾病至關(guān)重要。借助肺炎圖像識別技術(shù),我們能夠自動識別肺部圖像中的異?,F(xiàn)象,為患者的早期診斷提供重要支持,協(xié)助醫(yī)生準(zhǔn)確判斷病情、指導(dǎo)治療方案的制定。這種技術(shù)不僅提升了診斷的準(zhǔn)確性和效率,減少了主觀因素引起的誤判和漏診風(fēng)險,同時也能夠在短時間內(nèi)處理大量肺部圖像,提高診斷的效率。在大規(guī)模肺炎篩查和防控方面,肺炎圖像識別技術(shù)發(fā)揮著重要作用。特別是在流感季節(jié)或疫情流行期間,通過快速、自動地分析肺部圖像,篩查潛在患病者,及時隔離并施行干預(yù)治療,有助于控制疫情蔓延。此外,肺炎圖像識別研究還為科學(xué)研究和知識積累提供了重要支持,深入挖掘與肺炎相關(guān)的特征和模式,有助于揭示疾病的病理生理機制,為未來肺炎研究提供寶貴的數(shù)據(jù)和見解。1.4論文的組織結(jié)構(gòu)如圖1-1所示:圖1-1系統(tǒng)功能模塊圖第2章深度學(xué)習(xí)概述2.1卷積神經(jīng)網(wǎng)絡(luò)概述卷積神經(jīng)網(wǎng)絡(luò)(CNN)[11]是一種前饋神經(jīng)網(wǎng)絡(luò)的形式。同其他算法相比,CNN在圖像處理任務(wù)中表現(xiàn)出色,特別適用于處理大規(guī)模圖像數(shù)據(jù)。相對于淺層和深層神經(jīng)網(wǎng)絡(luò),CNN擁有更少的參數(shù)量,卻展現(xiàn)出強大的深度學(xué)習(xí)能力。CNN采用局部連接、權(quán)值共享和子采樣等設(shè)計特點,使得其在處理圖像時能夠保持特征的穩(wěn)定性,不受平移、旋轉(zhuǎn)等變換的影響,從而更好地提取和識別圖像特征。CNN的中心部分是一個卷積結(jié)構(gòu)。在將圖像用作網(wǎng)絡(luò)輸入的情況下(比如,輸入的維數(shù)為n(批次)、w(寬度)、H(高度)、C(圖像信道數(shù)目)時,還將接受神經(jīng)元按長、高、深三維進行分割。舉例來說,若輸入影像的規(guī)格為64x64x2,則接受神經(jīng)細(xì)胞的大小也應(yīng)為64x64x2,且每一神經(jīng)元表示一種過濾器,而過濾器中則含有若干個卷積核。卷積神經(jīng)網(wǎng)絡(luò)包括多個卷積網(wǎng)絡(luò)、池化層和完全連通層,在特征提取中起著至關(guān)重要的作用。該方法采用梯度下降的方法,對每一層權(quán)值進行調(diào)整,從而達到最優(yōu)的學(xué)習(xí)效果。卷積神經(jīng)網(wǎng)絡(luò)構(gòu)架圖如圖2-1所示:圖2-1.卷積神經(jīng)網(wǎng)絡(luò)構(gòu)架圖2.1.1卷積層在CNN中,卷積層是完成特征提取的關(guān)鍵部分,該算法通過對輸入圖像的濾波操作,實現(xiàn)對圖象中各種特征的識別與學(xué)習(xí)。每個卷積層在處理時只關(guān)注輸入數(shù)據(jù)的局部特征,而不是整體圖像信息,通常采用3x3或5x5的尺寸,這種局部連接的設(shè)計有助于增加網(wǎng)絡(luò)的深度。當(dāng)針對不同類型的輸入信號進行卷積處理時,一些卷積層可能僅能提取較低層次的特征,如邊界、直線等。隨著網(wǎng)路的深度與復(fù)雜程度的提升,可逐漸擷取出較復(fù)雜的特征。隨著神經(jīng)網(wǎng)絡(luò)的層數(shù)和結(jié)構(gòu)變得更深更復(fù)雜,卷積層可以逐漸學(xué)習(xí)到更抽象和高級的特征,進一步提高模型對輸入數(shù)據(jù)的理解與描述能力。在一個CNN中含有若干個不同的卷積核,每一個核都賦有一個權(quán)值,并使用后向傳播算法對其進行優(yōu)化。在對卷積核迭代過程中,先對輸入的特征進行掃描,再用矩陣元對其進行相乘、相加、加偏量。通過在不同卷積核中學(xué)習(xí)到的特征,該方法能夠同時捕獲圖像的多個局部特征,并通過卷積操作有效地提取和表征這些特征信息。通常情況下,一個濾波器中包含一個卷積核。CNN的內(nèi)部參數(shù)有多種,其中影響卷積核大小的的參數(shù)有三個:分別是尺寸、步長和填充值。卷積核可以任意設(shè)定,但是不能比輸入圖片小,一般是3。當(dāng)卷積核數(shù)目增大時,能夠抽取到更多的復(fù)雜特征;該方法通過人工增大輸入圖象的大小,使之與卷積運算相適應(yīng),以克服卷積運算帶來的維數(shù)壓縮問題。常用的填補方法有:使用循環(huán)的邊框值,以及使用零的填充;-卷積步長決定了在兩個相繼掃描中卷積核的位置間隔(窗口移動的長度),當(dāng)步幅為1時,特征圖的元素逐個掃描,如果步幅為n,則每次掃描將跳過n-1個像素。例如,一張3×3×1的灰色圖片,3×3表示該圖片的分辨率,3×3,共計9種灰度等級,1表示一條通道。如果這個3x3x1的灰度圖用一個2×2x1的卷積核進行檢驗,假設(shè)它的偏置值為5,那么卷積的計算為:Convolution

result=2×1+1×2+(?1)×4+3×5=2+2?4+15=15Final

result=Convolution

result+b=15+5=20卷積操作完成后,接著需要進行激活函數(shù)的計算。激活函數(shù)的主要作用是評估各個神經(jīng)元的輸出是否達到激活閾值。當(dāng)某個特征部分的強度未能滿足特定條件時,輸出值將為0,這表明該部分特征無法被提取出來,或者其特征較為微弱。相反地,如果沒有經(jīng)過特定的激活函數(shù)處理,即使該特征信息十分微弱,也會獲得一個輸出值,隨后的網(wǎng)絡(luò)層會將該輸出值作為一項特征進行處理。2.1.2池化層Pooling,也叫作下采樣,是一種通過縮小輸入的圖像而降低像素信息的圖像處理技術(shù),通過保留關(guān)鍵信息以降低特征圖的數(shù)量。一般情況下,經(jīng)過卷積層后會產(chǎn)生一個較大的特征映射。池化操作是通過將其分割為多個區(qū)域,并計算這些區(qū)域的平均值或最大值,以此得到一個新的特征映射。池化層在CNN中起到降低特征圖尺寸、減少參數(shù)量和計算復(fù)雜度的作用,并幫助模型更好地學(xué)習(xí)并泛化數(shù)據(jù)特征和避免過擬合。通常情況下會在相鄰的卷積層之間添加池化層,以便對特征進行精煉和提取。其中,合理選取池化區(qū)域的大小、填充方式及步長是實現(xiàn)池化操作的關(guān)鍵。在卷積層中得到圖像信息特征后,池化層會對這些特征進行池化操作,以此幫助網(wǎng)絡(luò)更好地學(xué)習(xí)和理解圖像的特征信息。池化層的功能如下:特征不變性,池化層能夠不因輸入數(shù)據(jù)的微小變化而發(fā)生變動,例如平移、旋轉(zhuǎn)、色彩變換和噪聲添加等操作,從而提高模型的泛化能力。2.降低特征的維度,一幅圖像蘊含著豐富的信息與特征,而池化技術(shù)的一個功能就是剔除圖像中的冗余信息,從中獲取最重要的特征。3.特征提取,池化層能夠幫助神經(jīng)網(wǎng)絡(luò)提取輸入數(shù)據(jù)中最重要的特征,去除一些冗余信息,從而更好地學(xué)習(xí)和表示數(shù)據(jù)特征。常見的池化規(guī)模是2*2,步長為2,做最大池化,如圖2-2所示:圖2-2最大池化過程2.1.3全連接層全連接層(FullyConnected,FC)是CNN的“分類器”,在CNN中有著極其重要的作用,它通過將不同層的特征進行線性組合,實現(xiàn)了多層特征的全局交互和信息融合,最終將高維特征映射為一維向量(n*1),為后續(xù)的分類器提供輸入。在某些特殊情況下,可以將全連接層看作為一個卷積網(wǎng)絡(luò)。該方法采用的卷積核的大小與輸入矩陣的尺寸相符,所以在卷積運算之后,輸出信號的高、寬都是1。在所有全連接層之前,特征均以矩陣的形式表示,因此在被傳遞到全連接層之前,需要對傳遞來的特征進行壓縮,將其轉(zhuǎn)換為一維向量。當(dāng)需要進行分類時,使用softmax函數(shù)來輸出;在進行回歸運算時,可以直接使用線性函數(shù)。2.2遷移學(xué)習(xí)原理遷移學(xué)習(xí)(Transfer

Learning)是一種機器學(xué)習(xí)方法,其核心思想是通過利用源任務(wù)的知識和經(jīng)驗來改善目標(biāo)任務(wù)的學(xué)習(xí)效果。遷移學(xué)習(xí)旨在解決目標(biāo)領(lǐng)域數(shù)據(jù)稀缺或分布不均勻的問題,通過將已學(xué)習(xí)到的特征、模型參數(shù)等知識轉(zhuǎn)移至新任務(wù)中,以避免模型的過擬合和提高其泛化能力。遷移學(xué)習(xí)的一些方式:(1)領(lǐng)域自適應(yīng):該方法的核心思路是通過對抗訓(xùn)練、實例重加權(quán)等方法減少源領(lǐng)域和目標(biāo)領(lǐng)域之間的分布差異。(2)基于微調(diào)的遷移學(xué)習(xí):該方法的核心思路是通過使用一個在源領(lǐng)域上預(yù)訓(xùn)練好的模型(通常是在大規(guī)模數(shù)據(jù)集上進行預(yù)訓(xùn)練的模型),然后在目標(biāo)領(lǐng)域上進行微調(diào),以適應(yīng)目標(biāo)領(lǐng)域的任務(wù)需求。(3)遷移強化學(xué)習(xí):該方法的核心思路是將源領(lǐng)域的經(jīng)驗知識應(yīng)用到目標(biāo)領(lǐng)域的強化學(xué)習(xí)任務(wù)中,加速智能體的學(xué)習(xí)過程。當(dāng)前,將深度學(xué)習(xí)與遷移學(xué)習(xí)融合的方法在不同領(lǐng)域都得到了廣泛的應(yīng)用和關(guān)注。將從其他大規(guī)模數(shù)據(jù)集中所訓(xùn)練的網(wǎng)絡(luò)模型的參數(shù)作為目標(biāo)任務(wù)訓(xùn)練模型的起始參數(shù),通過持續(xù)調(diào)整可以得到一個新模型,它可能實現(xiàn)更好的預(yù)測準(zhǔn)確性。如圖2-3深度學(xué)習(xí)和遷移學(xué)習(xí)結(jié)合所示:圖2-3深度學(xué)習(xí)和遷移學(xué)習(xí)結(jié)合2.3常見的神經(jīng)網(wǎng)絡(luò)分類模型卷積神經(jīng)網(wǎng)絡(luò)作為一種新型的深度學(xué)習(xí)框架,可以有效地解決圖像、時序等復(fù)雜數(shù)據(jù)的計算問題,是當(dāng)前深度學(xué)習(xí)研究的熱點之一。自從CNN問世以來,它已經(jīng)有了許多不同的變化,有些在CNN的發(fā)展是頗具影響的,他們分別是LeNet、VGG、ResNet、DenseNet。LeNet5模型LeNet-5是一種經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò),由YannLeCun等于1998年提出,旨在解決手寫數(shù)字識別問題的技術(shù)方法。它通過卷積操作、參數(shù)共享和池化操作等技術(shù)來有效地抽取圖像特征,從而降低了模型的復(fù)雜度和計算成本。此外,LeNet5在其網(wǎng)絡(luò)結(jié)構(gòu)中包含了全連接層,用于執(zhí)行分類和識別任務(wù)。這一網(wǎng)絡(luò)的設(shè)計不僅在當(dāng)時標(biāo)志著神經(jīng)網(wǎng)絡(luò)在圖像處理領(lǐng)域的一個重要進展,而且對后續(xù)的卷積神經(jīng)網(wǎng)絡(luò)模型的發(fā)展具有重大意義。LeNet5的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2-4所示:圖2-4LeNet網(wǎng)絡(luò)模型圖LeNet5包括7個不同類型的層:卷積層(C)、池化層(S)和全連接層(F)。最初輸入的圖像尺寸為32×32,共1024個灰度值。這種結(jié)構(gòu)的設(shè)計有助于提取圖像特征并進行分類識別。VGGNet模型VGGNet是一種深度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),由牛津大學(xué)視覺幾何小組(VisualGeometryGroup,VGG)提出。在2014年的ILSVRC分類任務(wù)中,VGGNet獲得了亞軍的成績。VGGNet框架通過對卷積神經(jīng)網(wǎng)絡(luò)的深度和性能進行探索和優(yōu)化,構(gòu)造了16到19個層次的深層卷積網(wǎng)絡(luò)。研究發(fā)現(xiàn),當(dāng)網(wǎng)路層數(shù)增加時,模型的整體表現(xiàn)得到了顯著提升,這主要體現(xiàn)在錯誤率的顯著降低上。此外,VGGNet展現(xiàn)出了良好的遷移學(xué)習(xí)能力,能夠有效地將學(xué)到的特征應(yīng)用于不同的圖像數(shù)據(jù)集上,顯示出了優(yōu)秀的泛化能力。目前,VGGNet仍是一種非常重要的圖像特征抽取方法,在多種視覺識別中得到了廣泛的應(yīng)用。VGG的網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖2-5所示:圖2-5VGGNet網(wǎng)絡(luò)模型圖VGG是一種CNN模型,由5層卷積層、3層全連接層、Softmax輸出層構(gòu)成,層與層之間使用最大池化(max-pooling)連接,所有隱含層的激活單元都采用ReLU函數(shù)[6]。(3)ResNet模型ResNet模型[12](全稱為ResidualNetwork)是由KaimingHe等人在2015年提出。ResNet所引入的殘差學(xué)習(xí)的機制,能夠有效地解決深度神經(jīng)網(wǎng)絡(luò)中長距離信息傳遞困難、梯度消失和模型退化等問題,顯著地提高了神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度和性能的提升。傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)存在著梯度丟失的問題,即在反向傳播的過程中,梯度值會不斷減小直至完全消失,這給深度網(wǎng)絡(luò)的訓(xùn)練帶來了很大的困難。ResNet網(wǎng)絡(luò)結(jié)構(gòu)的的核心創(chuàng)新在于使用殘差連接(ResidualConnections),允許網(wǎng)絡(luò)直接傳遞輸入到后續(xù)層,從而簡化了學(xué)習(xí)過程。Resnet的這一設(shè)計使構(gòu)建極深的網(wǎng)絡(luò)模型成為可能。但ResNet任有一些缺陷,ResNet其相對復(fù)雜的連接結(jié)構(gòu),這可能導(dǎo)致網(wǎng)絡(luò)參數(shù)數(shù)量較多,從而增加了模型的復(fù)雜度和計算成本。此外,雖然跳躍連接有助于梯度傳播,但在某些情況下,這些連接任可能會導(dǎo)致梯度消失或爆炸的問題。ResNet50的網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖2-6所示:圖2-6ResNet50模型框架ResNet50由49層卷積層、4個殘差塊、1層全局池化層和1層全連接層構(gòu)成,每個殘差塊包括兩個卷積層,通過殘差連接將輸入與輸出相加,再通過激活函數(shù)。這種設(shè)計有助于避免梯度消失問題,使網(wǎng)絡(luò)更深,并加深了神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力。(4)DenseNet模型DenseNet模型[13](全稱為DenseConvolutionalNetwork)是由Huang等人于2016年提出的。比起ResNet的殘差塊(ResidualBlock),DenseNet采用了一種更密集的連接機制,即密集連接(DenseConnectivity)。DenseNet中的每個層都與之前所有層建立直接聯(lián)系,通過密集連接將前面層的特征圖與當(dāng)前層的特征圖連接在一起。這樣做可以讓每一層網(wǎng)絡(luò)都能夠獲取之前所有層的特征信息,從而促進特征信息的傳遞和共享,有助于信息的自由流動和特征的多次利用。該策略通過優(yōu)化特征的流動和再利用,有效緩解了深度學(xué)習(xí)模型中的梯度消失和信息損失問題,同時也提高了模型的參數(shù)使用效率和對新數(shù)據(jù)的泛化性能。這種密集鏈接的結(jié)構(gòu)被命名為"密集塊"(DenseBlock)。其結(jié)構(gòu)如圖2-7所示。圖2-7密集塊(DenseBlock)在密集塊內(nèi),每一層都與之前的各層建立了直接聯(lián)系,這意味著每一層都能夠整合并利用之前所有層的特征信息。這種全部連接的方式可以增強特征之間的相互影響,從而促進特征信息的傳播與共享,提高了網(wǎng)絡(luò)對特征的利用效率,增強了網(wǎng)絡(luò)內(nèi)部信息的流動性。在這樣一個密集塊中,層與層之間通過疊加的方式緊密相連,形成了一個高度集成的特征處理網(wǎng)絡(luò)。DenseNet的網(wǎng)絡(luò)模型框架如圖2-8所示:圖2-8DenseNet網(wǎng)絡(luò)模型圖DenseNet169包含5個過渡層,6個稠密塊,1個全局平均池化層,1個全連接層,1個softmax激活函數(shù)。全局平均池化層實現(xiàn)了特征映射到一維映射。所有密集塊都是由許多緊密相連的卷積層構(gòu)成的。每一個密集連接都把前面一層的所有特性圖形與目前的一層相連接,促進了信息的傳播和梯度流動。2.4本章小結(jié)本章節(jié)著重介紹了本項目所應(yīng)用的卷積神經(jīng)網(wǎng)絡(luò)和遷移學(xué)習(xí)方法,對一些常見的卷積神經(jīng)網(wǎng)絡(luò)模型進行了分析,簡要介紹各個模型的作用與優(yōu)勢區(qū)間,并簡要介紹了將用于實驗的DenseNet169模型?;贒enseNet169和遷移學(xué)習(xí)的圖像分類實現(xiàn)3.1實驗環(huán)境和思路3.1.1實驗環(huán)境本實驗使用Windows11系統(tǒng),NVIDIAGTX1650ti的顯卡,16GB內(nèi)存,實驗使用的編程語言為Python3.10,在PyCharm環(huán)境下編譯運行,深度學(xué)習(xí)框架為Pytorch。3.1.2實驗數(shù)據(jù)集本研究所選取的數(shù)據(jù)集是廣州市婦女兒童醫(yī)療中心的公開數(shù)據(jù)集。數(shù)據(jù)集由5856張圖片組成,分為兩個類別(正常/肺炎),其中患有肺炎的CT圖片有4273張,肺部的CT圖片正常的圖片有1583張?;加蟹窝椎目梢员灰暈檎悇e,相反則可以被視為負(fù)類別。數(shù)據(jù)集的作者對數(shù)據(jù)集進行了劃分,將肺炎CT圖像劃分為了三部分,分別為用于訓(xùn)練模型的訓(xùn)練數(shù)據(jù)集(train),用于評估模型性能的測試數(shù)據(jù)集(test),以及用于調(diào)整模型超參數(shù)和防止過擬合的驗證數(shù)據(jù)集(val)。訓(xùn)練集上的圖片數(shù)為5216,驗證集的圖片數(shù)為624,測試集中的圖片數(shù)為16。由于原測試集分的圖片數(shù)量過于稀少,導(dǎo)致測試的結(jié)果隨機性很強,同時為了驗證DenseNet-169模型在參數(shù)有限情況下高效的識別率,所以重新對數(shù)據(jù)集進行整理與劃分。經(jīng)重新整理和劃分?jǐn)?shù)據(jù)集,得到了包括4686張訓(xùn)練圖片、585張驗證圖片和585張測試圖片的新數(shù)據(jù)集。表3-1為數(shù)據(jù)集的劃分結(jié)果:表3-1數(shù)據(jù)集的劃分結(jié)果患病正??傆嬘?xùn)練集341912674686測試集427158585驗證集427158585下面圖3-1至圖3-4為數(shù)據(jù)集展示部分:圖3-1數(shù)據(jù)集目錄圖3-2訓(xùn)練集部分圖3-3驗證集部分圖3-4測試集部分3.1.3實驗思路下圖是本研究的流程,第一步是對所搜集到的資料進行預(yù)處理,藉由影像顯示與影像增強兩種方法來完成;然后,對DenseNet169進行建模,并為DenseNet169下載了一個預(yù)訓(xùn)練的模型;其次,選取適當(dāng)?shù)膿p耗函數(shù)與評估函數(shù),對所構(gòu)造的網(wǎng)路進行剖析與改善;在此基礎(chǔ)上,利用局部肺炎CT樣本對加權(quán)轉(zhuǎn)移模型進行重新訓(xùn)練,并用實驗驗證其有效性。圖3-5實驗思路圖3.2數(shù)據(jù)預(yù)處理3.2.1圖像可視化處理該實驗數(shù)據(jù)集中的圖像全為灰度圖像,在特征提取的過程中將灰度圖轉(zhuǎn)換成彩色圖像能夠更好地獲取圖像特征信息,從而提高分類或識別的準(zhǔn)確性。同時在訓(xùn)練深度學(xué)習(xí)模型時,將灰度圖片轉(zhuǎn)換為RGB圖片可以增加數(shù)據(jù)集的多樣性。以下為圖像轉(zhuǎn)換的代碼實例圖:圖3-6實現(xiàn)代碼3.2.2圖像增強為了在訓(xùn)練數(shù)據(jù)中引入多樣性,可以幫助深度學(xué)習(xí)模型學(xué)習(xí)到更加魯棒的特征表示,同時減少因光照、環(huán)境等因素引起的整體對比度,局部過暗,過曝,像素過低,放大后細(xì)節(jié)丟失等問題。在此研究中,對圖像進行數(shù)據(jù)增強?!皵?shù)據(jù)增強”指的是通過某些手段,提高圖像的能見度和清晰度,或者突出“有益”的部分,壓縮其它“無用”的內(nèi)容;利用某些方法對數(shù)據(jù)進行翻轉(zhuǎn)、裁剪、標(biāo)準(zhǔn)化,在訓(xùn)練數(shù)據(jù)中引入多樣性,可以幫助深度學(xué)習(xí)模型學(xué)習(xí)到更加魯棒[14]的特征表示。結(jié)合實驗用到的肺炎CT圖像特點,本研究對CT圖像進行了隨機裁剪,將輸入的圖像轉(zhuǎn)換為大小為256x256像素,并從中心裁剪出224x224的大小的區(qū)域。同時對數(shù)據(jù)圖像轉(zhuǎn)換張量形式,并對圖像進行標(biāo)準(zhǔn)化處理,以便于模型更好的學(xué)習(xí)特征。為了提高圖像的對比度,增強暗部與亮部的細(xì)節(jié),本研究使用了對比度拉伸中直方圖均衡的方式。方法數(shù)學(xué)公式如以下表示。設(shè)原始RGB圖像被表示為(R,G,B),其中R,G,B分別表示紅色、綠色、藍色通道的灰度級別范圍為[0,L?1]。直方圖均衡化的過程可以描述為:對于每個顏色通道R,G,B,分別計算灰度級別的像素數(shù)和概率分布:Pr(c)(rk)=nk(c)/N(c)(3.1)其中rk表示第k個灰度級別,nk(c)表示通道c中該灰度級別對應(yīng)的像素數(shù),N(c)表示通道c中的總像素數(shù)。分別計算每個顏色通道的累積分布函數(shù)(CDF):Sk(c)=∑kj-0pr(c)(rj)(3.2)將每個顏色通道的CDF映射到新的灰度級別范圍[0,L?1]:Sk’(c)=round((L-1)×Sk(c))(3.3)其中round()為取整函數(shù)。原始RGB圖像中的每個像素值(ri,gi,bi)替換為對應(yīng)的映射后的像素值(Si’(R),Si’(G),Si’(B))。本方法可以拉伸圖像的灰度范圍,增加圖像的對比度,從而使得模型更好的學(xué)習(xí)特征,對比圖如下所示:圖3-7處理前 圖3-8處理后3.3肺炎CT圖像分類模型構(gòu)建3.3.1DenseNet169的模型構(gòu)建 本研究采用的DenseNet-169模型屬于DenseNet系列模型中的一種,它由121層構(gòu)成,涵蓋了六個密集塊和五個過渡層。網(wǎng)絡(luò)模型如圖3-9所示,在這些密集塊中,每一層都實現(xiàn)了與前層的直接連接,允許每一層直接獲取并利用之前各層的特征圖。這種設(shè)計不僅促進了特征信息的高效流通和再利用,還有助于降低模型的參數(shù)總量,從而提高了參數(shù)的使用效率。圖3-9DenseNet169模型結(jié)構(gòu)圖經(jīng)過預(yù)處理后,對于尺寸為224×224×3的RGB圖像,在DenseNet-169的第一個卷積層中使用了64個大小為3x3的濾波器,連續(xù)進行兩次卷積操作。這樣處理后,圖像的尺寸變成了224x224x64。接下來,經(jīng)過池化層的處理,圖像會被壓縮。在保留一定數(shù)量的通道的情況下,池化操作可以使輸入圖片的大小減半。因此,經(jīng)過池化層后,圖像的尺寸變?yōu)?12×112×64。隨后的卷積和池化處理會持續(xù)進行。分別使用192、384、1024和1024個卷積核對特征圖進行卷積操作,同時進行池化操作以減小尺寸。每個密集塊內(nèi)部包含多個卷積層的堆疊,每個卷積層的輸出特征圖都會與之前所有層的特征圖進行拼接,從而進行信息的融合和傳遞。這樣的卷積和池化處理會逐漸提取出更高級的特征,在此過程中,圖像的大小也會逐步減小。最終,通過對圖像進行卷積、池等運算,獲得了7×7×512的特征圖像。這張7x7x512的特征圖將被傳送到全連接層,用于最后的分類或者其它工作。全連接層會將高維特征映射到最終的預(yù)測結(jié)果。3.3.2對DenseNet169模型做出遷移學(xué)習(xí)DenseNet169雖然在圖像分類中取得了較好的效果,但其學(xué)習(xí)時間較長,且在極小樣本上無法獲得精確的結(jié)果,而通過分享參數(shù)的方法可以較好地解決這一問題。在構(gòu)建DenseNet169的前提上,采用基于ImageNet的預(yù)訓(xùn)練模型,并利用訓(xùn)練集的樣本對其進行最后的訓(xùn)練,從而達到對肺炎CT圖像進行分類的目的。由于模型是預(yù)先訓(xùn)練完成的,因此不需要對參數(shù)進行過多的調(diào)整與修改,即可促使模型快速達到收斂狀態(tài)。遷移學(xué)習(xí)的流程如圖3-10所示:圖3-10遷移學(xué)習(xí)流程圖本文使用的遷移學(xué)習(xí)模型分為兩部分:預(yù)訓(xùn)練模型和遷移模型。所采用的遷移學(xué)習(xí)方法是微調(diào)(Fine-tuning),即將預(yù)先訓(xùn)練好的模型中學(xué)到的圖像特征知識應(yīng)用到肺炎CT圖像分類任務(wù)中。參數(shù)遷移的代碼如下文所示:##是否凍結(jié)權(quán)重

ifargs.freeze_layers:

forname,paraind_parameters():

#除最后的全連接層外,其他權(quán)重全部凍結(jié)

if"classifier"notinname:

para.requires_grad_(False)pg=[pforpinmodel.parameters()ifp.requires_grad]optimizer=optim.SGD(pg,lr=args.lr,momentum=0.9,weight_decay=1E-4,nesterov=True)3.3.3損失函數(shù)在訓(xùn)練過程中,需要對每個樣本的預(yù)測值與真實值之間的差異進行統(tǒng)計分析,這種差異被稱為損失。當(dāng)損失值最小化時,模型的泛化能力會更強。損失函數(shù)是衡量模型訓(xùn)練效果的一個重要指標(biāo),它反映了模型在訓(xùn)練階段的實際情況。針對這一試驗的特性,本項目才用交叉熵?fù)p函數(shù)(Cross-entropyLoss)來測量模型的預(yù)測精度,其數(shù)學(xué)表達式如公式(3.4)所示。L=-(y_true*log(y_pred)+(1-y_true)*log(1-y_pred))(3.4)其中y_true為真實標(biāo)簽,y_pred為模型輸出標(biāo)簽,log為自然對數(shù)函數(shù)。3.3.4訓(xùn)練及測試過程本實驗以DenseNet169模型為基礎(chǔ),將DenseNet169預(yù)訓(xùn)練模型的參數(shù)進行遷移,引入到本地已構(gòu)建好的DenseNet169模型中。此外,我們還額外增加了ResNet50的網(wǎng)絡(luò)模型,并用局部試驗數(shù)據(jù)對兩個模型進行對比。設(shè)置batch_size=16,表示每一次進行訓(xùn)練的數(shù)據(jù)的數(shù)量是16張圖片;Epochs=100,即總共訓(xùn)練100批次。為了深入評估模型的準(zhǔn)確性,我們將使用包含585張患有肺炎CT圖和正常肺部CT圖的測試數(shù)據(jù)集,分別輸入DenseNet169和ResNet50模型進行測試。在測試過程中,我們會使用經(jīng)過訓(xùn)練的權(quán)重對測試集進行推斷,并記錄測試結(jié)果。3.4實驗結(jié)果對比與分析3.4.1評價指標(biāo)在檢測實驗中運用了識別率(Accuracy,ACC)、精確度(Precision,PR)、召回率(Recall,RE)、和F1分?jǐn)?shù)(F1score)等四個評價指標(biāo),其分別定義為:ACC=TP+TNTP+TN+FP+FNPR=TPTP+FPRE=TPTP+FNF1Score=2?PR?REPR+RE本研究采用了四項關(guān)鍵性能指標(biāo)來全面評估分類模型的預(yù)測準(zhǔn)確性,包括真正類(TruePositives,TP)、真負(fù)類(TrueNegatives,TN)、假正類(FalsePositives,FP)以及假負(fù)類(FalseNegatives,FN)。其中,TP和TN分別表示的是正確的正類樣本和負(fù)類樣本,F(xiàn)P與FN表示的是錯誤的正類樣本和負(fù)類樣本。通過公式(3.5)、(3.6)、(3.7)和(3.8)可知,ACC表示的識別率是正確預(yù)測與總預(yù)測的比例,RE表示的召回率是正確預(yù)測與所有實際正確樣本的比例,PR表示的精確度是正確預(yù)測與所有預(yù)測為正類的比例。F1Score則是綜合RE和PR兩方面,其取值范圍介于0到1之間,分?jǐn)?shù)越接近1,表明模型的預(yù)測準(zhǔn)確性越高,即模型在識別正類和負(fù)類樣本時的準(zhǔn)確性和可靠性更強。這一指標(biāo)為本研究提供了一個全面的視角,以評估模型在實際應(yīng)用中的綜合性能。#Calculateaccuracy

#Calculateaccuracy

accuracy=correct/total

#Calculateprecision

iftrue_positive+false_positive==0:

precision=0

else:

precision=true_positive/(true_positive+false_positive)

#Calculaterecall

iftrue_positive+false_negative==0:

recall=0

else:

recall=true_positive/(true_positive+false_negative)#Calculatef1_scoreifprecision+recall==0:

f1_score=0

else:

f1_score=2*(precision*recall)/(precision+recall)3.4.2實驗結(jié)果分析訓(xùn)練過程如圖3-11所示:加一個訓(xùn)練圖再將測試過程中保存的結(jié)果制成如下表格:表2各模型評估結(jié)果方法識別率(%)F1分?jǐn)?shù)(%)召回率(%)精確度(%)ResNet-5095.04%91.13%94.30%88.16%DenseNet-16996.23%93.33%97.46%89.53%如表2所示,本文所使用的方法在評估指標(biāo)中,對比ResNet50方法有顯著提升。DenseNet169模型在經(jīng)過100次的訓(xùn)練后,其平均識別率達到了96.23%,而ResNet50模型的平均識別率達到了95.04%。在召回率方面DenseNet169比ResNet50高了三個百分點,使得在面對不平衡數(shù)據(jù)集(正例和負(fù)例比例嚴(yán)重不均衡)時,該方法可以確保模型在不同類別的樣本上都有較好的表現(xiàn)。DenseNet-169引入密集鏈接機制,在特征的傳遞上比ResNet-50的殘差連接更加密集,每個層都直接與后續(xù)所有層連接,有利于信息和梯度的更好傳遞,促進特征的重用和共享,這給識別結(jié)果帶來了一定程度上的提升,使DenseNet-169模型擁有高于兩個對照模型的識別效率。結(jié)論與展望4.1結(jié)論在近期的研究中,在肺炎CT圖像識別領(lǐng)域,深度學(xué)習(xí)技術(shù)取得了顯著進展,其中卷積神經(jīng)網(wǎng)絡(luò)發(fā)揮著關(guān)鍵作用。在新冠肺炎階段,就有研究者將卷積神經(jīng)網(wǎng)絡(luò)模型用于識別新冠肺炎和非新冠肺炎,并且有著不錯的準(zhǔn)確率預(yù)測。因此,人工智能輔助的醫(yī)療診斷將是未來發(fā)展方向之一,本研究對比了三種深度學(xué)習(xí)模型在肺炎分類任務(wù)上的性能,結(jié)果顯示DenseNet-169模型在獨立測試集上表現(xiàn)優(yōu)越。該模型利用密集連接機制,有效提升了特征傳遞的效率,在樣本量有限的情況下,也能顯著提高分類準(zhǔn)確率并展現(xiàn)魯棒性。DenseNet-169的成功應(yīng)用為小樣本學(xué)習(xí)提供了新的視角,并為新冠肺炎等疾病的早期診斷提供了技術(shù)支持。4.2展望醫(yī)學(xué)圖像圖像的分類是一個研究價值極高而又十分復(fù)雜的問題,準(zhǔn)確的診斷對疾病的早期診斷非常重要,盡管現(xiàn)有的肺炎分類研究取得了一定的進展,但是其分類準(zhǔn)確率仍未達到理想水平,亟待改進。在未來的工作中,我們將對這里描述的方法的缺陷進行改正與探索:增加數(shù)據(jù)集的取樣數(shù)目。隨著數(shù)據(jù)規(guī)模的擴大,模型可以更好地學(xué)習(xí)數(shù)據(jù)的特征,并且泛化能力也會得到提升。未來的工作可以通過深入研究相關(guān)文獻,采取措施拓展數(shù)據(jù)集的規(guī)模。(2)修改程序相關(guān)代碼。通過論文的實驗結(jié)果,該模型具有較好的分類性能,但其分類精度還不夠高,并且沒有對移植后的參數(shù)進行適當(dāng)調(diào)整。后續(xù)的實驗還需要參考數(shù)據(jù),修改模型代碼,并對參數(shù)做一些微調(diào)。參考文獻[1]高櫻萍,宋丹,陳玉婷.基于卷積神經(jīng)網(wǎng)絡(luò)和遷移學(xué)習(xí)的服裝圖像分類[J].紡織科技進展,2021(11):48-52.[2]MURDOCHDR,HOWIESRC.Theglobalburdenoflowerrespiratoryinfections:makingprogress,butweneedtodobetter[J].LancetInfectDis,2018,18(11):1162-1163.DOI:10.1016/S1473-3099(18)30407-9.[3]ROTHGA,ABATED,ABATEKH,etal.Global,regional,andnationalage-sex-specificmortalityfor282causesofdeathin195countriesandterritories,1980-2017:asystematicanalysisfortheGlobalBurdenofDiseaseStudy2017[J].Lancet,2018,392(10159):1736-1788.DOI:10.1016/S0140-6736(18)32203-7.[4]FangY,ZhangH,XieJ,etal.SensitivityofchestCTforCOVID-19:comparisontoRT-PCR[EB].https://pubs.rsna.org/doi/full/10.1148/radiol.2020200432.2020-02-19.[5]馮雨,易本順,吳晨玥,等.基于三維卷積神經(jīng)網(wǎng)絡(luò)的肺結(jié)節(jié)識別研究[J].光學(xué)學(xué)報.2019,39(6):256-261.[6]馬圓,王風(fēng),韓勇,等.基于深度信念網(wǎng)絡(luò)檢測PET/CT圖像肺結(jié)節(jié)良惡性[J].中國醫(yī)學(xué)影像技術(shù).2020,36(1):77-80.[7]ThakurS,KumarA.XGrayandCTscanGbasedautomateddetectionandclassificationofCOVIG19usingconvolutionalneuralnetworks(CNN)[J].BiomedSignalPocessCrontrol,202169(8):102029.[8]R.Thanki.Adeepneuralnetworkandmachinelearningapproachforretinalfundusimageclassification[J].HealthcareAnalytics,2023,3.[9]K.Warin,W.Limprasert,S.Suebnukarn,etal.AI-basedanalysisoforallesionsusingnoveldeepconvolutionalneuralnetworksforearlydetectionoforalcancer[J].PloSone,2022,17(8).[10]L.Mei,H.Shen,Y.Yu,etal.High-throughputandhigh-accuracydiagnosisofmultiplemyelomawithmulti-objectdetection[J].Biomedicalopticsexpress,2022,13(12). [11]盧宏濤,張秦川.深度卷積神經(jīng)網(wǎng)絡(luò)在計算機視覺中的應(yīng)用研究綜述[J].數(shù)據(jù)采集與處理,2016,(01):1-17.[12]He

K,

Zhang

X,

Ren

S,

Sun

J.

Deep

residual

learning

for

image

recognition[A].

In:

Proceedings

of

the

IEEE

Conference

on

Computer

Vision

and

Pattern

Recognition

(CVPR)[C].

2016:

770-778.[13]Huang

G,

Liu

Z,

Van

Der

Maaten

L,

Weinberger

K

Q.

Densely

Connected

Convolutional

Networks[J].

IEEE

Computer

Society,

2016. [14]紀(jì)守領(lǐng),杜天宇,鄧水光等.深度學(xué)習(xí)模型魯棒性研究綜述[J].計算機學(xué)報,2022,45(01):190-206附錄DenseNet169模型搭建代碼:importrefromtypingimportAny,List,TuplefromcollectionsimportOrderedDictimporttorchimporttorch.nnasnnimporttorch.nn.functionalasFimporttorch.utils.checkpointascpfromtorchimportTensorclass_DenseLayer(nn.Module):def__init__(self,input_c:int,growth_rate:int,bn_size:int,drop_rate:float,memory_efficient:bool=False):super(_DenseLayer,self).__init__()self.add_module("norm1",nn.BatchNorm2d(input_c))self.add_module("relu1",nn.ReLU(inplace=True))self.add_module("conv1",nn.Conv2d(in_channels=input_c,out_channels=bn_size*growth_rate,kernel_size=1,stride=1,bias=False))self.add_module("norm2",nn.BatchNorm2d(bn_size*growth_rate))self.add_module("relu2",nn.ReLU(inplace=True))self.add_module("conv2",nn.Conv2d(bn_size*growth_rate,growth_rate,kernel_size=3,stride=1,padding=1,bias=False))self.drop_rate=drop_rateself.memory_efficient=memory_efficientdefbn_function(self,inputs:List[Tensor])->Tensor:concat_features=torch.cat(inputs,1)bottleneck_output=self.conv1(self.relu1(self.norm1(concat_features)))returnbottleneck_output@staticmethoddefany_requires_grad(inputs:List[Tensor])->bool:fortensorininputs:iftensor.requires_grad:returnTruereturnFalse@torch.jit.unuseddefcall_checkpoint_bottleneck(self,inputs:List[Tensor])->Tensor:defclosure(*inp):returnself.bn_function(inp)returncp.checkpoint(closure,*inputs)defforward(self,inputs:Tensor)->Tensor:ifisinstance(inputs,Tensor):prev_features=[inputs]else:prev_features=inputsifself.memory_efficientandself.any_requires_grad(prev_features):iftorch.jit.is_scripting():raiseException("memoryefficientnotsupportedinJIT")bottleneck_output=self.call_checkpoint_bottleneck(prev_features)else:bottleneck_output=self.bn_function(prev_features)new_features=self.conv2(self.relu2(self.norm2(bottleneck_output)))ifself.drop_rate>0:new_features=F.dropout(new_features,p=self.drop_rate,training=self.training)returnnew_featuresclass_DenseBlock(nn.ModuleDict):_version=2def__init__(self,num_layers:int,input_c:int,bn_size:int,growth_rate:int,drop_rate:float,memory_efficient:bool=False):super(_DenseBlock,self).__init__()foriinrange(num_layers):layer=_DenseLayer(input_c+i*growth_rate,growth_rate=growth_rate,bn_size=bn_size,drop_rate=drop_rate,memory_efficient=memory_efficient)self.add_module("denselayer%d"%(i+1),layer)defforward(self,init_features:Tensor)->Tensor:features=[init_features]forname,layerinself.items():new_features=layer(features)features.append(new_features)returntorch.cat(features,1)class_Transition(nn.Sequential):def__init__(self,input_c:int,output_c:int):super(_Transition,self).__init__()self.add_module("norm",nn.BatchNorm2d(input_c))self.add_module("relu",nn.ReLU(inplace=True))self.add_module("conv",nn.Conv2d(input_c,output_c,kernel_size=1,stride=1,bias=False))self.add_module("pool",nn.AvgPool2d(kernel_size=2,stride=2))classDenseNet(nn.Module):def__init__(self,growth_rate:int=32,block_config:Tuple[int,int,int,int]=(6,12,24,16),num_init_features:int=64,bn_size:int=4,drop_rate:float=0,num_classes:int=1000,memory_efficient:bool=False):super(DenseNet,self).__init__()#firstconv+bn+relu+poolself.features=nn.Sequential(OrderedDict([("conv0",nn.Conv2d(3,num_init_features,kernel_size=7,stride=2,padding=3,bias=False)),("norm0",nn.BatchNorm2d(num_init_features)),("relu0",nn.ReLU(inplace=True)),("pool0",nn.MaxPool2d(kernel_size=3,stride=2,padding=1)),]))#eachdenseblocknum_features=num_init_featuresfori,num_layersinenumerate(block_config):block=_DenseBlock(num_layers=num_layers,input_c=num_features,bn_size=bn_size,growth_rate=growth_rate,drop_rate=drop_rate,memory_efficient=memory_efficient)self.features.add_module("denseblock%d"%(i+1),block)num_features=num_features+num_layers*growth_rateifi!=len(block_config)-1:trans=_Transition(input_c=num_features,output_c=num_features//2)self.features.add_module("transition%d"%(i+1),trans)num_features=num_features//2#finnalbatchnormself.features.add_module("norm5",nn.BatchNorm2d(num_features))#fclayerself.classifier=nn.Linear(num_features,num_classes)#initweightsforminself.modules():ifisinstance(m,nn.Conv2d):nn.init.kaiming_normal_(m.weight)elifisinstance(m,nn.BatchNorm2d):nn.init.constant_(m.weight,1)nn.init.constant_(m.bias,0)elifisinstance(m,nn.Linear):nn.init.constant_(m.bias,0)defforward(self,x:Tensor)->Tensor:features=self.features(x)out=F.relu(features,inplace=True)out=F.adaptive_avg_pool2d(out,(1,1))out=torch.flatten(out,1)out=self.classifier(out)returnoutdefdensenet169(**kwargs:Any)->DenseNet:returnDenseNet(growth_rate=32,block_config=(6,12,32,32),num_init_features=64,**kwargs)defload_state_dict(model:nn.Module,weights_path:str)->None:#'.'sarenolongerallowedinmodulenames,butprevious_DenseLayer#haskeys'norm.1','relu.1','conv.1','norm.2','relu.2','conv.2'.#Theyarealsointhecheckpointsinmodel_urls.Thispatternisused#tofindsuchkeys.pattern=pile(state_dict=torch.load(weights_path)num_classes=model.classifier.out_featuresload_fc=num_classes==1000forkeyinlist(state_dict.keys()):ifload_fcisFalse:if"classifier"inkey:delstate_dict[key]res=pattern.match(key)ifres:new_key=res.group(1)+res.group(2)state_dict[new_key]=state_dict[key]delstate_dict[key]model.load_state_dict(state_dict,strict=load_fc)print("successfullyloadpretrain-weights.")訓(xùn)練代碼:importosimportmathimportargparseimporttorchimporttorch.optimasoptimfromtorch.utils.tensorboardimportSummaryWriterfromtorchvisionimporttransformsimporttorch.optim.lr_scheduleraslr_schedulerfrommodelimportdensenet169,load_state_dictfrommy_datasetimportMyDataSetfromutilsimportread_split_data,train_one_epoch,evaluatedefmain(args):device=torch.device(args.deviceiftorch.cuda.is_available()else"cpu")print(args)print('StartTensorboardwith"tensorboard--logdir=runs",v

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論