關(guān)鍵詞:蝴蝶分類;Vision Transformer;卷積;Class token;VanillaNet;注意力機(jī)制
0 引言
蝴蝶作為昆蟲綱中的一類分布廣泛的生物,因其高度敏感的生態(tài)感知能力而備受研究關(guān)注。蝴蝶的行為反應(yīng)具有一定的指示性作用,反映了生態(tài)系統(tǒng)的動(dòng)態(tài)變化。各種人類活動(dòng)、氣候變化和食物來源等外部干擾因素都會(huì)威脅到它們的生存環(huán)境。不同品種的蝴蝶對(duì)環(huán)境的依賴性差異顯著,因此,通過對(duì)蝴蝶的分類研究,可以更細(xì)致地根據(jù)蝴蝶各品種的行為習(xí)性判斷當(dāng)?shù)厣鷳B(tài)環(huán)境的狀況,并進(jìn)行進(jìn)一步研究。
蝴蝶屬于昆蟲綱、類脈總目、鱗翅目(Lepidop? tera) 、錘角亞目(Rhopalocera) ,全球已知近2萬種,可以分為4總科、17科、47亞科、1 690屬和15 141種。中國(guó)本土的蝴蝶資源也十分豐富,包括12科、33亞科、434屬和2 153[1-2]。蝴蝶的觸角主要呈現(xiàn)棒狀或錘狀,細(xì)長(zhǎng),觸角底部略有加粗,主要在白天活動(dòng)。蝶翅寬大,其翅膀上具有翅抱連鎖器,停歇時(shí)翅豎立于背上,身體相對(duì)纖細(xì)[3]。
蝴蝶識(shí)別任務(wù)艱巨,因?yàn)楹陨淼膮^(qū)分度并不明顯。傳統(tǒng)的識(shí)別方法是通過形態(tài)學(xué)特征來辨別,這需要研究者具備豐富的識(shí)別經(jīng)驗(yàn)以及對(duì)蝴蝶外形特點(diǎn)的理論基礎(chǔ),才能精準(zhǔn)確定蝴蝶的大致類別。這使得研究進(jìn)展緩慢。此外,研究者在外采集蝴蝶信息時(shí)多是用數(shù)碼產(chǎn)品進(jìn)行拍攝,拍攝距離和背景均會(huì)影響人們對(duì)照片中蝴蝶品類的判斷。因此,研究者可以借助工具快速高效地進(jìn)行蝴蝶分類,在此基礎(chǔ)上結(jié)合理論基礎(chǔ)與識(shí)別經(jīng)驗(yàn),最終確定蝴蝶的具體種類。
準(zhǔn)確高效的蝴蝶分類吸引了大量蝴蝶愛好者和研究工作者的注意。通過計(jì)算機(jī)圖像分類技術(shù),可以通過一張圖片上的蝴蝶形態(tài)學(xué)特征快速確定具體種類。圖像處理技術(shù)提取各類圖像的特征,使計(jì)算機(jī)能夠像人類一樣理解和解釋圖像內(nèi)容。蝴蝶分類方法也經(jīng)過了多輪技術(shù)迭代,最初是野外觀測(cè)并采集數(shù)據(jù)以及標(biāo)本制作,隨后是傳統(tǒng)數(shù)字圖像分類方法,需要人工采用特征或統(tǒng)計(jì)信息(均值、方差等)、直方圖、頻率域特征等基本特征。最后是使用神經(jīng)網(wǎng)絡(luò)直接對(duì)整張輸入圖片進(jìn)行特征提取和自動(dòng)識(shí)別。
潘鵬亮等[4-5]和陳淵等[6]通過提取蝴蝶前翅的內(nèi)部翅脈交點(diǎn)坐標(biāo),對(duì)這些翅脈特征進(jìn)行聚類來識(shí)別蝴蝶。2011年,Wang等[7]人采用蝴蝶標(biāo)本數(shù)據(jù)集,通過基于內(nèi)容的圖像檢索(CBIR) 技術(shù),使用不同特征、特征權(quán)重和相似度匹配算法進(jìn)行對(duì)比實(shí)驗(yàn),得出形狀特征對(duì)分類比其他形態(tài)學(xué)特征更為重要,其中鳳蝶科的分類準(zhǔn)確率達(dá)到84%。李凡[8]在2015年利用OpenCV 對(duì)50種蝴蝶標(biāo)本750張數(shù)據(jù)進(jìn)行預(yù)處理,再進(jìn)行多尺度輪廓曲率特征提取,最后使用改進(jìn)的K近鄰方法對(duì)標(biāo)本進(jìn)行分類,取得整體96.8%的準(zhǔn)確率。這些方法主要通過手工對(duì)標(biāo)本進(jìn)行形態(tài)學(xué)特征提取,無法獲取深層語(yǔ)義信息,且對(duì)蝴蝶標(biāo)本圖片的識(shí)別效果不佳,泛化能力較差,并需要進(jìn)行復(fù)雜的提取工序,費(fèi)時(shí)費(fèi)力。
2018年,謝娟英等[9]改進(jìn)Faster-RCNN的結(jié)構(gòu),對(duì)94 類自然蝴蝶照片進(jìn)行目標(biāo)檢測(cè)任務(wù),取得了比YOLO v2/v3 更好的效果。2019 年,李策等[10]將ResNet101 的卷積結(jié)構(gòu)改成可變形卷積,以更好地自適應(yīng)確定蝴蝶的形變尺度和位置。同時(shí),他們采用了遷移學(xué)習(xí)來加速模型的收斂,取得了顯著效果。2021年,謝娟英等[11]在改進(jìn)Retina-Net 時(shí)引入了可變形卷積和注意力機(jī)制,進(jìn)一步提高了模型的泛化能力。
近年來,深度學(xué)習(xí)技術(shù)在圖像分類任務(wù)中取得了突破性進(jìn)展,特別是卷積神經(jīng)網(wǎng)絡(luò)(CNN) 的出現(xiàn),極大地提高了圖像分類性能。CNN通過多層卷積層和池化層自動(dòng)學(xué)習(xí)圖像的局部特征和全局結(jié)構(gòu),有效減少了對(duì)手工特征設(shè)計(jì)的需求。深度學(xué)習(xí)模型具有強(qiáng)大的表達(dá)能力和泛化能力,能夠處理大規(guī)模數(shù)據(jù)集和復(fù)雜任務(wù)。2020年,谷歌大腦團(tuán)隊(duì)基于Transformer 在自然語(yǔ)言處理(NLP) 領(lǐng)域的成功,將Transformer引入視覺領(lǐng)域,采用卷積對(duì)圖像進(jìn)行分塊,再輸入Transformer En? coder,在ImageNet-1k數(shù)據(jù)集上的Top-1分類準(zhǔn)確率達(dá)到77.91%。
本研究提出了一種基于Vision Transformer(VIT) 并進(jìn)行了改進(jìn)的圖像分類模型。對(duì)VIT網(wǎng)絡(luò)結(jié)構(gòu)的Patch Embedding和Class token進(jìn)行了修改,旨在提高VIT在小數(shù)據(jù)集上的魯棒性,并顯著提升模型的預(yù)測(cè)結(jié)果。研究建立了一個(gè)能夠自動(dòng)對(duì)蝴蝶品種進(jìn)行分類的模型,為解決VIT在小數(shù)據(jù)集上從頭訓(xùn)練效果不佳的問題提供了有效的改進(jìn)思路。
1 基于VIT 改進(jìn)的VC_VIT 網(wǎng)絡(luò)模型
1.1VIT 網(wǎng)絡(luò)模型分析
Transformer最初在自然語(yǔ)言處理(NLP) 領(lǐng)域取得了顯著的成功。2020年,Alexey Dosovitskiy[12]等人將fTorramnesrfo(VrmiTe)r 在引圖入像計(jì)分算類機(jī)任視務(wù)覺中領(lǐng)展域現(xiàn),其了中令V人is矚ion目 T的ran效s?果。這得益于Transformer強(qiáng)大的注意力機(jī)制,其性能優(yōu)勢(shì)在大量數(shù)據(jù)的情況下持續(xù)提升。ViT在使用極其龐大的訓(xùn)練數(shù)據(jù)集時(shí),可以遠(yuǎn)遠(yuǎn)超越卷積神經(jīng)網(wǎng)絡(luò)(CNN) 的性能水平。
然而,ViT需要使用大量數(shù)據(jù),這導(dǎo)致模型訓(xùn)練時(shí)需要更多的計(jì)算資源和時(shí)間。另外,ViT在小數(shù)據(jù)集上的表現(xiàn)并不突出,這主要源于其缺少卷積所具有的歸納偏置。作為一種深度學(xué)習(xí)模型,ViT使用自注意力機(jī)制而非傳統(tǒng)的卷積層進(jìn)行特征提取,因此缺乏卷積操作,沒有卷積層中的歸納偏置。CNN可以通過共享權(quán)重和局部連接更容易地從有限的數(shù)據(jù)中泛化。
此外,由于ViT本身的自注意力機(jī)制具有全局關(guān)系建模的能力,相對(duì)于卷積操作,其在捕捉局部特征方面存在一定的不足。這使得在小型數(shù)據(jù)集上訓(xùn)練時(shí),ViT容易過擬合,性能相對(duì)較差。
1.2 網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)
ViT 的結(jié)構(gòu)主要包括一層卷積、多層編碼器(Transformer Encoder) 和最后的全連接分類頭。每個(gè)編 碼 器 層 包 括 自 注 意 力 機(jī) 制 (Multi-Head Self- wAottrekn)t 。ion這) 和些前編饋碼神器層經(jīng)有網(wǎng)助絡(luò)于(Fe模ed型-F捕or捉wa圖rd像 N塊eur之a(chǎn)l 間Ne的t?特征關(guān)系。然而,鑒于ViT存在缺乏卷積具有的歸納偏置、對(duì)數(shù)據(jù)量要求高以及容易過擬合等缺點(diǎn),本文對(duì)其進(jìn)行了改進(jìn),改進(jìn)的重點(diǎn)集中在Patch Embedding 和Class token兩個(gè)部分。改進(jìn)后的結(jié)構(gòu)如圖1所示。
1.3 Patch Embedding 改進(jìn)
為了解決ViT在局部信息缺失方面的問題,經(jīng)過一系列與現(xiàn)有經(jīng)典網(wǎng)絡(luò)和新興卷積神經(jīng)網(wǎng)絡(luò)的對(duì)比,最終選擇了VanillaNet-5(以下簡(jiǎn)稱V5) [13]對(duì)圖像進(jìn)行切塊。V5以其簡(jiǎn)單而高效的結(jié)構(gòu)在準(zhǔn)確率方面取得了顯著的成績(jī)。通過在VanillaNet的Stage 1至Stage 3 部分引入殘差結(jié)構(gòu)與SE壓縮激勵(lì)機(jī)制[14],提高了對(duì)圖像特征的提取效果。引入壓縮激勵(lì)機(jī)制有助于對(duì)特征通道進(jìn)行權(quán)重聚合,使模型更加關(guān)注關(guān)鍵的特征信息,并且其輕量化的設(shè)計(jì)也不會(huì)帶來過多的計(jì)算開銷,從而提高模型的分類準(zhǔn)確率和魯棒性。同時(shí),SE 模塊能夠自動(dòng)學(xué)習(xí)不同特征通道的權(quán)重,從而更好地適應(yīng)不同的數(shù)據(jù)集和任務(wù)。
1.4 Class token 改進(jìn)
Class token 是ViT 架構(gòu)中最重要的組成部分之一,其輸出在圖像分類的最后階段得到應(yīng)用。通過在Class token上應(yīng)用全連接層,模型能夠?qū)W到如何將全局信息與局部信息有效結(jié)合,從而做出更為準(zhǔn)確的分類決策。Class token對(duì)整個(gè)圖像信息進(jìn)行建模,并承載了圖像的全局信息表示。Class token的引入有助于使ViT模型更好地捕捉整個(gè)圖像的語(yǔ)義信息,而不僅僅是局部的圖像塊信息。如表1所展示的改進(jìn)后V5模型結(jié)構(gòu),V5模型的stage 3(out_conv) 經(jīng)過一系列處理后有兩個(gè)重要輸出:V5_out1對(duì)通過卷積提取到的圖像內(nèi)容特征進(jìn)行了切塊;V5_out2 通過全局注意力機(jī)制(Global Attention Mechanism,簡(jiǎn)稱GAM) [15]感知到圖像空間和通道上的雙重信息,用于ViT Class token快速學(xué)習(xí)到圖像的全局信息,結(jié)構(gòu)如圖2所示。
GAM注意力機(jī)制主要用于增強(qiáng)模型對(duì)全局信息關(guān)注,保留圖片通道和空間方面的信息,以增強(qiáng)跨維度交互,同時(shí)有助于減少信息彌散,放大全局交互的效果。由于ViT的編碼器只能接收轉(zhuǎn)化成序列的圖片,初始訓(xùn)練階段Class token并不能快速捕捉到圖像空間與通道上的信息,導(dǎo)致訓(xùn)練進(jìn)程相對(duì)緩慢。將GAM對(duì)圖像全局處理的結(jié)果與Class token相加,以加速Class token對(duì)整個(gè)圖片的快速建模,使得模型更快收斂。
2 相關(guān)工作
2.1 數(shù)據(jù)集介紹
本文所使用的數(shù)據(jù)集來自Kaggle,包含100類蝴蝶的野外拍攝圖像,共計(jì)24 277張圖片,樣本分布如圖3所示。在數(shù)據(jù)劃分方面,按照7∶2∶1的比例進(jìn)行劃分,其中訓(xùn)練集包含17 066張圖片,驗(yàn)證集包含4 813張圖片,測(cè)試集包含2 398張圖片。數(shù)據(jù)樣本的分布相對(duì)均勻,每個(gè)類別都包含100張以上的樣本,如圖4所示是部分蝴蝶的生態(tài)照片。
2.2 實(shí)驗(yàn)相關(guān)配置
實(shí)驗(yàn)平臺(tái)為Windows 10,GPU為Tesla T4×2,顯存為16G。本文采用Meta平臺(tái)的PyTorch 2.0深度學(xué)習(xí)框架在PyCharm上搭建和訓(xùn)練模型,訓(xùn)練次數(shù)為70。分類損失函數(shù)使用交叉熵?fù)p失函數(shù)(CrossEntropy? bLeols_ss) m,oo并thin配g參合數(shù)標(biāo)設(shè)簽為0平.1?;瑑?yōu)(l化ab器el 采sm用ooAthdinamg), 學(xué),l習(xí)a?率為0.001,學(xué)習(xí)率更新策略使用余弦退火(CosineAn? nealingLR) 。batch_size 設(shè)置為32,使用早停機(jī)制(Early Stopping) ,當(dāng)驗(yàn)證集損失連續(xù)7次不下降時(shí),則終止訓(xùn)練以節(jié)約資源進(jìn)行新一輪實(shí)驗(yàn)。
2.3 數(shù)據(jù)集預(yù)處理
數(shù)據(jù)增強(qiáng)可以通過對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行變換和擴(kuò)充來增加模型訓(xùn)練樣本的數(shù)量,主要目的是提高模型的泛化能力,使其在面對(duì)新的、未見過的數(shù)據(jù)時(shí)表現(xiàn)更好。盡管每次訓(xùn)練時(shí)使用的是同一批圖片,但是由于經(jīng)過一系列的數(shù)據(jù)增強(qiáng)操作,變相地增加了樣本的多樣性,減緩了過擬合現(xiàn)象,并提高了模型對(duì)變化的魯棒性。另外,通過現(xiàn)有數(shù)據(jù)生成大量變體,可以降低數(shù)據(jù)采集的成本,同時(shí)達(dá)到更好的分類效果。下面是實(shí)驗(yàn)階段具體的數(shù)據(jù)增強(qiáng)操作:
1) 對(duì)圖像進(jìn)行統(tǒng)一縮放至256×256大小。
2) 將圖像隨機(jī)水平和垂直翻轉(zhuǎn),翻轉(zhuǎn)概率為0.5。
3) 將圖片隨機(jī)旋轉(zhuǎn),旋轉(zhuǎn)角度為[-45°, 45°],概率為0.5。
4) 將圖片進(jìn)行裁剪,裁剪為224×224大小。
5) 對(duì)圖片進(jìn)行cutout操作,將224大小的圖片隨機(jī)鏤空8塊2×2像素的區(qū)域,鏤空處像素值變?yōu)?,是否鏤空該張圖片的概率為0.5。
6) 對(duì)圖片進(jìn)行歸一化處理,然后放進(jìn)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練。
2.4 模型性能評(píng)價(jià)指標(biāo)
模型性能評(píng)價(jià)指標(biāo)用來度量機(jī)器學(xué)習(xí)或深度學(xué)習(xí)模型在特定任務(wù)上的性能。為了直觀地觀察不同模型在分類任務(wù)上的性能差異,本文采用以下評(píng)價(jià)指標(biāo):1) 準(zhǔn)確率(Top1-Acc) :模型正確分類的樣本所占的比例。2) Top-5 準(zhǔn)確率(Top5-Acc) :每個(gè)樣本的正確類別標(biāo)簽位于模型預(yù)測(cè)的前五個(gè)類別之一的比例。3) 平均精確率(MacroAvg-Precision) :所有類別上精確率的宏平均值。4) 平均召回率(MacroAvg-Recall) :所有類別上召回率的宏平均值。5) 平均F1分?jǐn)?shù)(Mac? roAvg_F1) :所有類別上F1分?jǐn)?shù)的宏平均值。
這些指標(biāo)將作為整體蝴蝶分類的評(píng)價(jià)標(biāo)準(zhǔn)。同時(shí),本文還采用精確率(Precision,簡(jiǎn)稱P) 、召回率(Re? call,簡(jiǎn)稱R) 和F1分?jǐn)?shù)(F1-score) 作為每個(gè)類別的評(píng)價(jià)指標(biāo),以細(xì)致觀察模型在各類別上的性能表現(xiàn)。
式中:i 為某一類別;num_Classes為類別數(shù);TP 為真陽(yáng)性;FP 為假陽(yáng)性;FN 為假陰性;P 代表精確率(Precision) ;R為召回率(Recall) ;F1-score 為F1分?jǐn)?shù);Top1-Acc 為模型在所有預(yù)測(cè)結(jié)果中,正確預(yù)測(cè)的比例;Top5-Acc 為模型在所有預(yù)測(cè)結(jié)果中,真實(shí)類別在這五個(gè)最可能類別之中的比例;MacroAvg-Precision 為平均精確率;MacroAvg-Recall 為平均召回率;MacroAvg-F1為平均F1分?jǐn)?shù)。
3 實(shí)驗(yàn)結(jié)果
3.1 模型改進(jìn)后結(jié)果分析
為驗(yàn)證改進(jìn)方法的有效性,選用ViT作為本次實(shí)驗(yàn)的基準(zhǔn)模型,并使用相同的數(shù)據(jù)集、訓(xùn)練策略、參數(shù)設(shè)置以及訓(xùn)練次數(shù)(70次)。在實(shí)驗(yàn)過程中采用了早停機(jī)制,因此所有模型的訓(xùn)練都在第60~70次停止,即當(dāng)驗(yàn)證集準(zhǔn)確率不再上升時(shí)結(jié)束訓(xùn)練。
從表2的結(jié)果可以看出,給ViT的Patch Embed? ding加入卷積結(jié)構(gòu)后,在數(shù)據(jù)集上的Top-1準(zhǔn)確率提升了28.9個(gè)百分點(diǎn),Top-5準(zhǔn)確率提升了9.71個(gè)百分點(diǎn)。這有效解決了ViT在小數(shù)據(jù)集上效果差的問題,證明了在小數(shù)據(jù)集上增加卷積結(jié)構(gòu)的有效性。
其次,根據(jù)表2的結(jié)果,通過引入一個(gè)經(jīng)過全局注意力機(jī)制的pre-Class token,發(fā)現(xiàn)模型的準(zhǔn)確率依然有所提升。ViT加上pre-Class token的Top-1 準(zhǔn)確率提升了5.34個(gè)百分點(diǎn),Top-5 準(zhǔn)確率提升了4.08個(gè)百分點(diǎn);而VC-ViT(卷積結(jié)構(gòu)的ViT) 加上pre-Class to? ken后,Top-1 準(zhǔn)確率提升了1.54個(gè)百分點(diǎn),Top-5 準(zhǔn)確率提升了0.46個(gè)百分點(diǎn)。這表明pre-Class token的引入可以進(jìn)一步提高模型的性能。
通過圖4、圖5和圖6可以看出,加入pre-Class to? ken的模型比未加入的模型更快地收斂,這在一定程度上加快了訓(xùn)練進(jìn)程,讓模型更早地達(dá)到收斂狀態(tài)。通過對(duì)這兩個(gè)改進(jìn)點(diǎn)的分析,充分展現(xiàn)了模型的優(yōu)異性能。
3.2 傳統(tǒng)卷積性能對(duì)比
為進(jìn)一步驗(yàn)證VC-ViT算法的有效性,將本文算法與經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)的性能進(jìn)行對(duì)比,選取VGG13、ResNet50、ResNet101、MobileNetV3-large 和VanillaNet-5進(jìn)行對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如表3所示。
根據(jù)表3的結(jié)果顯示,本文算法相比于VGG13、lVaargneil,la其NeTt-o5p-、1R準(zhǔn)es確Ne率t50分、別Re提sN高et1了01、10M.88ob%il、eN0.e5t0V%3-、4.87%、6.21%、5.29%。通過對(duì)比可以看出,改進(jìn)后的算法VC-ViT在小數(shù)據(jù)集上的收斂速度更快,模型的泛化能力較強(qiáng),在測(cè)試集上的表現(xiàn)非常好,顯著提高了對(duì)蝴蝶的分類準(zhǔn)確率。
4 結(jié)論
本研究旨在解決蝴蝶農(nóng)業(yè)與生物科學(xué)研究中識(shí)別蝴蝶品種困難的問題。選取 ViT(Vision Trans? former) 模型,受其在視覺領(lǐng)域的優(yōu)異表現(xiàn)啟發(fā),提出了一種卷積與ViT相結(jié)合的組合模型VC-ViT。為了克服ViT在局部特征提取方面的不足,引入了多層卷積結(jié)構(gòu)來改進(jìn)ViT的Patch Embedding結(jié)構(gòu)。同時(shí),還通過改進(jìn)pre-Class token的更新機(jī)制來解決模型收斂速度慢的問題。這些改進(jìn)提高了ViT模型的魯棒性和泛化能力,使在小數(shù)據(jù)集上訓(xùn)練的模型也能夠高效且準(zhǔn)確地識(shí)別蝴蝶。將VC-ViT模型應(yīng)用于100種蝴蝶的識(shí)別任務(wù)中,結(jié)果顯示其準(zhǔn)確率達(dá)到了96.41%,性能優(yōu)于傳統(tǒng)卷積結(jié)構(gòu)的模型。同時(shí),本研究驗(yàn)證了VoirTm在er研處究理提小供數(shù)了據(jù)有集價(jià)上值的的潛參考方案。