李昀松,段喜萍
摘要:目前,猴痘病在全球多個國家快速傳播,為了能夠使有相關(guān)癥狀的感染者有效地識別出是否為猴痘病,提出了一種改進的基于遷移學習殘差網(wǎng)絡(luò)的圖像自動識別方法。該方法使用了ResNet50網(wǎng)絡(luò)并使用該網(wǎng)絡(luò)預訓練權(quán)重進行遷移學習,在網(wǎng)絡(luò)的全連接層后加入dropout對神經(jīng)元進行隨機失活。在經(jīng)過數(shù)據(jù)增強的猴痘病數(shù)據(jù)集上進行了網(wǎng)絡(luò)的訓練,最終達到了97.9%的識別準確率,相比于VGG16和AlexNet網(wǎng)絡(luò)具有更高的識別準確率。
關(guān)鍵詞:圖像識別;分類識別;深度學習;殘差網(wǎng)絡(luò);遷移學習
中圖分類號:TP391? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)33-0019-02
1 概述
2022年5月,猴痘疫情在歐洲以及北美等地迅速蔓延,其中美國、西班牙、巴西和法國等國家猴痘病例面臨著巨大的挑戰(zhàn)。猴痘病毒具有較強的感染性,其感染者的主要癥狀會出現(xiàn)全身的水皰與膿皰,該癥狀與天花患者的癥狀極其相似。因此,通過感染者的水皰與膿皰識別判斷該感染者是否感染了猴痘病毒成了一項艱巨的任務(wù)。
目前,基于深度學習的方法在計算機視覺領(lǐng)域擁有廣泛的應(yīng)用[1],并在醫(yī)療診斷[2]、交通[3]和農(nóng)業(yè)[4]等各個領(lǐng)域取得了良好的效果,LeCun等首次提出了卷積神經(jīng)網(wǎng)絡(luò)模型LeNet-5,該模型在圖像識別領(lǐng)域的任務(wù)中超過了人類的水平。Krizhevsky等人[5]提出了AlexNet網(wǎng)絡(luò),網(wǎng)絡(luò)中使用了ReLU激活函數(shù)替換tanh激活函數(shù),并在網(wǎng)絡(luò)的全連接層增加了dropout方法隨機地將一部分神經(jīng)元置為0,將該網(wǎng)絡(luò)應(yīng)用到了LSVRC-12競賽中取得了當時最好的分類效果。Szegedy等人[6]使用了1[×]1、3[×]3和5[×]5卷積操作作為主要結(jié)構(gòu),與AlexNet相比參數(shù)量更少但準確率更高。Simonyan等人[7]討論了網(wǎng)絡(luò)的深度對性能的關(guān)系,通過增加3[×]3卷積進行實驗,當網(wǎng)絡(luò)層數(shù)達到16~19層時達到最佳效果,并且得到了使用多個3[×]3卷積替換7[×]7卷積可以達到相似效果的結(jié)論,并且能夠減小一定的參數(shù)量與計算量。ResNet網(wǎng)絡(luò)[8]使用了跨層連接的結(jié)構(gòu)并使用了批規(guī)范化[9]的方法抑制神經(jīng)網(wǎng)絡(luò)層數(shù)加深后引起模型過擬合的退化問題,ResNet能夠訓練更深的網(wǎng)絡(luò)在LSBRC-15的圖像分類比賽中獲得了第一名的成績。
本文使用了在ImageNet數(shù)據(jù)集上進行預訓練的ResNet50模型權(quán)重,并在網(wǎng)絡(luò)的全連接層加入dropout方法對神經(jīng)元進行隨機失活,在猴痘病數(shù)據(jù)集上進行模型訓練,得到的模型能夠有效地通過患者癥狀識別出是否感染猴痘病毒。
2 算法描述
2.1殘差網(wǎng)絡(luò)
在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)研究中,在網(wǎng)絡(luò)上串連更多的層數(shù)時在圖像任務(wù)中的表現(xiàn)反而下降,這并不是網(wǎng)絡(luò)出現(xiàn)過擬合而導致錯誤率上升的問題,而是在網(wǎng)絡(luò)訓練的過程中,正向與反向的信息傳遞不順暢,從而導致模型沒有得到充分訓練的一種網(wǎng)絡(luò)退化問題。ResNet提出了一種殘差模塊,如圖1所示,weight_layer為網(wǎng)絡(luò)層,relu為激活函數(shù),通過殘差結(jié)構(gòu)加入的恒等映射,即使原始卷積結(jié)構(gòu)信息沒有傳遞也能夠通過殘差保留原始的信息,并且ResNet使用了批歸一化方法降低梯度消失的問題,降低了網(wǎng)絡(luò)在訓練過程中對于權(quán)重初始化的依賴。
2.2 ResNet50
ResNet50網(wǎng)絡(luò)由49個卷積層和一個全連接層構(gòu)成,結(jié)構(gòu)如圖2所示,圖中Conv為卷積層,Max_pooling為最大池化層,ResBlock為殘差模塊,AveragePool為全局平均池化層,F(xiàn)C為全連接層。輸入圖像數(shù)據(jù)的分辨率為224[×]224并由RGB三個通道組成,首先將224[×]224[×]3的圖像數(shù)據(jù)輸入到卷積核大小為7[×]7步長為2的卷積層中,得到112[×]112[×]64的張量后進行3[×]3的最大池化操作,然后將其輸入4個階段的殘差網(wǎng)絡(luò)基礎(chǔ)模塊當中,隨著每個階段特征信息的傳遞,可以獲得更深層次的特征,得到的深層特征張量進行全局平均池化操作,最后將其輸入到全連接層中,本實驗為是否為猴痘病的二分類任務(wù),最終節(jié)點數(shù)為2,并加入dropout層防止模型過擬合,隨機失活比率設(shè)置為0.2,失活了的神經(jīng)元節(jié)點不參與模型的參數(shù)訓練,能夠有效的提升模型的泛化能力。
2.3遷移學習
遷移學習的基本思想是利用已經(jīng)解決問題的策略用以解決待解決的問題[10],在基于深度學習的任務(wù)中,需要大量的數(shù)據(jù)對神經(jīng)網(wǎng)絡(luò)的模型進行訓練,得到合適的模型參數(shù)權(quán)重,并且需要大量的模型訓練時間和更高性能的硬件設(shè)備,因此將源領(lǐng)域所學到的知識遷移到其他領(lǐng)域是必要的。
本文使用了在ImageNet上訓練的ResNet50網(wǎng)絡(luò)模型,ImageNet是供計算機視覺識別研究的大型可視化圖像數(shù)據(jù)集,其中包含超過140萬手動標注的圖像數(shù)據(jù),并包含1000個圖像類別,則經(jīng)過預訓練的ResNet50網(wǎng)絡(luò)的全連接層輸出1000個節(jié)點,在本實驗中為了適應(yīng)猴痘病數(shù)據(jù)集類別數(shù),將節(jié)點數(shù)量由1000改為2,然后將ResNet50的預訓練權(quán)重在本實驗的猴痘病數(shù)據(jù)集進行微調(diào)訓練,該方法既能提高模型的泛化能力和魯棒性,也能夠減少訓練的時間節(jié)約算力的開銷。
2.4 網(wǎng)絡(luò)優(yōu)化
2.4.1 損失函數(shù)
損失函數(shù)是將隨機事件或其有關(guān)隨機變量的取值映射為非負實數(shù),表示該隨機事件的風險或損失的函數(shù),在實際任務(wù)中則通過最小化損失函數(shù)求解和評估模型。本文使用交叉熵損失表達預測值和真實值的不一致程度,交叉熵損失常用于圖像識別任務(wù)中作為損失函數(shù),能夠有效地衡量同一個隨機變量中的兩個不同概率分布的差異程度。
2.4.2 優(yōu)化算法
深度學習是以最小化損失函數(shù)為目標,其本質(zhì)上是一種優(yōu)化問題,目前應(yīng)用于深度學習的優(yōu)化算法均為由梯度下降算法發(fā)展而來,其主要思想為利用鏈式求導法則計算損失函數(shù)值相對于神經(jīng)網(wǎng)絡(luò)中的每一個權(quán)重參數(shù)的梯度,通過更新權(quán)重參數(shù)達到降低損失函數(shù)值的效果。本文使用SGD隨機梯度下降算法作為模型的優(yōu)化器,該方法具有更新速度快的優(yōu)點,能夠?qū)γ恳粋€樣本都進行一次梯度運算并更新模型的權(quán)重。
3 實驗與結(jié)果分析
3.1 數(shù)據(jù)集與實驗環(huán)境
為了區(qū)分猴痘病例與類似的非猴痘病例創(chuàng)建了猴痘病毒圖像數(shù)據(jù)集,該數(shù)據(jù)集分為猴痘病類和包含與猴痘病毒癥狀相似的水痘和麻疹的其他類別,以進行二分類,其中猴痘病圖像類別包含72張圖片,其他類別包含110張圖片,圖像的像素均為224[×]224,其中的每張圖片應(yīng)用了旋轉(zhuǎn)、平移、反射、剪切、色相、飽和度、對比度、亮度抖動、噪聲和縮放等多種圖像數(shù)據(jù)增強方法擴充數(shù)據(jù)集,經(jīng)過擴充后的數(shù)據(jù)集猴痘病類別擁有980張圖片,其他類別擁有1162張圖片。本實驗將全部的圖像數(shù)據(jù)按照8:2的比例進行劃分為訓練集和測試集,圖3給出了猴痘病和其他類別的各3張原始圖像。
實驗操作系統(tǒng)為Linux操作系統(tǒng),在一塊V100的10核32GB內(nèi)存GPU的云服務(wù)器上運行程序,編程語言為Python語言,深度學習框架為PyTorch。使用SGD優(yōu)化器進行訓練,訓練動量設(shè)為0.9,Batchsize設(shè)為80,學習率設(shè)為6e-3,進行了50個epoch的訓練。
3.2 實驗結(jié)果分析
本文使用ResNet50對猴痘數(shù)據(jù)集進行了評估,并與AlexNet和VGG16網(wǎng)絡(luò)進行了對比,三種網(wǎng)絡(luò)模型僅使用遷移學習的方法進行訓練,網(wǎng)絡(luò)對比結(jié)果如表1所示,由表1可以看出,ResNet50網(wǎng)絡(luò)經(jīng)過訓練后精確度為97.9%,VGG16網(wǎng)絡(luò)精確度為97.7%,AlexNet網(wǎng)絡(luò)精確度為96.3%,ResNet-50網(wǎng)絡(luò)在猴痘病識別任務(wù)中的效果最佳,并且與其他網(wǎng)絡(luò)相比,擁有最少的參數(shù)量和合適的計算量。
4 結(jié)論
針對全球多個國家快速傳播的猴痘病疫情,希望能夠通過感染者的癥狀分辨出是否為猴痘病感染者,本文利用深度學習卷積神經(jīng)網(wǎng)絡(luò)的識別方法,使用了基于遷移學習的ResNet50網(wǎng)絡(luò),并且對網(wǎng)絡(luò)的全連接層添加了dropout,對其神經(jīng)元以一定的概率進行失活,本文所使用的網(wǎng)絡(luò)模型經(jīng)過猴痘數(shù)據(jù)集的訓練,最終能夠達到97.9%的猴痘病識別準確率,高于VGG16與AlexNet模型97.7%和96.3%的精確度,能夠快速有效地對猴痘病及具有相似癥狀的其他病毒感染者進行識別。由于數(shù)據(jù)集的局限性,本文算法還需要收集更多猴痘病感染者以及更多種類的相似癥狀病毒感染者的數(shù)據(jù)進行進一步驗證。
參考文獻:
[1] 張榮,李偉平,莫同.深度學習研究綜述[J].信息與控制,2018,47(4):385-397,410.
[2] 唐江平,周曉飛,賀鑫,等.基于深度學習的新型冠狀病毒肺炎診斷研究綜述[J].計算機工程,2021,47(5):1-15.
[3] 楊柳.深度學習在交通運輸中應(yīng)用綜述[J].信息技術(shù)與信息化,2022(2):192-195.
[4] 邊柯橙,楊海軍,路永華.深度學習在農(nóng)業(yè)病蟲害檢測識別中的應(yīng)用綜述[J].軟件導刊,2021(3):26-33.
[5] Krizhevsky A,Sutskever I,Hinton G E.ImageNet classification with deep convolutional neural networks[J].Communications of the ACM,2017,60(6):84-90.
[6] Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition, 2015: 1-9.
[7] Simonyan K,Zisserman A.Very deep convolutional networks for large-scale image recognition[EB/OL].2014:arXiv:1409.1556.https://arxiv.org/abs/1409.1556
[8] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition,2016:770-778.
[9] Ioffe S,Szegedy C.Batch normalization:accelerating deep network training by reducing internal covariate shift[C]//International conference on machine learning. PMLR, 2015: 448-456.
[10] 劉鑫鵬,欒悉道,謝毓湘,等.遷移學習研究和算法綜述[J].長沙大學學報,2018(5):28-31,36.
【通聯(lián)編輯:唐一東】