黃穎聰,孟凡陽(yáng)
(1.深圳信息職業(yè)技術(shù)學(xué)院 廣東省智能視覺工程技術(shù)研究中心,廣東 深圳 518172;2. 鵬城實(shí)驗(yàn)室,廣東 深圳 518055)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)[10]由于其在數(shù)據(jù)處理、特征提取以及模式分析上的優(yōu)勢(shì),已經(jīng)成為大多數(shù)圖像識(shí)別的優(yōu)先架構(gòu),在與計(jì)算機(jī)視覺和圖像處理相關(guān)的一些競(jìng)賽中有著出色的表現(xiàn)。CNN采用了多個(gè)特征提取階段,從而使其具有強(qiáng)大的學(xué)習(xí)性能[12]。CNN是一個(gè)端到端(end to end)的訓(xùn)練過程,它從輸入端到輸出端會(huì)最終得到一個(gè)預(yù)測(cè)結(jié)果,與真實(shí)結(jié)果相比較會(huì)得到一個(gè)誤差,這個(gè)誤差會(huì)在模型中的每一層傳遞(反向傳播),每一層的表示都會(huì)根據(jù)這個(gè)誤差來做調(diào)整,直到模型收斂或達(dá)到預(yù)期的效果才結(jié)束。在這個(gè)過程中,CNN采用了多個(gè)特征提取階段,利用了數(shù)據(jù)中的空間或時(shí)間相關(guān)性,可以挖掘數(shù)據(jù)中的信息,從中自動(dòng)學(xué)習(xí)表征。
計(jì)算能力的提高以及大量標(biāo)記數(shù)據(jù)的出現(xiàn),再加上改進(jìn)的算法,這些都推動(dòng)了CNN的研究進(jìn)程。由于CNN在許多計(jì)算機(jī)任務(wù)上獲得成功,針對(duì)CNN結(jié)構(gòu)的改進(jìn)也層出不窮。從上世紀(jì)90年代末到如今,CNN的學(xué)習(xí)方法和架構(gòu)進(jìn)行了各種改進(jìn),使其可以擴(kuò)展到大型、異構(gòu)、復(fù)雜和多分類問題[13]。
目前,為了提高網(wǎng)絡(luò)的性能,CNN網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化方法可以分為兩類:注重特征有效性的層間結(jié)構(gòu)優(yōu)化和注重特征關(guān)聯(lián)性的層內(nèi)結(jié)構(gòu)優(yōu)化。如圖1所示。層間優(yōu)化通過設(shè)立不同層之間的連接來實(shí)現(xiàn)不同級(jí)別的語(yǔ)義信息之間的交互,從而解決了線性堆疊卷積層所帶來的梯度消失和網(wǎng)絡(luò)退化的問題[1-3]。但是這類方法往往需要設(shè)計(jì)復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)才能實(shí)現(xiàn)層間的特征有效性,會(huì)增加額外的計(jì)算復(fù)雜度。層內(nèi)優(yōu)化則通過對(duì)卷積層內(nèi)部結(jié)構(gòu)進(jìn)行優(yōu)化,使用分組卷積[4]和深度可分離卷積[5-7]等技術(shù)實(shí)現(xiàn)同一層內(nèi)通道與通道之間的信息交互,對(duì)特征提取的效果更為明顯。同時(shí)這類優(yōu)化網(wǎng)絡(luò)可以集成到現(xiàn)有的CNN骨干網(wǎng)絡(luò)結(jié)構(gòu)中,而且不用帶來額外的計(jì)算代價(jià)。因此,第二類方法更受到青睞。像國(guó)內(nèi)的科研機(jī)構(gòu)曠視科技提出了一種高效的CNN層內(nèi)優(yōu)化模型,融合了通道混洗(Channel Shuffle)操作,利用特征關(guān)聯(lián)性交互不同分組特征信息解決了不同分組之間難以充分流通的問題[11]。
圖1 層間優(yōu)化和層內(nèi)優(yōu)化
盡管CNN網(wǎng)絡(luò)結(jié)構(gòu)的發(fā)展為圖像識(shí)別研究帶來了很大的進(jìn)展,取得了不錯(cuò)的識(shí)別性能,但是仍存在一些問題?,F(xiàn)有的CNN網(wǎng)絡(luò)結(jié)構(gòu)利用了分層內(nèi)各個(gè)通道間的關(guān)聯(lián)性,融合了層內(nèi)不同通道間的信息,但是缺乏對(duì)于每個(gè)分組通道內(nèi)部的信息的融合,不能充分挖掘各分組通道內(nèi)部特征的聯(lián)系。網(wǎng)絡(luò)不同層次的特征具有不同的尺度。通常,深度網(wǎng)絡(luò)模塊各通道的早期層次操作在一個(gè)精細(xì)的尺度上(為了提取低層次的特征),而隨后的層次(通過跨步卷積)過渡到粗糙的尺度上,允許全局上下文融合進(jìn)入下一模塊。這種操作僅僅利用了最后層次的粗尺度信息,缺乏分組內(nèi)早期層次的細(xì)尺度信息,導(dǎo)致了細(xì)節(jié)丟失,不利于圖像的精確識(shí)別。
在CNN的特征提取過程中,使用能從輸入中提取局部特征的可學(xué)習(xí)的卷積核來計(jì)算特征圖,然后使用非線性激活函數(shù)將非線性引入模型中。其中,卷積層的特征提取操作可以表示為:
從公式(1)可以看出,多尺度特征的提取由先前層輸入的尺度和卷積核的數(shù)量所決定。提取多尺度特征一般可以分為以下兩種方法:
(1)通過設(shè)置多個(gè)不同大小的卷積核對(duì)輸入數(shù)據(jù)進(jìn)行卷積運(yùn)算,提取不同卷積核的尺度特征。這類方法通過卷積核感受野的多樣性豐富樣本特征,便于后續(xù)特征融合,提高網(wǎng)絡(luò)對(duì)多尺度信息的利用率。例如,GoogleNet[5]提出的Inception模塊中就設(shè)計(jì)了不同大小的卷積核組合,使用并行結(jié)構(gòu)、不對(duì)稱卷積核結(jié)構(gòu)進(jìn)行特征提取,提高了特征表述力和穩(wěn)定性。但不足之處是由于計(jì)算資源的限制,卷積核的尺寸設(shè)計(jì)不能過大,這會(huì)導(dǎo)致感受野較小。
(2)利用分組卷積來獲得多尺度特征圖。在公式(1)的基礎(chǔ)上可以得到分組卷積過程如公式(2)所示。
來自南開大學(xué)的團(tuán)隊(duì)提出了一種很有前景的新的卷積骨干網(wǎng)絡(luò):Res2Net[8]。這種體系結(jié)構(gòu)允許多尺度信息的集成和處理,它將單個(gè)殘差塊進(jìn)行分組,并在不同分組之間構(gòu)造層次殘差連接,實(shí)現(xiàn)了特征的多尺度表示和集成了更細(xì)粒度的卷積操作。Res2Net與傳統(tǒng)的bottleneck相比,在1×1卷積操作后,沒有馬上進(jìn)行3×3卷積,而是將n個(gè)通道分成s組,每組w個(gè)通道(n=s×w)。每一個(gè)分組的特征圖被3×3卷積提取特征后的輸出會(huì)被送入下一組,與另一組的輸入特征圖一起再進(jìn)行3×3卷積。重復(fù)多次這個(gè)過程,直到處理完所有的特征圖。最后,將分組卷積的結(jié)果連接起來,并使用“1×1”卷積進(jìn)行信道融合。Res2Net進(jìn)一步采用分組卷積在殘差塊中構(gòu)造更精細(xì)的二次殘差連接,使得網(wǎng)絡(luò)有更豐富的感受野來學(xué)習(xí)多尺度特征。如圖2所示,Res2Net塊是對(duì)傳統(tǒng)殘差塊的分解,因此模型可以在單個(gè)殘差塊中學(xué)習(xí)多尺度特征。
每個(gè)分組的輸出 可以用下式來表示:
圖2 Res2Net module
式中的 來表示3×3卷積,s代表分組數(shù)也即尺度(scale),代表每個(gè)分組的輸入特征圖??梢钥吹剑卣餍畔⒃诟鞣纸M之間流動(dòng),下一個(gè)分組可以接收到來自前面所有分組的特征信息。由于組合爆炸效應(yīng),Res2Net模型的輸出可以學(xué)習(xí)多尺度的特征,提取更豐富的語(yǔ)義信息。該模塊可以集成到經(jīng)典的backbone網(wǎng)絡(luò)之中,例如ResNet[1],ResNeXt[9]等等。
在ResNet網(wǎng)絡(luò)中,保持其他的結(jié)構(gòu)不變,僅僅把其中的bottleneck block替換為Res2Net module搭建完整的Res2Net網(wǎng)絡(luò)。通過堆疊不同數(shù)量的block結(jié)構(gòu)可以構(gòu)建不同深度的網(wǎng)絡(luò)。實(shí)驗(yàn)所用網(wǎng)絡(luò)深度有18、34和50層,網(wǎng)絡(luò)參數(shù)如表1所示。在網(wǎng)絡(luò)結(jié)構(gòu)前期,采用步長(zhǎng)為2的7×7卷積和步長(zhǎng)為2的3×3最大池化,然后經(jīng)過逐一block進(jìn)行特征提取和學(xué)習(xí),最后經(jīng)過平均池化再進(jìn)行輸出。
表1 網(wǎng)絡(luò)具體設(shè)置參數(shù)
?
高層特征包含上下文信息,而低層特征具有豐富的空間細(xì)節(jié)。盡管Res2Net在殘差塊中實(shí)現(xiàn)了多尺度卷積,但其單個(gè)分組通道內(nèi)部的信息流動(dòng)比較單一,沒有充分利用本組特征圖的低層特征。而skip connection作為層間優(yōu)化的常見結(jié)構(gòu),能有效融合不同層級(jí)之間的上下文信息。因此,我們將skip connection的思想引入層內(nèi)優(yōu)化網(wǎng)絡(luò)。通過在Res2Net結(jié)構(gòu)基礎(chǔ)上進(jìn)行優(yōu)化,我們提出了一種新的網(wǎng)絡(luò)模塊:Skip2Net。該模型在每個(gè)分組內(nèi)引入一個(gè)skip connection的殘差結(jié)構(gòu),實(shí)現(xiàn)了在高層特征中嵌入更多的空間細(xì)節(jié)來增強(qiáng)特征融合。通過在每個(gè)分組通道內(nèi)建??臻g依賴關(guān)系,從不同層次的特征映射中學(xué)習(xí)表示,編碼了多尺度特征。
圖3 Skip2Net module
Skip2Net通過s個(gè)并行的分組卷積執(zhí)行了金字塔編碼機(jī)制。各個(gè)分組內(nèi)通過skip connection的殘差連接增加了本組的信息流動(dòng),不同的分組又通過從先前分組提取的所有特征進(jìn)行處理來增強(qiáng)分組間的信息流。這種結(jié)構(gòu)可以被視為s個(gè)空間金字塔編碼模塊,其中上下文的特征在s個(gè)尺度下進(jìn)行編碼。Skip2Net的最終輸出是由多尺度特征生成的特征圖,該特征圖攜帶局部和周圍的上下文信息。
為了證明提出的Skip2Net模型的有效性,在CIFAR數(shù)據(jù)集和ImageNet數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)。此外,還進(jìn)行了消融實(shí)驗(yàn)來揭示各種成分對(duì)性能的潛在影響。為公平對(duì)比,采用分類準(zhǔn)確率和模型計(jì)算參數(shù)量作為評(píng)價(jià)指標(biāo)來評(píng)估提出方法的優(yōu)勢(shì)。分類準(zhǔn)確率指的是Top-1準(zhǔn)確率,是一種常用的圖像分類評(píng)估指標(biāo)。
實(shí)驗(yàn)環(huán)境的核心是帶有CUDA的PyTorch深度學(xué)習(xí)框架和cuDNN GPU加速庫(kù)。在CIFAR實(shí)驗(yàn)中采用帶動(dòng)量的SGD算法來優(yōu)化網(wǎng)絡(luò)的loss,其中動(dòng)量值為0.9。激活函數(shù)采用ReLU激活函數(shù),損失函數(shù)則采用交叉熵?fù)p失函數(shù)。權(quán)重衰減設(shè)置為0.0005,以避免復(fù)雜模型造成的過度擬合。設(shè)置最大epoch為200,初始的學(xué)習(xí)率為0.1。學(xué)習(xí)率衰減為0.2,也就是每經(jīng)過60個(gè)epoch除以50。
在ImageNet實(shí)驗(yàn)中,采用動(dòng)量為0.9和權(quán)重衰減為0.0001的SGD優(yōu)化算法進(jìn)行實(shí)驗(yàn)。設(shè)置最大epoch為90,初始的學(xué)習(xí)率為0.1,每經(jīng)過30個(gè)epoch除以10。
實(shí)驗(yàn)使用Res2Net50作為比較的基準(zhǔn)模型,為了實(shí)驗(yàn)的公平,僅僅把其中的Res2Net模塊換成Skip2Net模塊,其他不做改變。然后分別在CIFAR-10和CIFAR-100數(shù)據(jù)集從參數(shù)量和準(zhǔn)確率上驗(yàn)證提出模型的有效性。為了簡(jiǎn)單起見,設(shè)置尺度(scale)s = 4。
表2給出了相應(yīng)的實(shí)驗(yàn)結(jié)果。由表2可以看出:在CIFAR-10上,深度都為50的前提下,Skip2Net50的計(jì)算參數(shù)量與Res2Net50相比沒有增加,而分類準(zhǔn)確率高達(dá)95.46%,與Res2Net50的分類準(zhǔn)確率相比提高了0.23%。在CIFAR-100數(shù)據(jù)集上,Skip2Net50的分類準(zhǔn)確率達(dá)到80.24%優(yōu)于Res2Net50,與其相比提高了0.36%。實(shí)驗(yàn)結(jié)果證明,本文提出的模型能在不增加計(jì)算負(fù)載的同時(shí)有效地提高識(shí)別精度。原因分析:Skip2Net通過在各自分組內(nèi)引入跳躍連接,能有效地增加信息的來源,實(shí)現(xiàn)特征重用,減少一些重要特征的丟失從而提取到更有效的特征。通過多尺度信息的再利用,提高了識(shí)別精度。與在CIFAR-10上相比,Skip2Net在CIFAR-100上識(shí)別準(zhǔn)確率提高較多,這說明了我們提出的模型在更復(fù)雜的數(shù)據(jù)集上的泛化性能更好。
表2 兩個(gè)模型在CIFAR-10和CIFAR100的準(zhǔn)確率
為了直觀展示提出模型性能提升帶來的效果,將兩種算法在數(shù)據(jù)集上的對(duì)比效果展示在圖4中。圖4給出了兩種模型在訓(xùn)練過程中隨著迭代次數(shù)的增加,圖像分類準(zhǔn)確率的變化。圖中橫軸表示迭代次數(shù),縱軸表示分類準(zhǔn)確率。從圖中可以看出,該模型前期的分類準(zhǔn)確率提升較快,趨于穩(wěn)定時(shí)也略高于Res2Net。
圖4 兩種模型在CIFAR訓(xùn)練過程中的準(zhǔn)確率
圖5則顯示了兩種模型在訓(xùn)練過程中隨著迭代次數(shù)的增加,實(shí)驗(yàn)損失的變化。如圖所示,該模型與Res2Net相比測(cè)試損失的性能更穩(wěn)定。在CIFAR數(shù)據(jù)集對(duì)比這兩種結(jié)構(gòu),可以看出該模型的實(shí)驗(yàn)損失波動(dòng)較小,最終的損失值也較小。此外,Skip2Net和Res2Net相比還有更快的收斂速度。
圖5 兩種模型在CIFAR訓(xùn)練過程中的損失
(1)通常,網(wǎng)絡(luò)越深,表征能力越強(qiáng)。為了驗(yàn)證網(wǎng)絡(luò)的深度對(duì)模型的影響,在保持其他因素不變的前提下,實(shí)驗(yàn)設(shè)置了不同深度的Skip2Net網(wǎng)絡(luò)與Res2Net進(jìn)行對(duì)比實(shí)驗(yàn)。表3給出了Res2Net和本文的模型深度分別為18、34、50時(shí)在CIFAR-100上的計(jì)算參數(shù)量和準(zhǔn)確率對(duì)比。
從實(shí)驗(yàn)結(jié)果來看,隨著深度的增加,兩種模型的識(shí)別精度都有所提高。該模型在50層時(shí)獲得了最高的準(zhǔn)確率80.24%,相比同深度的Res2Net50提高了0.36%,有顯著的性能提升。而在深度為18、34時(shí)也分別同比增長(zhǎng)了0.41%、0.54%。
結(jié)果表明,該模塊可以與更深層次的模型集成,以獲得更好的表現(xiàn)。更深的模型擁有更大的感受野來編碼更多周邊特征,能夠更好地學(xué)習(xí)多尺度表征來提高識(shí)別精度。
表3 不同深度的模型在CIFAR-100上的準(zhǔn)確率比較
(2)考慮到尺度的選取會(huì)對(duì)分類性能的準(zhǔn)確率造成影響,該模型設(shè)置了不同的尺度與Res2Net進(jìn)行對(duì)比實(shí)驗(yàn)。采用三種不同的尺度方案來評(píng)估模型分類的效果,將尺度分別設(shè)置為4、6、8。
表4為訓(xùn)練結(jié)果。通過對(duì)比實(shí)驗(yàn)發(fā)現(xiàn),分類準(zhǔn)確率隨著尺度的增大而提高。在尺度為8時(shí),該模型分類準(zhǔn)確率達(dá)到80.73%,相比尺度為8的Res2Net50模型有了0.44%的提升。而在尺度為6時(shí),該模型相比同尺度的Res2Net50分類準(zhǔn)確率提升最為明顯,達(dá)到了0.56%。但是,隨著尺度從4增加到8,該模型準(zhǔn)確率改善的幅度變小,這可能是由于CIFAR數(shù)據(jù)集的分辨率太?。?2×32)使得尺度不能太大。隨著尺度的增加,計(jì)算參數(shù)量也有所增長(zhǎng)。為了在精度和計(jì)算復(fù)雜度之間做出權(quán)衡,在最終的架構(gòu)中將s設(shè)置為4。
表4 不同尺度的模型在CIFAR-100上的準(zhǔn)確率比較
為了驗(yàn)證該模型的泛化能力,在更大的數(shù)據(jù)集ImageNet設(shè)置實(shí)驗(yàn)對(duì)比兩個(gè)模型的分類性能。同樣設(shè)置尺度s為4,深度同為50的Skip2Net50和Res2Net50進(jìn)行實(shí)驗(yàn)。
實(shí)驗(yàn)結(jié)果如表5所示:與Res2Net50相比,Skip2Net50的計(jì)算參數(shù)量沒有較為明顯的增加,而分類準(zhǔn)確率達(dá)到了77.18%,有0.16%的性能提升。說明該模型在更為復(fù)雜的大數(shù)據(jù)集上也能有不錯(cuò)的表現(xiàn),證明了該改進(jìn)模型是有效的。
表5 兩個(gè)模型在ImageNet的準(zhǔn)確率比較
一個(gè)深層的CNN網(wǎng)絡(luò)經(jīng)過堆疊的卷積層和池化層,最后一層往往包含了最豐富的語(yǔ)義信息,具有可區(qū)分性。為了更直觀地理解我們的網(wǎng)絡(luò)模型是如何進(jìn)行分類的,我們使用CAM技術(shù)來產(chǎn)生熱力圖可視化網(wǎng)絡(luò)。CAM是一種可視化的工具,通過產(chǎn)生熱力圖的方式,能夠從流入CNN最后一層的梯度信息來了解每個(gè)神經(jīng)元對(duì)于決策感興趣的重要性,從而幫助獲悉模型是依據(jù)哪些像素點(diǎn)來判斷圖片的分類歸屬。
如圖6所示的可視化示例中,第二行是CAM梯度圖,第三行是CAM熱力圖。其中熱力圖中淺色覆蓋集中的地方就是CAM較強(qiáng)的區(qū)域,即對(duì)最后影響越大生成的熱度就越高。可以看出,基于Skip2Net的CAM結(jié)果基本上覆蓋了每張圖片上所要識(shí)別的整個(gè)對(duì)象。比如,第三行中的鳥和貓分別被紅色高亮顯示為“鳥”類和“貓”類,表示網(wǎng)絡(luò)在進(jìn)行識(shí)別判斷時(shí)正在查看正確的位置,我們的網(wǎng)絡(luò)是通過關(guān)注這些區(qū)域來得到結(jié)果的。第二行的梯度圖傾向側(cè)重于圖像的紋理信息和細(xì)節(jié)。例如,當(dāng)可視化“貓”和“狗”時(shí),CAM不僅能突顯出他們的輪廓和區(qū)域,還會(huì)刻畫出他們身上的紋理,這對(duì)預(yù)測(cè)更加精確的特定種類十分重要。
圖6 基于Skip2Net的可視化CAM圖
已有的層內(nèi)優(yōu)化網(wǎng)絡(luò)沒有充分考慮各分組通道內(nèi)部信息流動(dòng)問題,導(dǎo)致特征提取的效率不高從而影響網(wǎng)絡(luò)用于圖像分類等計(jì)算視覺任務(wù)的性能。針對(duì)這個(gè)問題,提出了一種新的層內(nèi)優(yōu)化網(wǎng)絡(luò)Skip2Net,通過對(duì)每個(gè)塊內(nèi)分組增加一個(gè)skip connection,從而加強(qiáng)了特征圖通道內(nèi)的信息流動(dòng)。直觀地說,引入的skip connection對(duì)較早的層啟用了隱式監(jiān)管,并增加了同一分組內(nèi)的信息流。在不同圖像數(shù)據(jù)集上的實(shí)驗(yàn)表明,新提出的Skip2Net與原先的Res2Net相比,能夠在不增加參數(shù)量的同時(shí)獲得更優(yōu)的分類效果,在CIFAR10和CIFAR100上分別達(dá)到95.46%和80.24%的準(zhǔn)確率,在ImageNet上也能達(dá)到77.18%的準(zhǔn)確率,顯著提升網(wǎng)絡(luò)在圖像分類識(shí)別中的準(zhǔn)確率。