吳媛媛,梁禮明,彭仁杰,尹 江
(江西理工大學(xué) 電氣工程與自動化學(xué)院,江西 贛州 341000)
隨著國家環(huán)保工作的推進(jìn),人們?nèi)粘R姷降幕ɑ芊N類越發(fā)繁多,諸多研究者在花卉識別方面的研究取得了一些進(jìn)展。在傳統(tǒng)學(xué)習(xí)方面,TIAY等[1]使用Hu七矩算法獲取圖像邊緣特征以及直方圖獲取圖像顏色特征,之后使用KNN算法進(jìn)行分類,精度達(dá)到80%;LODH等[2]先將顏色和GIST特征編碼成特征向量,然后使用支持向量機(jī)(SVM)進(jìn)行分類,在12種花卉數(shù)據(jù)集中,識別率達(dá)到85.93%;王威等[3]首先采用圖像顯著性分割前景背景,然后提取花卉的顏色特征、形狀特征和紋理特征,最后使用SVM分類器進(jìn)行花卉種類識別,識別率達(dá)到93.7%?;ɑ芊诸愔袀鹘y(tǒng)機(jī)器學(xué)習(xí)方法存在兩大缺點(diǎn):一是花卉特征依靠手工提取,受人為干擾影響大;二是傳統(tǒng)機(jī)器學(xué)習(xí)方法適用于小型數(shù)據(jù)集,在大數(shù)據(jù)集上效果不明顯。
隨著計算機(jī)技術(shù)的發(fā)展,越來越多的深度學(xué)習(xí)方法嶄露頭角。QIN等[4]提出一種基于注意力機(jī)制和線性判別損失函數(shù)的卷積神經(jīng)網(wǎng)絡(luò)模型,在Oxford-102 flower數(shù)據(jù)集上取得87.6%的準(zhǔn)確率,由于網(wǎng)絡(luò)只有16層,對花卉特征提取不足。鄭玉龍等[5]構(gòu)建由3個殘差塊組成的20層深度學(xué)習(xí)模型ResNet20網(wǎng)絡(luò),對26種觀賞花朵進(jìn)行識別,達(dá)到96.29%的識別率,但該模型會因花朵圖片背景復(fù)雜或者花朵所占面積小產(chǎn)生識別出錯的情況。吳麗娜等[6]提出一種改進(jìn)型LeNet-5卷積神經(jīng)網(wǎng)絡(luò),采用隨機(jī)梯度下降法和Dropout防止過度擬合,對Oxford-17 flower數(shù)據(jù)集進(jìn)行試驗(yàn),其識別率達(dá)到96.5%,但該方法對圖片進(jìn)行灰度處理,忽略顏色對識別準(zhǔn)確率的影響。GIRADDI等[7]使用改進(jìn)的VGG16網(wǎng)絡(luò),對5類常見花卉進(jìn)行識別,識別率高達(dá)97.67%,但由于使用圖片大小均為320×240像素,無法確定背景是否會對網(wǎng)絡(luò)產(chǎn)生影響。以上方法在淺層網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行了一定程度的改進(jìn),但是淺層神經(jīng)網(wǎng)絡(luò)獲得的特征少,泛化能力不夠,大型深層網(wǎng)絡(luò)又存在網(wǎng)絡(luò)梯度爆炸的缺點(diǎn)。因此,提出一種基于ResNeXt50網(wǎng)絡(luò)和遷移學(xué)習(xí)的花卉種類識別算法,為使用小規(guī)模數(shù)據(jù)集解決花卉識別問題提供參考。
本研究使用的數(shù)據(jù)集來自中國植物主題數(shù)據(jù)庫,總計3 670張鮮花圖片,共計5類,分別為雛菊、蒲公英、玫瑰、向日葵和郁金香,如表1所示。隨機(jī)分割每類花卉中的85%作為訓(xùn)練集,其余15%作為測試集,即訓(xùn)練集有3 120張圖片,測試集有550張圖片。
表1 花卉數(shù)據(jù)集
原始數(shù)據(jù)集圖片數(shù)量較少,為了避免訓(xùn)練過擬合,使用Mixup[8]數(shù)據(jù)增強(qiáng)方法對原數(shù)據(jù)集進(jìn)行擴(kuò)充。Mixup的原理公式為:
其中,α是超參數(shù),β為貝塔分布,λ是由參數(shù)α的貝塔分布計算得來的混合系數(shù)。(xi,yi)和(xj,yj)是訓(xùn)練數(shù)據(jù)集中任意抽取的2組不同樣本,(x?,y?)為使用Mixup方法后創(chuàng)建的虛擬樣本。
圖片經(jīng)Mixup數(shù)據(jù)增強(qiáng)方法處理后的結(jié)果如圖1所示。
1.2.1 程序運(yùn)行環(huán)境 試驗(yàn)環(huán)境為Win10操作系統(tǒng),處 理 器 為Inter(R)Core(TM)i5-10300H CPU@2.50GHz,Pytorch1.9.0,運(yùn)行內(nèi)存為8.00 GB,顯卡為NVIDIA GeForce GTX1660 Ti。試驗(yàn)所有代碼均在Pycharm平臺上運(yùn)行,使用Pytorch1.9.0開源框架、Python3.6語言。優(yōu)化算法為隨機(jī)梯度下降算法(SGD),超 參 數(shù) 設(shè) 置 為:lr=0.001,momentum=0.9,weight_decay=0.000 01,batchsize=8,epoch=200。損 失函數(shù)為交叉熵?fù)p失函數(shù)。圖片大小統(tǒng)一設(shè)置為224×224像素。
1.2.2 參數(shù)設(shè)置 使用測試集的準(zhǔn)確率(Acc)評價網(wǎng)絡(luò)模型的性能,即
其中,ncorrect代表分類正確的紀(jì)錄個數(shù),ntotal代表全部測試數(shù)據(jù)的個數(shù)。
1.2.3 ResNeXt 近年來,深度卷積神經(jīng)網(wǎng)絡(luò)在圖像分類、目標(biāo)識別以及語義分割使用的效果非常顯著。在圖像分類方面,深層網(wǎng)絡(luò)得到蓬勃發(fā)展,但是隨著網(wǎng)絡(luò)層數(shù)的增加,模型出現(xiàn)梯度爆炸和網(wǎng)絡(luò)退化等現(xiàn)象。為此,ResNet[9]網(wǎng)絡(luò)應(yīng)運(yùn)而生。ResNet網(wǎng)絡(luò)由一系列殘差塊構(gòu)成,殘差塊分為直接映射和殘差兩部分。直接映射由2個或者3個卷積層直接堆疊而成,如圖2所示。ResNet網(wǎng)絡(luò)通過堆疊相同拓?fù)浣Y(jié)構(gòu)的模塊,減少超參數(shù)的過度使用及其造成的對不同數(shù)據(jù)集適應(yīng)能力低的影響,加上Inception[12]網(wǎng)絡(luò)的“分裂-變換-融合”結(jié)構(gòu)能在計算復(fù)雜度更低的情況下,達(dá)到接近大型密集網(wǎng)絡(luò)的表示能力?;诖?,研究者又提出了一種ResNet和Inception的結(jié)合體網(wǎng)絡(luò)——ResNeXt網(wǎng)絡(luò),其本質(zhì)是分組卷積(Group convolution),即通過變量基數(shù)(Cardinality)來控制組的數(shù)量。ResNeXt網(wǎng)絡(luò)結(jié)構(gòu)可在不增加參數(shù)復(fù)雜度的前提下提高準(zhǔn)確率,同時減少超參數(shù)的數(shù)量。ResNeXt網(wǎng)絡(luò)與ResNet網(wǎng)絡(luò)整體結(jié)構(gòu)相似,不同的地方在于殘差部分,ResNeXt網(wǎng)絡(luò)的殘差部分由分組卷積構(gòu)成,如圖3所示。
如圖3所示的ResNeXt網(wǎng)絡(luò)的殘差部分,輸入特征經(jīng)過一個卷積核大小為1×1的卷積,被分割成32個低維嵌入,之后對32個低維嵌入進(jìn)行變換,再把32個低維嵌入聚合。左邊有一個捷徑(Shortcut)直接從輸入連接輸出,主線經(jīng)過卷積操作得到的輸出通過捷徑與輸入相加,兩者相加之后經(jīng)過ReLu激活函數(shù)得到整個塊的輸出。
殘差塊主線經(jīng)過卷積的輸出需要和輸入維度一致才能相加,如果改變輸出通道數(shù),則捷徑上需要加上一個卷積操作,主線帶卷積的殘差塊如圖4所示。
1.2.4 稠密塊 DenseNet[10]由多個稠密塊和過渡層堆疊而成,以更少的參數(shù)在實(shí)際應(yīng)用中獲得了更好的效果。DenseNet的稠密塊包含多個Bottleneck層,一個稠密塊中的每個Bottleneck層與前面所有Bottleneck層在通道維度上連接,即第l個Bottleneck層接收來自所有先前Bottleneck層的特征輸入,之后通過卷積操作得到輸出,即
其中,[x0,x1,…,xl-1]是由前面各層輸出特征圖連接而成的張量,Hl(·)表示非線性變換函數(shù),該函數(shù)由3個操作組成,即批次歸一化(BN)、激活函數(shù)(ReLu)和卷積(Conv)。
稠密塊沒有將層輸出與輸入相加,而是把所有層直接相互連接,確保了各層之間的最大信息流;每一層從所有前面的層獲得額外的輸入,并將它自己的特征圖傳遞給所有后續(xù)層,減輕梯度消失問題,加強(qiáng)特征傳播,使特征得以復(fù)用;不需要重新學(xué)習(xí)冗余特征圖,大大減少參數(shù)量。n個稠密層組成的稠密塊構(gòu)架如圖5所示。
1.2.5 遷移學(xué)習(xí) 遷移學(xué)習(xí)(Transfer learing,TL)是一種機(jī)器學(xué)習(xí)方法,旨在將某個領(lǐng)域?qū)W到的知識應(yīng)用到不同但相關(guān)的領(lǐng)域中。通過遷移學(xué)習(xí),未訓(xùn)練的模型可以獲得已訓(xùn)練模型的權(quán)重,從而加快并優(yōu)化學(xué)習(xí)效率并取得更好的精度。使用遷移學(xué)習(xí),可以降低設(shè)備硬件以及數(shù)據(jù)集樣本數(shù)量需求,節(jié)省訓(xùn)練時間,提高模型泛化能力。目前,遷移學(xué)習(xí)已在花卉識別[11-14]問題上取得成功應(yīng)用。本研究使用在ImageNet數(shù)據(jù)集上訓(xùn)練得到參數(shù)權(quán)重的ResNeXt50作為預(yù)訓(xùn)練模型進(jìn)行花卉識別。
1.2.6 整體網(wǎng)絡(luò) 本研究網(wǎng)絡(luò)DB-ResNeXt50由ResNeXt50網(wǎng)絡(luò)和稠密塊組成,具體見圖6。其使用預(yù)訓(xùn)練的ResNeXt50卷積模塊提取特征,然后使用稠密塊整合特征,最后特征輸入到全連接層,進(jìn)而使用Softmax完成分類,輸出準(zhǔn)確率和損失函數(shù)值,更新權(quán)值參數(shù)值。
為驗(yàn)證稠密塊需要多少Bottleneck層能獲得最好的結(jié)果,設(shè)計了在使用遷移學(xué)習(xí)的ResNeXt50基礎(chǔ)上不同層數(shù)的仿真對比試驗(yàn),結(jié)果如表2所示。由表2可以看出,當(dāng)層數(shù)≤15時,準(zhǔn)確率隨Bottleneck層層數(shù)增加而增加,證明添加Bottleneck層確實(shí)改善了準(zhǔn)確率。當(dāng)層數(shù)≥20時,準(zhǔn)確率反而變小了,說明過多的層數(shù)阻礙了特征的表達(dá)。根據(jù)以上分析,為得到參數(shù)最少、準(zhǔn)確率最高的稠密塊,細(xì)化[10,20]區(qū)間,分別取層數(shù)為12、13、14、16、17,結(jié)果如表3所示。綜上,當(dāng)層數(shù)為15時,稠密塊所含參數(shù)最少、準(zhǔn)確率最高。
表2 不同數(shù)量Bottleneck層在花卉數(shù)據(jù)集上的比較結(jié)果
表3 不同數(shù)量Bottleneck層在花卉數(shù)據(jù)集上的比較結(jié)果(細(xì)分)
為了進(jìn)一步驗(yàn)證本研究算法的有效性,將DBResNeXt50網(wǎng)絡(luò)分成4個部分,分別為原始ResNeXt50網(wǎng)絡(luò)、加入遷移學(xué)習(xí)的ResNeXt50網(wǎng)絡(luò)、加入Mixup數(shù)據(jù)增強(qiáng)方法的ResNeXt50網(wǎng)絡(luò)以及加入稠密塊的ResNeXt50網(wǎng)絡(luò),依次考慮加入的算法對網(wǎng)絡(luò)性能的影響,結(jié)果如表4、圖7所示。
由表4可以看出,使用了遷移學(xué)習(xí)的ResNeXt50網(wǎng)絡(luò)模型比原始ResNeXt50網(wǎng)絡(luò)模型準(zhǔn)確率提高了9.51個百分點(diǎn),在遷移學(xué)習(xí)基礎(chǔ)上分別加入Mixup數(shù)據(jù)增強(qiáng)方法或者使用DenseBlock作為分類器都使得網(wǎng)絡(luò)模型準(zhǔn)確率略有提升,最后2種方法一起加入的網(wǎng)絡(luò)模型準(zhǔn)確率最高,為97.99%。
表4 不同模塊對網(wǎng)絡(luò)性能的影響
由圖7所示,原始ResNeXt50網(wǎng)絡(luò)初始準(zhǔn)確率低,擬合速度較慢,且最后的準(zhǔn)確率不高,使用遷移學(xué)習(xí)之后,初始準(zhǔn)確率達(dá)到90%,比原始ResNeXt50網(wǎng)絡(luò)最高的準(zhǔn)確率還高,驗(yàn)證了遷移學(xué)習(xí)的有效性,但只使用遷移學(xué)習(xí),準(zhǔn)確率曲線振蕩較大,表現(xiàn)并不穩(wěn)定。在使用遷移學(xué)習(xí)的基礎(chǔ)上添加Mixup數(shù)據(jù)增強(qiáng)方法使得準(zhǔn)確率曲線更加平滑,說明添加Mixup使網(wǎng)絡(luò)收斂得更快,效果更好;添加DenseBlock模塊使得準(zhǔn)確率更高一些,說明加入DenseBlock模塊能更好地提取重要信息的特征。使用2種方法之后的準(zhǔn)確率曲線不僅穩(wěn)定且最大值在5條曲線中最大,驗(yàn)證了本研究提出的網(wǎng)絡(luò)收斂速度更快,準(zhǔn)確率更高。
為驗(yàn)證DB-ResNeXt5網(wǎng)絡(luò)在花卉數(shù)據(jù)集上的優(yōu)越性,與文獻(xiàn)[15-17]提出的網(wǎng)絡(luò)進(jìn)行準(zhǔn)確率對比,結(jié)果如表5所示。結(jié)果表明,該算法在準(zhǔn)確率方面優(yōu)于現(xiàn)有方法。其中文獻(xiàn)[15]去掉原本的VGGNet卷積神經(jīng)網(wǎng)絡(luò)中最后一個全連接層,并且將最后一個最大池化層改進(jìn)為新型池化層sort_pool2d。文獻(xiàn)[16]將在ImageNet上預(yù)訓(xùn)練好的Inception_v3卷積神經(jīng)網(wǎng)絡(luò)模型中具有自動提取特征能力的卷積層和池化層遷移到提取的模型中,重新訓(xùn)練Inception_v3網(wǎng)絡(luò)中的全連接層和Dropout層,微調(diào)結(jié)構(gòu)參數(shù)。文獻(xiàn)[17]使用遷移學(xué)習(xí)訓(xùn)練網(wǎng)絡(luò),在ResNet34卷積神經(jīng)網(wǎng)絡(luò)第1個卷積層和殘差塊之后加入通道注意力機(jī)制和空間注意力機(jī)制。本研究算法準(zhǔn)確率相比文獻(xiàn)[15-17]分別提高了13.88、4.26、0.69個百分點(diǎn)。表明DB-ResNeXt50網(wǎng)絡(luò)模型在同一花卉數(shù)據(jù)集分類任務(wù)上優(yōu)于其他方法,分類效果更好。
表5 與其他算法在花卉數(shù)據(jù)集上的比較結(jié)果
本研究提出了一種基于ResNeXt50網(wǎng)絡(luò)的花卉圖像識別模型,對花卉數(shù)據(jù)集的識別準(zhǔn)確率達(dá)到97.99%。該模型將稠密塊加入ResNeXt50網(wǎng)絡(luò),并使用遷移學(xué)習(xí)將在ImageNet數(shù)據(jù)集上訓(xùn)練好的參數(shù)遷移到本研究模型中。綜合考慮不同層數(shù)Bottleneck的識別準(zhǔn)確率、參數(shù)量等因素,選擇含有15層Bottleneck的稠密塊插入ResNeXt50網(wǎng)絡(luò)全連接層前較合適。在本研究使用的花卉數(shù)據(jù)集中,DB-ResNeXt50網(wǎng)絡(luò)的識別準(zhǔn)確率比S-VGGNet[15]、改進(jìn)型Inception_v3模型[16]以及改進(jìn)型ResNet34模型[17]高。
雖然本研究提出的模型對花卉數(shù)據(jù)集的分類準(zhǔn)確率表現(xiàn)較好,但該數(shù)據(jù)集中包含的5類花卉之間特征差別比較大,對于其他類間特征差別不太大的花卉識別準(zhǔn)確率表現(xiàn)有待進(jìn)一步考察。此外,本研究提出的模型參數(shù)還是偏多,下一步的工作是刪去網(wǎng)絡(luò)中不必要的結(jié)構(gòu),在保持較高準(zhǔn)確率的前提下盡量減少網(wǎng)絡(luò)參數(shù)。