袁單飛,陳慈發,董方敏
(1.三峽大學 計算機與信息學院,湖北 宜昌 443000;2.湖北省建筑質量檢測裝備工程技術研究中心,湖北 宜昌 443000)
深度卷積神經網絡已被廣泛應用于圖像分類、目標檢測、實例分割等領域。在此背景下,如何設計高效的網絡模型成為提高網絡性能的關鍵。早期的卷積神經網絡(如AlexNet[1]和VGGNet[2])包含了簡單的激活函數和卷積結構,使得多尺度特征的數據驅動學習成為可能。ResNet[3]中的殘差結構使得更深的網絡能夠進行有效學習。WRN[4]通過增加殘差網絡的網絡寬度來提高識別精度。Res2Net[5]使用了對殘差結構進行多尺度分割的方法來提高識別精度。HS-ResNet[6]對多尺度分割方法進行改進,提出了參數量更小、識別速度更快的網絡模型。
通過增加網絡的深度和寬度能夠產生豐富的特征信息,通過多尺度分割方法能夠充分利用特征信息,減少冗余的特征信息。但在增加網絡深度和進行多尺度分割的同時,也會減慢網絡的識別速度。如何在保證識別精度的同時提高識別速度,成為設計高效網絡模型的一個重要目標。本文對HS-ResNet 提出的多尺度分割方法進行改進,提出一種簡單的多尺度分割方法,并通過減少網絡層數和增加寬度的方法,在保證網絡的識別精度和參數量相近的情況下,加快識別速度。
本文結合ResNet-D[7]的殘差結構和WRN 增加網絡寬度的方法對ResNet進行改進。通過減少網絡層數的方法,在CIFAR 數據集上得到網絡長度只有7 層的網絡模型,并對HS-ResNet 的多尺度分割方法進行優化,得到基于多尺度分割的圖像識別殘差網絡SSRNet。從識別精度和速度兩個角度,將該網絡與PyramidNet[8]進行比較,以驗證網絡性能。
殘差網絡的出現使得深度學習被廣泛應用于生產、生活的各個方面。殘差網絡通過求解預測值與觀測值之間的差值來對擬合函數進行學習,使深層網絡能夠進行有效學習。近年來,基于殘差網絡的改進網絡大幅提高了網絡的識別精度。
在深度學習中,網絡層數的增多一般會伴隨計算資源的消耗,網絡模型容易過擬合,并造成梯度消失、梯度爆炸等問題。隨著網絡層數的增加,網絡模型會出現退化現象,即隨著網絡層數的增多,訓練損失逐漸下降,然后趨于飽和;如果再增加網絡的深度,訓練損失反而上升。當網絡模型出現退化時,淺層網絡模型能達到比深層網絡模型更好的訓練效果,這時如果把底層特征信息傳到高層,那么效果應該至少不比淺層網絡模型效果差?;谶@種使用直接映射來連接網絡模型不同層的思想,殘差網絡ResNet 應運而生。
當輸出維度與輸入維度不等時,ResNet 需要對輸入維度進行升維操作。在ResNet 中直接使用步長為2 的1×1 卷積進行升維,當輸入圖像大小減半時,會造成特征信息丟失。ResNet-D 以ResNet 為基礎,在殘差結構升維操作之前加入步長為2 的2×2 均勻池化,然后使用步長為1 的1×1 卷積進行升維,使得網絡識別精度大幅提升。
隨著網絡層數加深,訓練深度卷積神經網絡存在著梯度消失與梯度彌散等問題,實驗結果也表明,越深的網絡模型帶來的識別精度提升并不明顯,反而需要降低識別速度[9]。針對網絡是否越深越窄效果越好,以及是否只要保證網絡參數量,訓練一個更寬更淺的網絡即可的問題,WRN 提出了基于擴展通道數學習機制的卷積神經網絡,以期通過更淺的網絡模型來獲得與深度網絡模型相近的識別精度,以及更快的識別速度。
WRN 通過增加網絡寬度能夠提升精度,當參數量相同時,WRN 的速度更快。但與殘差網絡一樣,當參數量過大時,其存在梯度消失與梯度彌散等問題。
在多個尺度上表示特征對視覺任務非常重要。卷積神經網絡展示出更強的多尺度表示能力,在廣泛的應用中實現一致的性能提升[10-16],如文獻[10]提出的多尺度特征提取和多級別特征融合的顯著性目標檢測方法,文獻[11]提出的結合超像素分割的多尺度特征融合圖像語義分割算法,文獻[13]提出的基于雙向特征金字塔和深度學習的圖像識別方法,文獻[15]提出的輕量級多尺度融合的圖像篡改檢測算法。在Res2Net 之前的方法大多以特征金字塔[17]分層方式表示多尺度特征。Res2Net 在原有的殘差單元結構中通過增加小的殘差塊來增加每一層的感受野范圍,以更細的粒度表示多尺度特征,使得殘差單元結構的中間主卷積從單分支變為多分支。
Res2Net 模塊結構簡單,性能優秀,其在卷積神經網絡的3 個維度(深度、寬度和基數)之外,揭示了一個新的尺度維度。Res2Net 模塊可以很容易地與其他模塊結合,特征提取能力更強大,且不增加計算負載。
HS-ResNet 改進了對特征圖多尺度分割的卷積和連接,在提升識別精度的同時,也提高了識別速度。HS-ResNet 主要考慮以下3 個問題:1)如何避免在特征圖中產生冗余信息;2)如何在不增加計算復雜度前提下,使網絡學習到更強的特征表達;3)如何在得到更高識別精度的同時,保持較快的識別速度?;谶@3 個問題,本文設計HS-Block 模塊來生成多尺度特征。
當通道數量較大時,Res2Net 方法計算復雜度也隨之增加。GhostNet[18]實驗結果顯示,一部分特征圖可以通過已有的特征圖生成。HS-ResNet 借助這一思想,在HS-Block 內將S2組卷積得到的特征圖部分連接到S3組,實現了特征圖復用,降低了計算復雜度。
HS-ResNet 提出了HS-Block 模塊,其可高效提取多尺度特征,在多個視覺任務(如圖像分類、目標檢測和實例分割)上取得了優秀的識別性能。HS-Block 具有即插即用特性,可以輕易嵌入到現有網絡中并提升識別性能。
HS-ResNet 的多尺度分割方法使不同組的特征信息享受不同尺度的感受野。在前面連接進來的特征信息中,卷積次數較少,感受野較小,更關注細節信息;在后面連接進來的特征信息中,卷積次數較多,感受野較大,更關注全局信息。通過不同大小的感受野增加特征信息的豐富性。本文提出的多尺度分割方法,對HS-ResNet 的多尺度分割方法中多次連接合并的操作進行優化,只保留了最后一次連接合并操作,使得識別速度大大提升。
WRN 提出基于擴展通道數學習機制的卷積神經網絡,以期通過更淺的網絡來獲得與深度網絡相近的精度,以及更快的識別速度。本文結合WRN 的增加通道數和對網絡長度進行縮短的方法,構建長度只有7 層的網絡模型,在保證識別精度的同時,進一步提升識別速度。
本文提出3 種多尺度分割網絡模型SSRNet,用新的多尺度分割模塊SS-Block代替ResNet中的3×3卷積,如圖1 所示。當特征信息輸入時,執行以下步驟:

圖1 SSRNet-a 的SS-Block 示意圖Fig.1 Schematic diagram of SS-Block in SSRNet-a
步驟1把1×1 卷積輸入的特征信息按通道數平均分割成相等的2 個部分(如果通道數為奇數,則向下取整)。
步驟2一半特征信息直接送到最后進行合并,另一半特征信息進行卷積。
步驟3重復上面步驟,直到最后一個特征信息。
步驟4把最后一個特征信息與前面得到的前一半特征信息進行合并,一起輸出給1×1卷積。SSRNet-a的多尺度分割模塊與ResNet 的瓶頸模塊結構相似,只是把ResNet瓶頸模塊中3×3 卷積用SS-Block 替代。其中,SS-Block 的卷積表示為3×3 卷積+批量正則化+Relu激活函數。
3 種多尺度分割網絡模型在CIFAR 數據集[19]上的詳細結構如表1 所示。其中:模型a 表示只替換了ResNet 瓶頸模塊中的3×3 卷積;模型b 表示在模型a的基礎上去掉了ResNet 瓶頸模塊中2 個1×1 降維和升維卷積;模型c 表示在模型b 的基礎上使每次下采樣的特征通道數等于第1 組的特征通道數。模型a與模型b 相比,識別精度相似,參數量更小,速度稍慢;模型c 與模型b 相比,識別精度較低,參數量更小,速度更快。

表1 3 種SSRNet 模型的結構Table 1 Structure of three SSRNet models
從AlexNet 開始,深度卷積神經網絡通過增加網絡長度對多尺度特征信息進行學習來提高網絡精度。然而在增加網絡長度的同時,會產生減少特征重用的問題。WRN 通過增加網絡寬度而不是網絡長度來解決這個問題,使得識別速度更快,且網絡長度越短,識別速度越快。隨著網絡長度的增加,卷積神經網絡的感受野增大,但并不是全部感受野都對輸出特征的貢獻相同,感受野的中心區域對輸出特征影響更大[20]。筆者通過實驗發現,當網絡長度設置為感受野大小與輸入圖像大小比例的1.5~2 倍時,網絡的識別精度較高,同時識別速度較快,在精度和速度之間取得了較好的平衡。第k層感受野的計算公式如下:

其中:lk-1是第k-1 層的感受野大?。籪k是當前層的卷積核大??;si是第i層的步長。
根據式(1)計算可得SSRNet-a 最后輸出感受野大小為51×51 像素,經過3 次尺度分割后感受野為67×67 像 素,恰好為輸入 圖像大小32×32 像素的1.5~2 倍。該網絡模型的長度能在識別精度和識別速度之間取得較好的平衡。
通過增加網絡寬度(即特征通道數),可以在保持網絡識別速度的同時提高識別精度。但增加網絡寬度的同時會增加參數量,所以,網絡寬度需要根據具體情況進行設置。當計算能力充足時,可以設置每組的網絡寬度相同,不同組的網絡寬度依次遞增(例如模型a 和模型b);當計算能力不足時,可以設置各組的網絡寬度都相同,通過犧牲精度來減少網絡模型的參數量(例如模型c)。
當輸入圖像過大時,通過下采樣可以減少模型計算量。輸入圖像下采樣到小尺寸(6×6 像素,7×7 像素,8×8 像素)時比較合適[21]。本文提出的多尺度分割網絡模型在CIFAR 數據集上,通過2 次2 倍下采樣把輸入圖像尺寸從32×32 像素縮小到8×8 像素,然后使用均勻池化,把輸出特征尺寸變成1×1像素后,進行圖像識別。
在網絡模型訓練上,本文算法使用飛槳深度學習框架進行實現。實驗數據集為CIFAR 10和CIFAR 100,每幅圖像都通過隨機邊緣填充裁剪4 個像素,并通過隨機水平翻轉進行數據增強,最后進行均值歸一化。訓練環境為百度的AI Stduio,GPU 為Tesla V100。
CIFAR 10 和CIFAR 100 被標記為8 000 萬個微小圖像數據集的子集,由Alex Krizhevsky、Vinod Nair 和Geoffrey Hinton 收集。
CIFAR 10數據集由10個類的60 000個32×32像素的彩色圖像組成,每個類有6 000 幅圖像,共50 000 幅訓練圖像和10 000幅測試圖像。10個類別分別為飛機、汽車、鳥、貓、鹿、狗、青蛙、馬、船和卡車。
CIFAR 100 數據集與CIFAR 10 數據集類似,其中包含100個類,每個類包含600個圖像。每類各有500個訓練圖像和100 個測試圖像,共有50 000 幅訓練圖像和10 000 幅測試圖像。CIFAR 100 中的100 個類被分成20 個超類。每個圖像都帶有一個“精細”標簽(其所屬類)和一個“粗糙”標簽(其所屬超類)。
網絡模型訓練使用的是帶動量的隨機梯度下降法進行反向傳播,在CIFAR 10 和CIFAR 100 訓練集上共訓練300 輪。初始學習率設置為0.000 01,進行10 輪線性預熱訓練。在此基礎上,以0.1 的學習率開始290 輪的余弦衰減訓練。卷積核的權重參數使用MSRA[22]進行初始化,權重衰減系數設置為0.000 05,動量系數設置為0.9,每批數據大小設置為128,同時使用了系數為0.05 的標簽平滑策略。
從CIFAR 10 數據集中隨機抽取4 幅圖像,SSRNet的識別結果如圖2 所示。原圖為32×32 像素的圖像,左上角為識別結果對應的類別標簽。

圖2 SSRNet 識別結果Fig.2 Recognition result of SSRNet
SSRNet、ResNet 和HS-ResNet 以相同訓練參數,在CIFAR 10 數據集上訓練得到的識別速度與識別精度對比如圖3 所示,其中:圓形面積表示模型參數量的大小,識別速度在Tesla V100 上批次大小為1 時測試得到:左上角3 個圓圈表示本文提出的多尺度分割網絡模型SSRNet,右下角3 個圓圈表示殘差網絡模型ResNet,中間圓圈表示SSRNet 中的多尺度分割模塊SS-Block 使用HS-Block 替代得到的網絡模型HS-ResNet。SSRNet-c 的識別精度與ResNet-56相近,速度快于ResNet-20。使用縮短網絡長度方法得到的HS-ResNet 與SSRNet-a 和SSRNet-b 相 比,識別精度略低,識別速度稍慢。由此可見,多尺度分割模塊SS-Block 與HS-Block 相比,識別精度更高,識別速度更快。

圖3 不同網絡模型的識別速度與識別精度對比Fig.3 Comparison of recognition latency and recognition accuracy of different network models
在本文的訓練環境和訓練策略下,不同網絡模型在CIFAR 數據集上的實驗結果如表2 所示,其中,加粗表示最優值。多尺度網絡模型SSRNet-c 的識別速度最快,是ResNet-56 識別速度的4 倍;SSRNet-a和SSRNet-b 的識別錯誤率相近,分別為4.14% 和4.04%。前者模型參數量更少,后者識別速度更快。當對識別速度要求較高時,使用SSRNet-c 可以獲得最快的識別速度。當對識別精度和模型參數量要求較高時,使用SSRNet-a 可以獲得較高的識別精度和較低的模型參數量。SSRNet-b 是SSRNet-a 與SSRNet-c 性能的折中,在識別精度、識別速度和模型參數量之間取得了較好的平衡。

表2 CIFAR 數據集上不同網絡模型的識別速度與錯誤率對比Table 2 Comparison of recognition latency and recognition error rates of different networks models on CIFAR datasets
表3 展示了不同的網絡模型在CIFAR 數據集上的實驗結果,本文網絡模型的識別錯誤率與其他網絡模型相近時,網絡層數最少。目前用于圖像識別的神經網絡大都是基于深度卷積神經網絡,網絡層數遠大于本文的網絡層數,網絡層數越少,識別速度越快。當識別錯誤率相近時,本文網絡模型的識別速度快于其他網絡模型。

表3 CIFAR 數據集上不同網絡模型的錯誤率Table 3 Comparison of error rates of different network models on CIFAR datasets
在本文的訓練環境和訓練策略下,CIFAR 數據集上SSRNet-b 消融實驗的結果如表4 所示。使用多尺度分割模塊SS-Block 替換ResNet 中的殘差模塊后,錯誤率相近,但識別速度從25 frame/s 下降到11 frame/s。使用縮短網絡長度方法改進ResNet 后,錯誤率相近,識別速度從25 frame/s提升到192 frame/s,提升7 倍多。同時使用多尺度分割方法和縮短網絡長度方法改進ResNet 后,得到的SSRNet 的錯誤率大幅度下降,在CIFAR 10 和CIFAR 100 數據集上分別下降2.53%和8.81%,識別速度從25 frame/s 提升到100 frame/s,提升了3 倍左右。由此可見,縮短網絡長度方法對識別速度有大幅提升,同時結合多尺度分割方法也可以提高識別精度。

表4 CIFAR 數據集上SSRNet-b 消融實驗的識別速度與錯誤率對比Table 4 Comparison of recognition latency and recognition error rates of SSRNet-b ablation experiment on CIFAR datasets
本文提出的多尺度分割方法在對多尺度特征信息進行表示時,并沒有增加很多模型參數量和計算量,而縮短網絡長度的方法在保持識別精度的同時,大幅提高了識別速度。結合這2 種方法得到的基于多尺度分割的圖像識別殘差網絡SSRNet,與其他網絡模型相比,在識別精度相近時識別速度更快。下一步將把該網絡模型應用到目標檢測領域中,并進一步加快識別速度。