季長清,高志勇,秦 靜,汪祖民*
(1.大連大學(xué)物理科學(xué)與技術(shù)學(xué)院,遼寧大連 116622;2.大連大學(xué)信息工程學(xué)院,遼寧大連 116622;3.大連大學(xué)軟件工程學(xué)院,遼寧大連 116622)
近年來伴隨著深度學(xué)習(xí)的興起,計算機(jī)視覺所覆蓋的諸多領(lǐng)域逐步進(jìn)入人們的視野和應(yīng)用,其中圖像識別技術(shù)相關(guān)的研究和應(yīng)用進(jìn)展較為突出。追溯自20 世紀(jì)中葉開始,圖像分類技術(shù)在計算機(jī)視覺領(lǐng)域便取得了長足的發(fā)展,而最近幾年在人工神經(jīng)網(wǎng)絡(luò)的大發(fā)展背景下,基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的圖像分類技術(shù)在智能數(shù)據(jù)采集和高效處理中也取得了較好的效果。
眾所周知圖像分類技術(shù)在互聯(lián)網(wǎng)應(yīng)用的諸多領(lǐng)域有著良好的應(yīng)用前景,例如:航空遙感和海洋遙感圖像的分析以及人臉識別等。早期的圖像識別分類技術(shù)大都是把人作為設(shè)計特征的對象。對于不同的識別場景,大多數(shù)應(yīng)用的特征需要由相應(yīng)的專家人為地進(jìn)行識別。其原理主要依靠的是設(shè)計者的先驗知識,然后再根據(jù)特定的數(shù)據(jù)類型和領(lǐng)域特性進(jìn)行人為的手工編碼,這樣做將很難進(jìn)行海量數(shù)據(jù)的處理,存在效率極其低下等瓶頸問題。另外人為特征的設(shè)計只支持有限參數(shù)量,提取的特征會直接影響系統(tǒng)的性能,很可能導(dǎo)致實(shí)驗結(jié)果不理想。在當(dāng)今大數(shù)據(jù)時代,通過人工進(jìn)行數(shù)據(jù)提取特征并不合適。新型的基于深度學(xué)習(xí)和CNN的方法可以通過自動執(zhí)行提取和自我學(xué)習(xí)特征,有效地減少開發(fā)和優(yōu)化新特征提取器的任務(wù)。本文將從CNN 結(jié)構(gòu)的深度化、模塊化的角度給出圖1 中幾種不同的網(wǎng)絡(luò)模型的發(fā)展歷程。
圖1 深度神經(jīng)網(wǎng)絡(luò)模型發(fā)展歷程Fig.1 Development history of deep neural network model
20 世紀(jì)80 年代,因為多層感知機(jī)模型被提出,計算機(jī)在數(shù)字識別方面表現(xiàn)出出色的處理能力,但由于當(dāng)時受限于計算機(jī)能力,尤其是CPU 和存儲等資源的處理能力,使能夠處理的數(shù)據(jù)規(guī)模較小、模型表達(dá)能力一般,通常不能處理復(fù)雜的圖片問題。2006 年Hinton 等提出了對網(wǎng)絡(luò)模型進(jìn)行逐層預(yù)訓(xùn)練的算法,通過增加人工神經(jīng)網(wǎng)絡(luò)的層數(shù),使得具有多隱藏層的人工神經(jīng)網(wǎng)絡(luò)具備了強(qiáng)大的特征學(xué)習(xí)能力。他們通過訓(xùn)練具有小中心層的多層神經(jīng)網(wǎng)絡(luò)來重構(gòu)高維的輸入向量,通過編碼降維,有效地降低了神經(jīng)網(wǎng)絡(luò)的深層次訓(xùn)練難度。除此之外,另有研究者使用支持向量機(jī)以克服訓(xùn)練深度CNN 所遇到的部分困難。其后,深度學(xué)習(xí)的概念和CNN 的迅速發(fā)展受到了研究人員的廣泛關(guān)注。21 世紀(jì)初期,谷歌和微軟等諸多互聯(lián)網(wǎng)技術(shù)公司紛紛投入大量人力、物力進(jìn)行大規(guī)模深度學(xué)習(xí)系統(tǒng)的研發(fā)與商用。
卷積運(yùn)算作為一個多層的前饋神經(jīng)網(wǎng)絡(luò)模型,它的網(wǎng)絡(luò)結(jié)構(gòu)特征在于每一層中都單獨(dú)使用一組卷積核,其有助于從局部相關(guān)的數(shù)據(jù)點(diǎn)中提取有用的特征。在訓(xùn)練過程中,CNN通過反向傳播算法來進(jìn)行學(xué)習(xí)。這種反向傳播算法優(yōu)化后的目標(biāo)函數(shù)采用了一種基于響應(yīng)的類人腦學(xué)習(xí)機(jī)制。反向傳播算法和CNN 的不斷成功,使得人工智能領(lǐng)域進(jìn)入了新的發(fā)展階段。
在處理復(fù)雜的學(xué)習(xí)問題時,深度架構(gòu)取得的效果通常比淺層架構(gòu)更好,尤其是LeNet 卷積神經(jīng)網(wǎng)絡(luò)模型在Minst 數(shù)據(jù)集上的優(yōu)異表現(xiàn)之后,又相繼出現(xiàn)了AlexNet、VGG、GoogLeNet、ResNet和MobileNet等相關(guān)網(wǎng)絡(luò)模型,它們在醫(yī)療圖像處理、實(shí)例分割等領(lǐng)域中均獲得了廣泛的應(yīng)用。
CNN 仿照生物的神經(jīng)網(wǎng)絡(luò),采用了核心的權(quán)重共享網(wǎng)絡(luò)結(jié)構(gòu),使其可以通過改變網(wǎng)絡(luò)的深度和寬度來進(jìn)行調(diào)整網(wǎng)絡(luò)模型量級。本章將對流行的深度神經(jīng)網(wǎng)絡(luò)模型的部分代表性的組件進(jìn)行歸納與總結(jié)。
CNN 模型對自然圖像有很強(qiáng)的假設(shè)性,即統(tǒng)計平滑性和局部相關(guān)性。卷積操作可以有效降低網(wǎng)絡(luò)模型的學(xué)習(xí)復(fù)雜度,使網(wǎng)絡(luò)連接和權(quán)重參數(shù)更少,這使得它比同規(guī)模的全連接網(wǎng)絡(luò)更容易訓(xùn)練。常見的卷積操作有以下四種:普通卷積、轉(zhuǎn)置卷積、擴(kuò)張卷積和深度可分離卷積。
普通卷積是利用卷積核在圖像上滑動,經(jīng)過一系列的矩陣運(yùn)算最終完成所有圖像像素灰度值計算的過程;轉(zhuǎn)置卷積實(shí)現(xiàn)了與普通卷積反向的采樣操作,被廣泛地運(yùn)用于語義分割、圖像識別等領(lǐng)域;擴(kuò)張卷積又稱空洞卷積、膨脹卷積,就是將空洞注入卷積核之中,這樣做的目的就是增加模型的感受野,以此來進(jìn)行更好的特征提取,擴(kuò)張卷積在圖像識別等任務(wù)中取得了較好的表現(xiàn)性能;深度可分離卷積也被擴(kuò)展用于輕量級的網(wǎng)絡(luò)模型MobileNet,與普通卷積方式相比,大幅地減少了網(wǎng)絡(luò)模型運(yùn)算時所需要的參數(shù),最為重要的是深度可分離卷積實(shí)現(xiàn)了普通卷積操作中通道和區(qū)域的分離。卷積方式的改進(jìn),在一定程度上緩解了特征提取上的問題。
1943 年,心理學(xué)家McClloch 等基于神經(jīng)元的生理特征,建立了單個神經(jīng)元的數(shù)學(xué)模型,模型中提到了激活函數(shù)(Activation function)的概念。激活函數(shù)的應(yīng)用增加了神經(jīng)網(wǎng)絡(luò)模型的非線性。常用的激活函數(shù)有線性整流函數(shù)(Rectified Linear Unit,ReLU)、隨機(jī)線性整流函數(shù)(Randomized ReLU,RReLU)、指數(shù)線性函數(shù)(Exponential Linear Unit,ELU)等。ReLU 是最顯著的非飽和激活函數(shù)之一,如圖2 所示,其數(shù)學(xué)表達(dá)式如下:
圖2 ReLU函數(shù)Fig.2 ReLU function
盡管ReLU 為0 時的不連續(xù)性可能會損害反向傳播的性能,仍有研究表明ReLU 比Sigmoid 和tanh 激活函數(shù)更有效。
梯度下降是一種用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的簡單方法,但需要人為地進(jìn)行參數(shù)選擇,導(dǎo)致研究者很多的時間都浪費(fèi)在不確定的調(diào)參工作中。2015 年谷歌團(tuán)隊提出了歸一層(Batch Normalization,BN)的構(gòu)想。利用該方法可以使研究者選擇較大的學(xué)習(xí)率,讓模型在訓(xùn)練速度增長很快的同時,也讓模型具有快速收斂性。
ε
是為了避免被零除,用于增加數(shù)值穩(wěn)定性;可學(xué)習(xí)的參數(shù)β
和γ
用于將數(shù)據(jù)調(diào)整到一個合理的分布范圍內(nèi)。池化層是當(dāng)前CNN 中常用組件之一,自AlexNet 一文之后采用Pooling 命名。池化層通過模仿人的視覺系統(tǒng)對數(shù)據(jù)進(jìn)行降維,利用更高層次特征來表示圖像。
池化層可以非常有效地縮小矩陣的尺寸,即可以對圖像的局部區(qū)域中的不同位置的特征執(zhí)行集合統(tǒng)計操作,從而緩解卷積層對圖像位置的過度敏感性,減少最后全連接層中的參數(shù),加快計算速度。
實(shí)踐中最常用的池化方式為Max Pooling、Average Pooling和Spatial Pyramid Pooling等。池化操作除了降低模型計算量、降低信息冗余以外,也在不同程度上提高了模型的尺度不變性和旋轉(zhuǎn)不變性,有效地防止了過擬合。各種池化方式的改進(jìn)也更好地實(shí)現(xiàn)了特征壓縮、特征提取,大幅地減少了模型訓(xùn)練所需要的時間。
基于深度學(xué)習(xí)的CNN 可用于圖像的識別分類。該方法從大量數(shù)據(jù)中自動學(xué)習(xí)特征用來提高模式識別系統(tǒng)的性能。目前常規(guī)圖像分類網(wǎng)絡(luò)的方法大多直接采用常見的深度卷積網(wǎng)絡(luò)來直接進(jìn)行圖像分類,比如AlexNet、VGG、GoogleNet、ResNet以 及MobileNet等,它們曾在ImageNet 大規(guī)模視覺識別挑戰(zhàn)賽(Imagenet Large Scale Visual Recognition Challenge,ILSVRC)上證明自己的應(yīng)用價值。本章將介紹經(jīng)典的網(wǎng)絡(luò)模型。
LeCun 等于1998年提出歷史上第一個CNN方法LeNet-5 并進(jìn)行改進(jìn),被用于手寫數(shù)字的識別。LeNet-5 定義了CNN 的基本結(jié)構(gòu),其可看作是卷積網(wǎng)絡(luò)模型的鼻祖。LeNet-5 用較少的參數(shù)在多個位置提取相似特征,這不僅能減少可學(xué)習(xí)參數(shù)的數(shù)量,而且能夠自動從原始像素中學(xué)習(xí)特征。它能夠在不受小失真影響的情況下對手寫數(shù)字進(jìn)行分類,當(dāng)時的很多銀行將其用來識別支票上面的手寫數(shù)字。LeNet-5 網(wǎng)絡(luò)模型共有7 層,如圖3 所示,分別是C1 卷積層、S2 池化層、C3 卷積層、S4 池化層、C5 卷積層、F6 全連接層、輸出層。
圖3 LeNet-5模型的結(jié)構(gòu)Fig.3 Structure of LeNet-5 model
AlexNet可以被稱為第一個現(xiàn)代深度卷積網(wǎng)絡(luò)模型,首次使用了很多現(xiàn)代深度卷積網(wǎng)絡(luò)技術(shù)。它是由Hinton 研究組于2012 年在Large Scale Visual Recognition Challenge 中提出的一種模型。他們?nèi)〉昧水?dāng)年的最好成績,以15.3%的錯誤率拿到第一名,比第二名算法(26.1%)的錯誤率降低了10.8 個百分點(diǎn)。其主要貢獻(xiàn)在于:1)首次使用多GPU 進(jìn)行并行訓(xùn)練,克服了硬件限制深度CNN 架構(gòu)學(xué)習(xí)能力的缺陷;2)采用ReLU 作為非線性激活函數(shù),緩解了梯度消失問題,提高了網(wǎng)絡(luò)模型的收斂速度;3)使用Dropout 層防止過擬合。圖4 展示了全連接層與Dropout 層的區(qū)別;4)通過參數(shù)優(yōu)化策略增強(qiáng)CNN 學(xué)習(xí)能力。
圖4 全連接層與Dropout層原理模型Fig.4 Principle model of fully connected layer and Dropout layer
重疊二次采樣和局部響應(yīng)歸一化也被用于減少過擬合來提高泛化能力。以上諸多優(yōu)點(diǎn)使卷積網(wǎng)絡(luò)模型具有高效的學(xué)習(xí)能力,并讓它在新一代CNN 中具有重要意義。
stride
=1、padding
=1 的卷積核,相較于AlexNet 中11×11、5×5、3×3 的卷積核,它的參數(shù)量更少,計算代價更低。3)VGG 卷積網(wǎng)絡(luò)模型使用了幾個小卷積核(3×3)的組合,這比使用一個大卷積核(5×5、11×11)的卷積層要好。因為小尺寸卷積核的使用減少了參數(shù)的數(shù)量,提供了低計算復(fù)雜度的額外好處。同時它驗證了通過不斷加深網(wǎng)絡(luò)結(jié)構(gòu)可以提高性能。雖然VGG 在圖像分類問題上展現(xiàn)出良好的結(jié)果,但是它使用了較多的參數(shù),耗費(fèi)了較多的計算資源,導(dǎo)致其在低資源系統(tǒng)上部署困難,這迫切需要研究新的算法和開發(fā)新的并行計算系統(tǒng)。
GoogLeNet是谷歌團(tuán)隊于2014 年 在Large Scale Visual Recognition Challenge 上提出的一種模型。GoogLeNet 與VGG都有很深的網(wǎng)絡(luò)層數(shù)。雖然GoogLeNet 有22 層之多,但它的參數(shù)量只有500 萬,AlexNet 的參數(shù)量是GoogLeNet 的15 倍,VGG 的參數(shù)量是GoogLeNet 的3 倍;所以在計算機(jī)硬件資源有限的情況下,GoogLeNet 是用于圖像分類的一個比較好的選擇。進(jìn)一步提升卷積網(wǎng)絡(luò)性能的直接方法是加深網(wǎng)絡(luò)的深度、寬度,但是這樣做存在很多問題,比如:1)由于參數(shù)過多,若是在訓(xùn)練數(shù)據(jù)集有限的情況下,很容易產(chǎn)生過擬合,而采用大數(shù)據(jù)集則會產(chǎn)生高成本;2)網(wǎng)絡(luò)模型越大、參數(shù)越多,計算復(fù)雜度越大,越難應(yīng)用;3)深層網(wǎng)絡(luò),容易出現(xiàn)梯度彌散的問題,難以優(yōu)化。
谷歌的研究團(tuán)隊提出了Inception(初始模塊)的概念,用以構(gòu)造基礎(chǔ)神經(jīng)元,搭建一個稀疏的高性能計算的網(wǎng)絡(luò)結(jié)構(gòu)。如圖5 所示,在這個CNN 中,一個卷積層包含多個不同大小的卷積操作,它能夠產(chǎn)生稠密的數(shù)據(jù),也保證了計算資源的使用效率。繼最初的Inception V1 模塊之后,Google 相繼給出了Inception V2、Inception V3、Inception V4等模塊結(jié)構(gòu),其改進(jìn)再次取得了長足的進(jìn)步。另外它使用稀疏連接,用以解決冗余信息的問題,并通過省略不相關(guān)的特征圖來降低成本。最后GoogLeNet 網(wǎng)絡(luò)模型使用全局平均池化來降低連接密度,而不是使用全連接層。
圖5 Inception模塊概念模型Fig.5 Inception module conceptual model
f
(x,m
)去逼近一個目標(biāo)函數(shù)H
(x
),將目標(biāo)函數(shù)拆分成兩部分:恒等函數(shù)和殘差函數(shù)。H
(x
)=x
+f
(x
,m
) (6)其中:H
(x
)為殘差模塊;x
為恒等函數(shù);f
(x,m
)為殘差函數(shù)。其原理如圖6 所示。圖6 殘差模塊結(jié)構(gòu)Fig.6 Residual module structure
嵌入式設(shè)備不能采用復(fù)雜龐大的模型,如何研究小而高效的卷積網(wǎng)絡(luò)模型非常重要。Google 團(tuán)隊在2017 年提出了MobileNet,它是專注于移動端或者嵌入式設(shè)備中的輕量級CNN。隨后2018 年Google 提出了MobileNet V2,2019 年Google提出了MobileNet V3。相較于傳統(tǒng)的CNN,MobileNet V3 在犧牲小幅度準(zhǔn)確率的前提下,使得模型參數(shù)量大幅減少。在ImageNet 上的測試結(jié)果表明,相較于VGG-16 模型,其準(zhǔn)確率減少了0.9%,但它的模型參數(shù)只有VGG-16 模型的3.1%。MobileNet 采用深度可分離卷積層,如圖7所示,即首先對特征圖的各通道進(jìn)行逐深度卷積(Depthwise Convolution),然后進(jìn)行逐點(diǎn)1×1卷積(Pointwise Convolution),以達(dá)到縮小計算量和模型參數(shù)量的目的。
圖7 深度可分離卷積層結(jié)構(gòu)Fig.7 Deep separable convolution layer structure
利用深度CNN 去處理圖像是目前熱門研究方向之一。本文總結(jié)了CNN 的發(fā)展,討論了CNN 的部分模型。但CNN仍然面對著以下幾個問題:
1)從理論上講,將CNN 應(yīng)用于新領(lǐng)域的一個關(guān)鍵問題是,需要很多先前的實(shí)踐經(jīng)驗來選擇合適的超參數(shù),這些超參數(shù)具有內(nèi)部依賴性,這使得它們的調(diào)整成本特別高。如何更好地處理這些參數(shù)仍然是個問題。
2)從應(yīng)用上講,網(wǎng)絡(luò)模型對硬件計算能力、大規(guī)模數(shù)據(jù)的依賴性、訓(xùn)練模型的動態(tài)適應(yīng)能力等都是目前迫切需要解決的問題。
CNN 和深度學(xué)習(xí)總體上仍然是活躍的研究領(lǐng)域,在未來仍有許多學(xué)習(xí)的潛力值得探索研究和挖掘。另外,在圖像識別領(lǐng)域后來也出現(xiàn)了新的研究方法與思路。比如Transformer模型結(jié)構(gòu),有很多工作者試圖把Transformer 模型引入到圖像中去。比如嘗試在CNN 中引入Transformer 的自注意力機(jī)制,或者直接用Transformer 模型結(jié)構(gòu)替換卷積塊。這些嘗試也都取得了較好的成績,比如DeiT、Pyramid Vision Transformer、Swin Transformer網(wǎng)絡(luò)等。除了上述研究思路外,將深度學(xué)習(xí)與強(qiáng)化學(xué)習(xí)結(jié)合應(yīng)用于圖像分類領(lǐng)域也是未來的重要研究方向之一。