何明智,朱華生,李永健,唐樹銀,孫占鑫
(南昌工程學(xué)院 信息工程學(xué)院,江西 南昌 330099)
近十年來(lái),卷積神經(jīng)網(wǎng)絡(luò)(CNN)在圖像分類任務(wù)中一直扮演著非常重要的角色,它具有十分優(yōu)秀的特征提取能力。如Krizhevsky[1]等提出由分層卷積構(gòu)成的AlexNet曾獲得2012年的圖像分類大賽冠軍。而Simonyan[2]等提出的VGGNet將卷積操作推向更深層。Szegedy[3]提出的Inception模型則從通過組合不同大小的卷積核來(lái)提升網(wǎng)絡(luò)的性能。He[4]等提出帶有殘差連接的ResNet解決了深層卷積神經(jīng)網(wǎng)絡(luò)出現(xiàn)的梯度爆炸和梯度消失的問題。Huang[5]等提出帶有密集連接的DenseNet更能充分利用卷積層間的特征流。盡管CNN網(wǎng)絡(luò)擁有出色的局部特征捕獲性能,但在獲取全局特征上能力不足。
近幾年來(lái),發(fā)展迅速的視覺注意力機(jī)制在一定程度上幫助傳統(tǒng)的CNN網(wǎng)絡(luò)獲取全局特征信息。如Hu[6]等提出的SENet利用全局自適應(yīng)池化層在通道域上捕獲全局信息后壓縮再加權(quán)到特征通道上。而Woo[7]等提出的CBAM則同時(shí)利用最大池化層和平均池化層分別對(duì)通道域和空間域信息重新整合后再加權(quán)。雖然利用池化運(yùn)算能以較小的參數(shù)量和計(jì)算量獲得全局特征表示,但池化運(yùn)算不可避免地會(huì)忽略一些重要的細(xì)節(jié)信息。受非局部均值方法[8](non-local mean)的啟發(fā),Wang[9]等提出由自注意力機(jī)制構(gòu)成的non-local模塊,使特征圖的每個(gè)位置的響應(yīng)是全局位置特征的加權(quán)和,使得CNN獲得全局特征信息。但基于整體2D特征圖的自注意力運(yùn)算量大,不利于在空間高分辨率進(jìn)行的視覺任務(wù)。
而近年來(lái),Transformer架構(gòu)[10]在自然語(yǔ)言處理任務(wù)上獲得的成功,讓研究人員將Transformer引入到視覺任務(wù)中。Dosovitskiy[11]等在原生的Transformer架構(gòu)上改進(jìn),提出基于視覺任務(wù)的Vision Transformer(ViT)。ViT將輸入的圖像劃分成固定大小的特征塊,經(jīng)過線性變換后得到特征序列,然后對(duì)特征序列進(jìn)行多頭自注意力運(yùn)算,既能充分獲得長(zhǎng)距離的特征依賴,同時(shí)也降低了運(yùn)算量。作為優(yōu)秀的特征提取骨干網(wǎng)絡(luò),ViT也被廣泛應(yīng)用于目標(biāo)檢測(cè)[12]和目標(biāo)跟蹤[13]等任務(wù)。但由于ViT直接對(duì)特征圖劃分成特征塊序列,導(dǎo)致提取邊緣以及局部特征信息能力減弱。因此在沒有超大規(guī)模數(shù)據(jù)集預(yù)訓(xùn)練下,ViT在圖像分類任務(wù)表現(xiàn)較差。針對(duì)這個(gè)問題,Chen[14]等提出加入卷積算子的友好型Transformer架構(gòu)Visformer模型,它在較小規(guī)模的數(shù)據(jù)集上表現(xiàn)出色。而D’Ascoli[15]等提出的ConViT模型,則是將CNN的歸納偏置帶到Transformer中,提升Transformer對(duì)圖像樣本利用率。Graham[16]等提出的Levit模型在圖像劃分前利用級(jí)聯(lián)多個(gè)小卷積能獲取圖像的局部特征,同時(shí)增大卷積步長(zhǎng),對(duì)圖像進(jìn)行下采樣,有效降低模型的參數(shù)量。而針對(duì)ViT模型復(fù)雜的位置編碼,Zhang[17]等提出的ResT模型利用深度可分離卷積對(duì)特征塊嵌入相對(duì)位置信息。
與以上現(xiàn)有模型不同,本文提出了一種基于融合CNN和Transformer的圖像分類模型FCT(Fusion of CNN and Transformer,簡(jiǎn)稱為FCT)。FCT模型由CNN分支和Transformer分支融合構(gòu)成。在FCT模型中CNN分支不僅在低層次中向Transformer分支補(bǔ)充基礎(chǔ)的局部特征信息,并且在模型的中、高層次中,CNN分支也能向Transformer架構(gòu)提供不同的局部和全局特征信息,增強(qiáng)模型獲取特征信息的能力,提升圖像分類的準(zhǔn)確率。
在基于深度學(xué)習(xí)的圖像分類領(lǐng)域,局部特征和全局表示一直是許多優(yōu)秀模型不可缺少的組成部分。CNN模型通過級(jí)聯(lián)卷積操作分層地收集局部特征,并保留局部線索作為特征圖。Vision Transformer則通過級(jí)聯(lián)的自注意力模塊以一種軟的方式在壓縮的特征塊之間聚合全局表示。
為了充分利用局部特征和全局表示,本文提出了一個(gè)融合網(wǎng)絡(luò)結(jié)構(gòu)FCT。FCT模型利用來(lái)自卷積分支的局部特征逐步提供到Transformer分支用以豐富局部細(xì)節(jié),使得FCT網(wǎng)絡(luò)模型獲得局部特征和全局表示。
如圖1所示,F(xiàn)CT模型主要由卷積stem塊、CNN分支、Transformer分支以及全局自適應(yīng)池化層和全連接層組成。stem塊由大小為7、步長(zhǎng)為2、填充為3的卷積和大小為3、步長(zhǎng)為2、填充為1的最大池化層構(gòu)成,它用于提取初始局部特征(例如邊緣和紋理信息),然后將初步處理后的特征圖傳遞給兩個(gè)分支。CNN分支與Transformer分支分別由多個(gè)卷積模塊和Transformer模塊組成,這種并行結(jié)構(gòu)可以使CNN分支和Transformer可以分別最大限度地保留局部特征和全局表示。而Patch Embedding則作為一個(gè)橋梁模塊,用于將完整的特征圖線性映射成特征塊序列,并逐步地把局部特征圖傳遞給Transformer分支,使CNN分支的局部表示特征圖能和Transformer分支的全局特征表示圖相融合。為了使網(wǎng)絡(luò)枝干產(chǎn)生層次表示,隨著網(wǎng)絡(luò)的深入,Patch Merging在Transformer分支中起到下采樣的作用,它可以減少特征塊序列的數(shù)量,使特征塊數(shù)量減少到原來(lái)的四分之一,從而有效地降低整體網(wǎng)絡(luò)的運(yùn)算量和參數(shù)量。最后,將特征圖輸入到自適應(yīng)平均池化層中,壓縮成1×1序列,然后通過全連接層輸出參數(shù)結(jié)果。
如圖1所示,CNN分支采用特征金字塔結(jié)構(gòu),其中特征圖的分辨率隨著網(wǎng)絡(luò)深度的增加而降低,同時(shí)通道數(shù)在不斷增加。本文將整個(gè)分支分為4個(gè)stage,每個(gè)stage包含兩組卷積,而根據(jù)ResNet-18[4]所定義,每個(gè)卷積組由兩個(gè)大小為3、填充為1的卷積,以及輸入和輸出之間的殘差連接組成。從stage2開始,每個(gè)stage的第一個(gè)卷積的步長(zhǎng)為2,其余為1。在整個(gè)CNN分支中,每個(gè)stage都擁有兩個(gè)卷積組。ViT模型通過一個(gè)步驟的Patch Embedding將一副圖像線性映射為特征塊序列,導(dǎo)致局部細(xì)節(jié)的丟失。而在CNN網(wǎng)絡(luò)中,卷積核在有重疊的特征映射上窗口滑動(dòng),這樣能保留精細(xì)的局部特征。因此,CNN分支能夠連續(xù)地為Transformer分支提供局部特征細(xì)節(jié)。
圖1 FCT模型結(jié)構(gòu)圖
1.3.1 Transformer塊
與ViT模型不改變特征序列的數(shù)量和通道數(shù)不同,本文的Transformer分支通過Patch Merging下采樣構(gòu)成特征金字塔結(jié)構(gòu),其中特征序列的數(shù)量隨著網(wǎng)絡(luò)深度的增加而減少,同時(shí)通道數(shù)與CNN分支相對(duì)應(yīng)的stage相同,也在不斷增加,用以更好地與CNN分支傳遞的特征信息相融合。本文將整個(gè)分支區(qū)分為4個(gè)stage,每個(gè)stage包含不同數(shù)量的Transformer塊。每個(gè)Transformer塊由多頭自注意力(MHSA)模塊和多層感知機(jī)(MLP)模塊(包含向上映射全連接層和向下映射全連接層,以及包含兩層GELU非線性激活層)組成。每一層的多頭自注意力塊和MLP塊中的殘余連接之前都使用層次歸一化[18](LayerNorm,LN)。Transformer模塊可用下式所表示:
(1)
(2)
其中z為輸入的特征序列,l為Transformer模塊的層次。
在整個(gè)Transformer分支中,stage1~stage4的MHSA模塊的頭部數(shù)量分別為1、2、4、8。而每個(gè)stage中Transformer模塊的數(shù)量分別為2、2、6、2。
1.3.2 特征塊線性映射Patch Embedding
標(biāo)準(zhǔn)的Transformer架構(gòu)的輸入為等長(zhǎng)的特征序列,以ViT為例,它在Patch Embedding層將一幅三維圖像x∈h×w×3分割成大小為p×p的特征塊。這些特征圖塊被線性映射為二維特征塊,其中x∈n×c,而n=hw/p2。一般地,ViT模型將特征塊尺寸設(shè)計(jì)為14×14,特征塊數(shù)量為16×16。為了減少參數(shù)量和運(yùn)算量,在本文中,F(xiàn)CT模型將特征塊設(shè)計(jì)為2×2的大小。如圖1所示,第一個(gè)Patch Embedding模塊將寬高為96×96,通道數(shù)為64的特征圖劃分成寬高分別為48個(gè)2×2的特征塊,即48p×48p,通道數(shù)仍然為64。
1.3.3 相對(duì)位置編碼
位置編碼(Position Embedding)對(duì)于利用特征塊序列的順序至關(guān)重要。在ViT中將一組可學(xué)習(xí)的參數(shù)添加到輸入標(biāo)記中來(lái)編碼位置關(guān)系。設(shè)x∈n×c為輸入,θ∈n×c為可學(xué)習(xí)的位置參數(shù),則位置編碼的嵌入可表示為
(3)
然而,使用這種可學(xué)習(xí)的相對(duì)位置編碼需要固定特征塊的長(zhǎng)度,這限制了改變特征塊長(zhǎng)度的處理。在本文的模型中,利用深度可分離卷積獲取特征序列的位置編碼關(guān)系后,加權(quán)到輸入序列中[15],可表示為
(4)
其中f為深度可分離卷積操作。
1.3.4 特征塊融合Patch Merging
隨著網(wǎng)絡(luò)的深入,特征塊的融合能減少特征序列的數(shù)量。每個(gè)特征塊融合層將每組2×2相鄰特征塊連接,并對(duì)連接特征應(yīng)用線性層,這樣可以使特征序列的數(shù)目減少到四分之一,輸出的通道數(shù)增大到輸入通道數(shù)的2倍。通過加入Patch Merging,使整體網(wǎng)絡(luò)模型形成層次結(jié)構(gòu),使CNN分支的每個(gè)stage輸出特征通道數(shù)與Transformer分支的每個(gè)stage輸入特征序列的通道數(shù)相等。而CNN分支的每個(gè)stage輸出的特征圖尺寸大小為Transformer分支每個(gè)stage輸入序列數(shù)量的兩倍。CNN分支向Transformer分支傳遞特征圖,特征圖經(jīng)過Patch Embedding處理后,得到的特征塊序列與上一個(gè)stage的Transformer層輸出特征塊序列的大小、數(shù)量以及通道數(shù)都相等,因此CNN分支傳輸?shù)奶卣餍畔⒛芎蚑ransformer分支融合。
由于CNN分支與Transformer分支上處理的特征結(jié)構(gòu)有所差異,因此,CNN分支的特征圖需要先映射成特征序列,再加入相對(duì)位置編碼,Transformer分支上的特征塊序列則需要下采樣,減少特征塊序列的數(shù)量。融合其兩個(gè)分支可由下式表示:
zl=PM(zl-1)+Pos(PE(f(xl-1))),
(5)
(6)
其中z∈n×c為輸入的特征塊序列,x∈h×w×c為輸入的特征圖,l表示層次,PM表示特征塊融合(Patch Merging),T表示Transformer模塊,Pos表示嵌入位置信息(Position Embedding),PE表示特征塊線性映射(Patch Embedding),f為卷積模塊。由圖1可知,F(xiàn)CT模型將每個(gè)stage的CNN分支都將該層次的局部特征以及全局表示信息傳遞到Transformer分支,使得模型融合了豐富多樣的局部和全局特征信息。
本文實(shí)驗(yàn)的設(shè)備CPU為Xeon(R)CPU E5-2680 v4,GPU為NVIDIA GeForce RTX 3060。本文使用的Python版本為3.7.4,Pytorch版本為1.9.0。
本文使用Oxford Flowers-102[19]和Caltech-101[20]作為實(shí)驗(yàn)數(shù)據(jù)集。Oxford Flowers-102為英國(guó)常見的102個(gè)花卉類別的圖像數(shù)據(jù)集,每個(gè)類包含40到258幅圖像,每幅圖像具有較大的比例、姿勢(shì)和光線變化,一共包含8 189幅圖像。Caltech-101由101個(gè)類別的物體圖片組成,每個(gè)圖像都使用單個(gè)對(duì)象進(jìn)行標(biāo)記,每個(gè)類包含大約40到800幅圖像,圖像大小不一,總共8 677幅圖像。以上兩個(gè)數(shù)據(jù)集均按照6∶2∶2的比例隨機(jī)劃分成訓(xùn)練集、驗(yàn)證集和測(cè)試集。本文實(shí)驗(yàn)的數(shù)據(jù)增強(qiáng)策略僅使用隨機(jī)剪裁和隨機(jī)水平翻轉(zhuǎn)。隨機(jī)剪裁是在數(shù)據(jù)訓(xùn)練時(shí)將輸入的圖像數(shù)據(jù)首先按不同的大小和寬高比進(jìn)行隨機(jī)裁剪,然后縮放所裁剪得到的圖像為384×384分辨率。隨機(jī)水平翻轉(zhuǎn)是在隨機(jī)剪裁操作后,以0.5的概率隨機(jī)水平翻轉(zhuǎn)。本實(shí)驗(yàn)僅使用上述數(shù)據(jù)集所包含的圖像,不使用額外的圖像進(jìn)行訓(xùn)練。
本文實(shí)驗(yàn)?zāi)P陀?xùn)練的優(yōu)化器為AdamW[21],學(xué)習(xí)率為0.000 1,權(quán)重衰減率為0.01,迭代次數(shù)為110。為了能加快模型收斂,本文使用學(xué)習(xí)率余弦衰退周期地對(duì)學(xué)習(xí)率進(jìn)行動(dòng)態(tài)調(diào)整,設(shè)置迭代20次為一個(gè)周期。
本文在一幅有多朵花的圖像上分別對(duì)FCT、ResNet-18、ViT-base使用Grad-CAM[22]計(jì)算得到3個(gè)不同的模型的注意力熱力圖,如圖2所示。ResNet-18能精確地識(shí)別出圖像里面位于中心位置的花朵,但是沒有識(shí)別出另外的花朵;ViT-base模型雖然都能感受到所有花朵的位置,但是無(wú)法獲得更精確的細(xì)節(jié)信息。與ResNet-18和ViT-base模型識(shí)別的結(jié)果相比,F(xiàn)CT模型既能感受到所有花朵的位置,又能獲取花朵的關(guān)鍵局部細(xì)節(jié)。因此FCT可以通過Transformer分支的自注意力模塊獲得特征全局表示,也能從CNN分支的卷積模塊獲得局部細(xì)節(jié)的信息,令局部信息和全局信息有效融合。
圖2 熱力圖可視化
在Oxford Flowers-102和Caltech-101上,除了測(cè)試FCT模型以外,還測(cè)試了傳統(tǒng)的CNN模型(ResNet-18、ResNet-50)、原始的Transformer模型(ViT-base)和將Transformer融合卷積的模型。由表1可知,在沒有大規(guī)模數(shù)據(jù)的預(yù)訓(xùn)練下,原始的Transformer模型ViT-base表現(xiàn)較差。其他文獻(xiàn)基于Transformer架構(gòu)融合卷積的方法雖然能改善ViT的準(zhǔn)確率,但是分類的準(zhǔn)確率仍然無(wú)法達(dá)到傳統(tǒng)CNN模型效果。在Oxford Flowers-102上測(cè)試本文提出的FCT模型分類準(zhǔn)確率比ResNet-18高5.84%,比ResNet-50高2.09%,比Visformer-tiny高9.64%。在Caltech-101數(shù)據(jù)集上,F(xiàn)CT模型分類準(zhǔn)確率比傳統(tǒng)CNN模型高約2%,比其他Transformer架構(gòu)模型優(yōu)勢(shì)明顯。本文提出的融合CNN與Transformer的圖像分類模型FCT,充分地利用了CNN的低層次局部特征以及高層次的全局特征,使網(wǎng)絡(luò)模型擁有豐富的特征信息,提高模型的分類準(zhǔn)確率。
表1 不同模型的測(cè)試集準(zhǔn)確率
圖3為stem卷積層和CNN分支、Transformer分支分別融合后測(cè)試結(jié)果的可視化圖。由圖3可知,CNN+stem分支(ResNet-18)對(duì)原圖中三個(gè)花朵的部分,更集中關(guān)注能明顯識(shí)別為花蕊的區(qū)域,其感受區(qū)域比較局部。而Transformer+stem分支對(duì)原圖中三個(gè)花蕊的位置都能感受到,但是感受區(qū)域過大,超出了花蕊的位置。FCT模型融合了CNN的局部感受和Transformer的全局感受,能將三個(gè)花蕊的位置識(shí)別出來(lái)。
圖3 模型各分支識(shí)別效果可視化
本在Transformer分支上不同層次上的分類準(zhǔn)確率,結(jié)果如表2所示。由表2可知,隨著從低層到高層卷積分支的融合,模型分類準(zhǔn)確率在不斷提高。實(shí)驗(yàn)結(jié)果說(shuō)明,CNN分支不僅在低層次傳遞局部細(xì)節(jié)特征能提升模型的分類性能,而且在高層次的全局特征表示上也對(duì)提升模型的分類效果發(fā)揮了重要的作用。
表2 逐步融合不同層次卷積的分類準(zhǔn)確率
針對(duì)傳統(tǒng)的CNN模型擁有出色的局部特征提取能力,但捕獲全局表示能力較弱,而視覺Transformer模型可以捕獲特征全局表示,但容易忽略局部細(xì)節(jié)的不足等問題,本文提出了一種基于融合CNN和Transformer的圖像分類模型FCT。FCT利用CNN分支的卷積算子來(lái)提取圖像的局部特征,利用Transformer分支的多頭自注意力機(jī)制來(lái)捕獲全局表示。在Oxford Flower-102和Caltech-101數(shù)據(jù)集上驗(yàn)證,F(xiàn)CT模型的圖像分類準(zhǔn)確率明顯優(yōu)于傳統(tǒng)的CNN模型和Vision Transformer模型。下一步將探索融合模型中,Transformer分支向CNN分支傳遞全局特征信息的結(jié)構(gòu)設(shè)計(jì),使Transformer分支以及CNN分支同時(shí)擁有優(yōu)秀的獲取局部特征和全局表示的能力,進(jìn)一步提高模型的分類準(zhǔn)確率。
南昌工程學(xué)院學(xué)報(bào)2022年4期