胡秀建
(亳州學(xué)院 電子與信息工程系, 安徽 亳州 236800)
2015年來自微軟實(shí)驗(yàn)室的He Kaiming等人提出了殘差結(jié)構(gòu)并設(shè)計(jì)ResNet深度神經(jīng)網(wǎng)絡(luò)模型[1], 斬獲了ILSVRC2015挑戰(zhàn)賽中分類任務(wù)第一名和目標(biāo)檢測第一名, 并獲得COCO數(shù)據(jù)集中目標(biāo)檢測第一名和圖像分割第一名. 殘差結(jié)構(gòu)對深度神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)產(chǎn)生深遠(yuǎn)影響, 隨后出現(xiàn)了很多基于殘差結(jié)構(gòu)以及相關(guān)變體的算法模型, 比如ResNetV2[2]、 WResNet[3]、 DenseNet[4]、 ResUnet++[5]、 ConvNeXt[6]等, 并在計(jì)算機(jī)視覺領(lǐng)域的各個(gè)下游任務(wù)中均有出色的表現(xiàn). Ross Wightman等人通過大量的優(yōu)化實(shí)驗(yàn)再次證明了殘差結(jié)構(gòu)的優(yōu)勢[7]. Vision transformer(ViT)的引入很快取代了卷積神經(jīng)網(wǎng)絡(luò)成為最先進(jìn)的圖像分類模型[8], 然而ViT在應(yīng)用于一般的計(jì)算機(jī)視覺任務(wù)(如對象檢測和語義分割)時(shí)面臨困難. 分層的transformer(例如Swin transformer)重新引入了幾個(gè)卷積神經(jīng)網(wǎng)絡(luò)的先驗(yàn)[9], 使得transformer實(shí)際上可以作為通用的視覺主干, 并在各種各樣的視覺任務(wù)中表現(xiàn)出顯著的性能. ConvNeXt重新審視了設(shè)計(jì)空間, 并測試了純粹的“卷積神經(jīng)網(wǎng)絡(luò)”所能達(dá)到的極限, 在準(zhǔn)確性和可擴(kuò)展性方面優(yōu)于transformer, 證明了全卷積神經(jīng)網(wǎng)絡(luò)的性能依然強(qiáng)大.
全卷積網(wǎng)絡(luò)的特征提取能力與卷積核尺寸大小密切相關(guān), 大的卷積核將獲得更大的感受野, 能提取準(zhǔn)確的高級特征, 而小的卷積核在降低網(wǎng)絡(luò)參數(shù)和計(jì)算量方面有更大優(yōu)勢, 而超大卷積核并不適應(yīng)于較小尺寸的圖像任務(wù). 為了提高網(wǎng)絡(luò)的魯棒性, 本系統(tǒng)采用了3個(gè)Conv3×3卷積堆疊來設(shè)計(jì)新的Base殘差結(jié)構(gòu), 以替換ResNet中的2個(gè)Conv3×3卷積和Conv1×1+Conv3×3+Conv1×1的組合.
本文旨在驗(yàn)證新的殘差結(jié)構(gòu)的優(yōu)異性能, 主要貢獻(xiàn)包括以下3點(diǎn):
1.提出了基于3個(gè)Conv3×3堆疊的殘差結(jié)構(gòu)以及一系列變體, 其在通道信息融合、 空間特征提取方面有著出色的性能表現(xiàn).
2.將恒等映射中的Conv1×1改為Conv3×3,網(wǎng)絡(luò)性能有著顯著的提升.
3.基于新的殘差結(jié)構(gòu)設(shè)計(jì)的較淺層的卷積神經(jīng)網(wǎng)絡(luò)性能超過了諸多的深層網(wǎng)絡(luò), 網(wǎng)絡(luò)結(jié)構(gòu)有著進(jìn)一步優(yōu)化的可能, 可為視覺分類任務(wù)以及其他下游任務(wù)提供更大改進(jìn)的空間.
神經(jīng)網(wǎng)絡(luò)性能指標(biāo)主要包括神經(jīng)網(wǎng)絡(luò)的深度(deepth)、 寬度(width)、 參數(shù)量(parameters)和計(jì)算量(FLOPs). 增加網(wǎng)絡(luò)寬度帶來的成本遠(yuǎn)比增加網(wǎng)絡(luò)深度大, 但是增加網(wǎng)絡(luò)深度又給優(yōu)化帶來困難[10], 這是因?yàn)樘荻确聪騻鞑サ穆窂皆鲩L而導(dǎo)致的梯度消失, 從而加大了網(wǎng)絡(luò)訓(xùn)練難度. 這種隨著網(wǎng)絡(luò)深度的增加而使得訓(xùn)練誤差越來越多的現(xiàn)象被描述為網(wǎng)絡(luò)退化.殘差結(jié)構(gòu)不僅有助于解決梯度消失問題, 還可以解決梯度爆炸問題, 即使大幅度提升網(wǎng)絡(luò)深度也能有穩(wěn)定出色的性能表現(xiàn). 殘差單元的設(shè)計(jì)是通過具有恒等映射功能的跳躍鏈接來完成的. 在ResNetV2中, 作者又對殘差結(jié)構(gòu)做了調(diào)整, 并證明了采用前標(biāo)準(zhǔn)化方法的殘差結(jié)構(gòu)性能更出色.
ResNet淺層網(wǎng)絡(luò)中特征提取路徑采用2個(gè)3×3卷積堆疊的組合方式來實(shí)現(xiàn), 而在深層網(wǎng)絡(luò)中采用Conv1×1+Conv3×3+Conv1×1卷積的組合以增加網(wǎng)絡(luò)深度, 同時(shí)沒有大幅增加參數(shù)量. 本文經(jīng)過實(shí)驗(yàn)證明, 在殘差結(jié)構(gòu)中, 除了標(biāo)準(zhǔn)化、 激活函數(shù)以外, 恒等映射和特征提取路徑中的卷積操作也是可優(yōu)化的, 并提出了新的完全基于3×3卷積的殘差結(jié)構(gòu)(圖1).
圖1 Base殘差結(jié)構(gòu)與ResNetV1和ResNetV2結(jié)構(gòu)比較
在視覺任務(wù)中, 深度神經(jīng)網(wǎng)絡(luò)的性能表現(xiàn)依賴于其低級特征和高級特征提取能力. 對于一個(gè)(B,C,H,W)的輸入, 將通道信息和空間信息進(jìn)行充分融合, 有利于提高網(wǎng)絡(luò)的特征提取能力. 采用FCNN(全卷積神經(jīng)網(wǎng)絡(luò))設(shè)計(jì)網(wǎng)絡(luò)架構(gòu), 卷積核大小、 網(wǎng)絡(luò)深度和寬度一直是網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化所考慮的重點(diǎn). 尺寸為7×7大小的卷積核的有效性在ConvNeXt中得到最新驗(yàn)證[6], 采用更大尺寸的卷積核以發(fā)揮卷積神經(jīng)網(wǎng)絡(luò)更高性能, 其可在最新的研究成果中得到體現(xiàn), 比如將卷積核尺寸設(shè)置為31×31[11]. 然而, 顯而易見的是卷積核大小與圖像的尺寸需要保持一定的適配性, 比如Cifar10和Cifar100數(shù)據(jù)集的圖像尺寸為(32,32), 采用大尺寸的卷積核不能提取有效的特征信息. 3個(gè)3×3卷積的堆疊不只是獲得了與7×7尺寸大小相同的感受野, 在通道信息的融合和特征提取能力等方面, 其明顯優(yōu)于后者.
在網(wǎng)絡(luò)深度和寬度選擇方面, 深度神經(jīng)網(wǎng)絡(luò)更傾向于增加網(wǎng)絡(luò)深度以提高網(wǎng)絡(luò)性能的同時(shí)而沒有大幅增加計(jì)算成本[12-14], 但隨著算力的提升, 在一定程度上提高網(wǎng)絡(luò)寬度所帶來的網(wǎng)絡(luò)性能的提升是顯著且必要的[3].
為了驗(yàn)證Conv3×3卷積堆疊的性能表現(xiàn), 本系統(tǒng)在網(wǎng)絡(luò)模型設(shè)計(jì)上參照ResNet的網(wǎng)絡(luò)模型結(jié)構(gòu), 設(shè)計(jì)了一個(gè)Base網(wǎng)絡(luò)結(jié)構(gòu)作為參照, 并結(jié)合組卷積、 可分離卷積、 拓寬通道、 通道膨脹、 添加通道注意力和空間注意力等技術(shù)設(shè)計(jì)了一系列Variant網(wǎng)絡(luò)結(jié)構(gòu), 以對比3個(gè)Conv3×3卷積堆疊的低級特征和高級特征提取能力.
為了與ResNet及其他主流網(wǎng)絡(luò)進(jìn)行公平的對比, 網(wǎng)絡(luò)結(jié)構(gòu)沿襲了ResNet的設(shè)計(jì)思路, 重新設(shè)計(jì)了基于殘差結(jié)構(gòu)的新的基礎(chǔ)網(wǎng)絡(luò)模型. 該網(wǎng)絡(luò)結(jié)構(gòu)首先是由一個(gè)3×3卷積構(gòu)成的root模塊, 其功能僅僅是將輸入圖像通道數(shù)變?yōu)?4, 并沒有進(jìn)行2倍下采樣. 然后設(shè)計(jì)了4個(gè)網(wǎng)絡(luò)層, 每一層都都由若干個(gè)殘差塊堆疊而成并完成對原有通道數(shù)擴(kuò)大2倍, 其中第一層的2倍下采樣是可選的, 后面三層進(jìn)行2倍下采樣. 最后是一個(gè)分類器Classifier完成分類輸出(圖2).
圖2 Base網(wǎng)絡(luò)結(jié)構(gòu)
為了較為完整地展示網(wǎng)絡(luò)的性能, Base網(wǎng)絡(luò)模型的設(shè)置采用了固定的網(wǎng)絡(luò)寬度, 每一層(包括root模塊)網(wǎng)絡(luò)輸出的寬度為[64,128,256,512,1024], Layers中的Residual Block的數(shù)量、 其參數(shù)量和計(jì)算量見表1. 我們采用了torchsummary工具估計(jì)參數(shù)量、 thop工具估算計(jì)算量FLOPs, 由于root模塊包括一個(gè)Conv3×3卷積, 因此每一個(gè)尺度的網(wǎng)絡(luò)模型其卷積層個(gè)數(shù)都加上2.
從表1可以看出, 網(wǎng)絡(luò)層從14增加到29, FLOPs增加了大約1倍, 參數(shù)量增加了約42M.
表1 不同級別的基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)
為了對比基于3個(gè)3×3卷積堆疊而設(shè)計(jì)的殘差結(jié)構(gòu)網(wǎng)絡(luò)的低級特征和高級特征提取能力, 本系統(tǒng)主要從網(wǎng)絡(luò)輕量化、 融合通道信息、 添加注意力機(jī)制等三個(gè)方面設(shè)計(jì)了一系列的Variant網(wǎng)絡(luò)模型, 其中6個(gè)Variant是ResidualBlock結(jié)構(gòu)變體(圖3), 5個(gè)Variant是網(wǎng)絡(luò)結(jié)構(gòu)變體.
圖3 ResidualBlock變體結(jié)構(gòu)
Variant1(V1)修改了Base網(wǎng)絡(luò)結(jié)構(gòu)中ResidualBlock的恒等映射, 將Conv3×3卷積改成Conv1×1卷積. Variant2(V2)恒等映射采用了Conv1×1卷積, 用Conv1×1+ Group Conv3×3+Conv1×1替換ResidualBlock中的第二個(gè)和第三個(gè)Conv3×3. Variant3(V3)采用了非對稱卷積Conv1×3+Conv3×1替換ResidualBlock中的第三個(gè)Conv3×3. Variant4(V4)在V1基礎(chǔ)上做修改, 采用Group Conv3×3+Conv1×1替換ResidualBlock中的第三個(gè)Conv3×3. Variant5(V5)借鑒了ConvNe×t的膨脹操作, 在每一個(gè)layer之間增加了一個(gè)4倍通道膨脹模塊. Variant6(V6)的恒等映射采用Conv1×1卷積, 在ResidualBlock中增加了膨脹和擠壓操作, 通過第一個(gè)卷積操作將通道擴(kuò)大到一個(gè)中間值(mid = out+ (out - in) / 2), 然后通過第二個(gè)卷積操作將通道數(shù)降低到out. Variant7(V7)在V6的基礎(chǔ)上將恒等映射的Conv1×1改為Conv3×3. Variant8(V8)在每個(gè)layer之間增加了通道注意力機(jī)制. Variant9(V9)在Base基礎(chǔ)上每個(gè)layer之間增加了CBAM[15](通道注意力+空間注意力). Variant10(V10)在V6基礎(chǔ)上每個(gè)layer之間增加了通道注意力機(jī)制. Variant11(V11)在V6基礎(chǔ)上增加了空間注意力機(jī)制.
與基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)保持一致, 每個(gè)網(wǎng)絡(luò)結(jié)構(gòu)變體按照layers中的殘差塊的個(gè)數(shù)分別設(shè)置了5個(gè)不同級別, 表2分別給出了10個(gè)變體網(wǎng)絡(luò)的Tiny_B和Deep_B模型級別的參數(shù)量和FLOPs.
網(wǎng)絡(luò)模型的主要性能取決于網(wǎng)絡(luò)模型架構(gòu)的設(shè)計(jì)、 訓(xùn)練超參數(shù)的設(shè)置以及數(shù)據(jù)增強(qiáng)技巧等三個(gè)方面的因素[7]. 模型之間性能的對比還需要考慮網(wǎng)絡(luò)模型所面向的任務(wù)以及基準(zhǔn)測試平臺, 完全相同的實(shí)驗(yàn)環(huán)境和超參數(shù)設(shè)置也不能反映網(wǎng)絡(luò)模型性能的真實(shí)差異, 迄今為止都沒有統(tǒng)一的標(biāo)準(zhǔn)和方法來衡量網(wǎng)絡(luò)模型對比的公平性[7]. 為了保證最大可能的公平性和凸顯網(wǎng)絡(luò)模型架構(gòu)之間性能的差異, 本系統(tǒng)采用了統(tǒng)一的最樸素的方法對網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練.
實(shí)驗(yàn)在Python3.8.6、 Pytorch1.8.2和Cuda11.2的環(huán)境上采取數(shù)據(jù)并行運(yùn)算方式在2塊GPU為Nvidia 3090的機(jī)器上進(jìn)行網(wǎng)絡(luò)模型訓(xùn)練. 基準(zhǔn)測試平臺為Cifar10和Cifar100數(shù)據(jù)集, 參數(shù)Epoch=150, Batchsize=128, momentum=0.9,weight_decay=5e-4優(yōu)化器選擇SGD, 初始學(xué)習(xí)率全部設(shè)置為0.1, scheduler=MultiStepLR, milestones=[60,100,130],gamma=0.1.
在消融實(shí)驗(yàn)中相對于Base網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)了11個(gè)Variant網(wǎng)絡(luò)結(jié)構(gòu)(表2), 挑選了6個(gè)全局隨機(jī)種子對Base網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行穩(wěn)定性測試, 其他的實(shí)驗(yàn)全局隨機(jī)種子seed均設(shè)置為1234.
表2 網(wǎng)絡(luò)結(jié)構(gòu)
3.1.1 Base網(wǎng)絡(luò)結(jié)構(gòu)穩(wěn)定性測試
與上述的實(shí)驗(yàn)設(shè)置一致, 選擇了6個(gè)全局隨機(jī)種子在Cifar100數(shù)據(jù)集上通過測試. Base網(wǎng)絡(luò)結(jié)構(gòu)的Tiny_B測試結(jié)果見表3.
表3 穩(wěn)定性測試Base Tiny_B
在6個(gè)不同隨機(jī)種子情況下平均訓(xùn)練123個(gè)epoch便可獲得78.49%的平均精度, 精度值上下浮動大約0.3%.
3.1.2 網(wǎng)絡(luò)輕量化
V1結(jié)構(gòu)比Base結(jié)構(gòu)的參數(shù)量減少了21.25M, 但在5個(gè)不同尺寸的模型上精度平均下降了1.41%. V2在V1基礎(chǔ)上做修改, 采用Conv1×1+ GroupConv3×3+Conv1×1, 其參數(shù)量有大幅下降, 與Base相比精度平均下降1.63%, 但與V1相比性能接近. V3在Base基礎(chǔ)上做修改, 采用非對稱卷積, 性能平均提升了0.3%, 同比最大提升了0.89%. V4在V1基礎(chǔ)上做修改, 參數(shù)量有大幅下降, 與Base相比精度平均下降1.01%, 與V1相比性能平均提升0.4%, 同比最大提升了0.65%. 表4數(shù)據(jù)表明, 恒等映射中使用Conv3×3其性能遠(yuǎn)超Conv1×1, 在保證感受野不變的情況下降低參數(shù)容量, 采用GrupConv3×3+Conv1×3+Conv3×1和GroupConv3×3+conv1×1替換最后一個(gè)Conv3×3卷積的做法是有效的, 且GroupConv3×3+conv1×1降低參數(shù)量的幅度更大. 將V4結(jié)構(gòu)中的恒等映射Conv1×1卷積改成Conv3×3, 其性能在理論上還有進(jìn)一步提升的空間, 因此保留了V3和V4的結(jié)構(gòu)設(shè)計(jì).
表4 組卷積、 1×1卷積、 對稱卷積實(shí)驗(yàn)結(jié)果
3.1.3 融合通道信息
借鑒了ConvNeXt的做法, 在layer之間添加了SE模塊(V5), 隨著網(wǎng)絡(luò)深度的增加其性能逐漸提升, 其超越Base結(jié)構(gòu)約0.5%. 在ResidualBlock內(nèi)增加網(wǎng)絡(luò)寬度(V6)提升了網(wǎng)絡(luò)模型的性能, 而在layer之間對通道信息進(jìn)行SE(壓縮擴(kuò)展)操作并沒有帶來性能的提升, 反而拉高了網(wǎng)絡(luò)模型的容量和計(jì)算量. 在V6的基礎(chǔ)上將恒等映射中Conv1×1卷積改成Conv3×3卷積(V7), 總體進(jìn)一步提升了網(wǎng)絡(luò)的性能, 與Base結(jié)構(gòu)相比同比最大提升0.98%. 實(shí)驗(yàn)數(shù)據(jù)表明在融合通道信息能力方面 V5與V6、 V7相比沒有優(yōu)勢, 并進(jìn)一步證實(shí)了將恒等映射中Conv1×1卷積改成Conv3×3卷積能提升網(wǎng)絡(luò)性能表現(xiàn).
表5 融合通道信息實(shí)驗(yàn)結(jié)果
表6 在Base和V6上增加注意力機(jī)制模塊實(shí)驗(yàn)結(jié)果
3.1.4 添加注意力機(jī)制
經(jīng)驗(yàn)性地認(rèn)為添加注意力機(jī)制模塊是有效的[16-17]. 本實(shí)驗(yàn)中, 在網(wǎng)絡(luò)結(jié)構(gòu)中添加空間注意力和通道注意力, 以觀察網(wǎng)絡(luò)性能的表現(xiàn)[17-18]. V8、 V9以Base模塊為殘差塊分別在layer之間添加通道注意力機(jī)制和CBAM[15-17], V8、 V9與Base相比性能卻是下降的. V10、 V11以V6為殘差模塊在layer之間分別增加了通道注意力與空間注意力機(jī)制, V10與Base和V6相比, 性能出現(xiàn)了下降, 增加了空間注意力的V11比Base性能稍有提高, 但與V6相比其性能也趨于下降. 實(shí)驗(yàn)結(jié)果表明, 通道注意力和空間注意力機(jī)制對Base和V6殘差結(jié)構(gòu)不能起到提升性能的作用, 進(jìn)一步表明3個(gè)Conv3×3堆疊的殘差結(jié)構(gòu)在通道融合能力和空間特征提取能力方面已經(jīng)足夠出色.
通過以上的實(shí)驗(yàn)發(fā)現(xiàn), 基于Conv3×3堆疊的殘差結(jié)構(gòu)有著出色的性能表現(xiàn), 在通道信息融合和空間特征提取方面不需要額外的注意力機(jī)制, 且在不降低感受野的情況下可以對網(wǎng)絡(luò)進(jìn)行輕量化并能得到出色表現(xiàn). 此外, 在多個(gè)變體結(jié)構(gòu)中, 恒等映射中使用Conv3×3替換Conv1×1均獲得了性能的提升. 為此, 我們保留了Base、 V3、 V4、 V6、 V7等五個(gè)殘差結(jié)構(gòu)并將對之進(jìn)一步組合優(yōu)化.
在本實(shí)驗(yàn)中挑選了Base、 V3、 V4、 V6、 V7與Vgg19bn[13]、 ResNet18、 ResNet50、 ResNeXt50[19]、 GoogLeNet[20]、 MobileNetv2[21]、 SeResNet50[22]、 ShuffleNetv2[23]等主流分類網(wǎng)絡(luò)做了充分的對比, 還對比了根據(jù)原著論文的超參數(shù)設(shè)置以及訓(xùn)練方法的實(shí)驗(yàn)結(jié)果[24], 以驗(yàn)證基于3×3卷積堆疊的殘差結(jié)構(gòu)在ResNet網(wǎng)絡(luò)結(jié)構(gòu)中的性能表現(xiàn).
在相同的訓(xùn)練參數(shù)條件下, 在Cifar10數(shù)據(jù)集上我們的網(wǎng)絡(luò)模型性能表現(xiàn)全面超出了Vgg19bn、 ResNet18、 ResNet50、 ResNeXt50、 GoogLeNet、 MobileNetv2、 SeResNet50、 ShuffleNetv2等主流網(wǎng)絡(luò), 輕量化模型V3和V4取得了與ResNet18V2相近的精度值, 但在Cifar100上V3_Tiny-B比ResNet18高出0.74%、 比V3_Deep_B高出2.04%.
在Cifar100數(shù)據(jù)集上對比150個(gè)epoch訓(xùn)練的實(shí)驗(yàn)結(jié)果, V6_Deep_B最多超出ResNet50[1]3.08%, 最多超出ResNeXt50 1.38%, 最多超出SeResNet152[22]0.29%, 這是在沒有進(jìn)行大規(guī)模提高網(wǎng)絡(luò)深度的情況下取得的性能表現(xiàn), 其網(wǎng)絡(luò)結(jié)構(gòu)還可以進(jìn)一步優(yōu)化組合并提升性能.
表7 在Cifar10和Cifar100上運(yùn)行訓(xùn)練結(jié)果比較
本文旨在驗(yàn)證Conv3×3堆疊的殘差結(jié)構(gòu)在通道信息的融合和空間特征的提取方面的性能表現(xiàn), 并設(shè)計(jì)了一系列殘差結(jié)構(gòu)及網(wǎng)絡(luò)變體, 在Cifar10和Cifar100數(shù)據(jù)集上, 相對于目前主流的輕量級網(wǎng)絡(luò)、 深層網(wǎng)絡(luò)等有著優(yōu)異的性能表現(xiàn). Cifar100數(shù)據(jù)集每個(gè)類有600張大小為32×32的彩色圖像, 其中500張作為訓(xùn)練集、 100張作為測試集[24], 相較于ImageNet其數(shù)據(jù)量和圖像尺寸更小[25], 因此選擇Cifar100數(shù)據(jù)集作為基準(zhǔn)測試平臺能反映不同網(wǎng)絡(luò)之間的性能差異. 卷積神經(jīng)網(wǎng)絡(luò)模型的通道信息融合能力和空間特征提取能力決定著分類的性能, 并對下游視覺任務(wù)產(chǎn)生重要影響, 在設(shè)計(jì)網(wǎng)絡(luò)模型時(shí)感受野的大小應(yīng)與圖像尺寸保持一定的適配關(guān)系, 采用Conv3×3堆疊的殘差結(jié)構(gòu)能在提升感受野的同時(shí)保持著較強(qiáng)的通道信息融合能力.