吳 甜,劉海華,童順延
(中南民族大學(xué),湖北 武漢 430074)
圖像分類是根據(jù)不同類別信息在圖像中所反映的不同特征,把不同類別的目標(biāo)分開的圖像處理方法?;ɑ軋D像分類是計(jì)算機(jī)視覺研究的一個(gè)重要領(lǐng)域??焖俚刈詣幼R別花卉圖像可以給植物研究學(xué)家?guī)順O大便利。但由于花卉圖像種類繁多,類間差距甚微,同一種花卉在不同的生長時(shí)期也表現(xiàn)出不同的形態(tài),使得花卉圖像分類任務(wù)比其他類別(如汽車、貓狗、桌面等)的分類任務(wù)更難以很好進(jìn)行。目前花卉圖像分類方法主要有2 大類:基于傳統(tǒng)的手工提取特征分類方法和基于深度學(xué)習(xí)的分類方法。
基于傳統(tǒng)的手工提取特征的算法利用HOG、SIFT、Haar等特征描述符提取特征[1-3],并利用支持向量機(jī)(Support Vector Machine,SVM)、KNN 等分類器實(shí)現(xiàn)圖像分類[1,4-5]。由于基于傳統(tǒng)的手工提取特征的方法過程繁瑣,對噪聲敏感并且分類的效果并不理想,于是隨著最近幾年深度學(xué)習(xí)在提取圖像深層特征方面有很大突破,深度學(xué)習(xí)的方法就被廣泛應(yīng)用于圖像分類任務(wù)當(dāng)中。LeNet-5 是由Lecun 等人[6]在1998 年設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò),它是早期深度學(xué)習(xí)方法中最具代表性的算法模型之一。隨后,RNN[7]、AlexNet[8]、GoogleNet[9]、VGG[10]、ResNet[11]、DenseNet[12]等深度學(xué)習(xí)算法模型相繼涌現(xiàn)出來。RNN 擅長處理序列數(shù)據(jù),由于圖片與序列相差很大,所以它對圖片的處理效果并不理想,另外,RNN 也不能處理長期依賴的問題,這是RNN 最致命的。因此,針對RNN 的問題,在2016 年,ResNet 和DenseNet 相繼被提出,它們借鑒RNN 處理序列關(guān)聯(lián)性的特點(diǎn),用于處理圖片。ResNet發(fā)明了‘快捷連接’,解決了神經(jīng)網(wǎng)絡(luò)深度過大效果反而下降的問題。然而,在ResNet中,雖然網(wǎng)絡(luò)看起來很深,但實(shí)際起作用的網(wǎng)絡(luò)層數(shù)并不多,大部分網(wǎng)絡(luò)層都在解決模型退化和誤差過大的問題,但又不能完全解決網(wǎng)絡(luò)退化,只能做到相對的緩解。于是,DenseNet 在ResNet 的基礎(chǔ)上,做了進(jìn)一步改進(jìn),它把前面每一個(gè)卷積的輸出都“快捷連接”到后面各個(gè)卷積的輸出,加強(qiáng)特征的傳遞。另外,DenseNet通過特征在通道上的連接來實(shí)現(xiàn)特征重用,帶來了更快的收斂速度。但是,DenseNet在顯存和計(jì)算量上比ResNet 稍有不足,這使得實(shí)時(shí)模型想要用上DenseNet 比較難以實(shí)現(xiàn),這也是為什么DenseNet受到的關(guān)注度并不是很大的原因。
基于深度學(xué)習(xí)方法在圖像處理方面取得的優(yōu)異表現(xiàn),更多的研究者青睞于根據(jù)現(xiàn)有的網(wǎng)絡(luò)進(jìn)行改進(jìn)。2016 年 張 川[13]對ResNet 做 出 改 進(jìn) 提 出 將ResNet_ELU 用 于 圖 像 分 類。2017 王 麗 雯[14]基 于AlexNet構(gòu)建了一種深度網(wǎng)絡(luò)用于花卉識別。2019年高建瓴等人[15]提出了一種改進(jìn)的DenseNet 網(wǎng)絡(luò)模型,提高了圖像識別的準(zhǔn)確性。2020 年郭玉榮等人[16]提出了一種端到端雙通道特征重標(biāo)定DenseNet圖像分類方法。雖然應(yīng)用這些深度學(xué)習(xí)的方法對圖像的分類都取得了一定程度的成效,但仍存在各自的缺陷,并且以上的卷積神經(jīng)網(wǎng)絡(luò)模型沒有充分結(jié)合視覺感知特性,所以分類效果并不理想。
針對以上問題,本文針對圖像分類提出一種符合視覺感知的深度反饋卷積神經(jīng)網(wǎng)絡(luò)(DF-RNN-CNN)模型。該模型不僅解決了RNN 中存在的不能處理圖片和長期依賴的問題,還解決了上文提到的ResNet和DenseNet 中存在的問題。本文模型具體的實(shí)現(xiàn)是借鑒RNN 的思想,把t時(shí)刻卷積的輸入分為2 個(gè)部分的和,一部分為1~t-1 時(shí)刻每個(gè)卷積的輸出經(jīng)過激活函數(shù)后的和,另一部分為輸入圖片經(jīng)過卷積之后的特征圖。這就是本文提出的深度反饋循環(huán)神經(jīng)網(wǎng)絡(luò)(DF-RNN)。此種構(gòu)造方法可以避免丟失前面學(xué)習(xí)到的較好的特征,另外模型采用參數(shù)共享機(jī)制,很大程度地減少了計(jì)算量。最后把DF-RNN 連接到VGG16 的第一個(gè)Poolling 層,同時(shí)去掉VGG16 的前2個(gè)卷積層,構(gòu)成一個(gè)全新的卷積神經(jīng)網(wǎng)絡(luò)。
卷積神經(jīng)網(wǎng)絡(luò)由卷積層、池化層和激活層組成,并經(jīng)過多層次的疊加與交替可以實(shí)現(xiàn)對圖片進(jìn)行特征提取操作,完成對不同圖像的分類。本文模擬視覺神經(jīng)元的經(jīng)典感受野和反饋連接機(jī)制,構(gòu)建基于CNN結(jié)構(gòu)的深度反饋卷積神經(jīng)網(wǎng)絡(luò)模型。
在基于CNN 的網(wǎng)絡(luò)模型中,最典型的模型是由牛津大學(xué)幾何組(Visual Geometry Group)提出來的VGG16[10]。該模型具體有6個(gè)結(jié)構(gòu)塊,結(jié)構(gòu)塊與結(jié)構(gòu)塊之間用max-pooling(最大池化,2×2)分開,每個(gè)結(jié)構(gòu)塊由卷積層構(gòu)成,總共有16 個(gè)卷積層(含全連接層),用于完成圖像分類任務(wù)。在每一個(gè)結(jié)構(gòu)塊中通道數(shù)相同,而后一個(gè)結(jié)構(gòu)塊的卷積通道數(shù)是前一個(gè)結(jié)構(gòu)塊通道數(shù)的2倍。每個(gè)結(jié)構(gòu)塊里包含2個(gè)或3個(gè)卷積層,所有的卷積核都是3×3的大小,所有的激活函數(shù)都采用ReLU函數(shù)。該模型的詳細(xì)結(jié)構(gòu)如圖1所示。
圖1 VGG16模型結(jié)構(gòu)圖
本文提出的DF-RNN-CNN 網(wǎng)絡(luò)模型是在如圖1所示的VGG16 模型基礎(chǔ)上構(gòu)建的。其具體的工作是利用DF-RNN 模型代替VGG16 中的第一個(gè)結(jié)構(gòu)模塊,而其他結(jié)構(gòu)模塊不變。完整的DF-RNN-CNN 模型詳細(xì)結(jié)構(gòu)如圖2所示。
圖2 DF-RNN-CNN 模型結(jié)構(gòu)圖
RNN 是一種用來處理序列數(shù)據(jù)的網(wǎng)絡(luò)模型,與普通的神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)的主要不同在于隱藏層部分。RNN 的隱藏層除了接收來自上一層神經(jīng)元的信息外,它還會接收同一層神經(jīng)元之間的信息,這就是所稱的循環(huán)。由此可見,RNN 隱藏層的循環(huán)結(jié)構(gòu)使得RNN 具有一定的聯(lián)想記憶功能,其結(jié)構(gòu)如圖3 所示,其中左邊為簡約結(jié)構(gòu),右邊為展開形式。
圖3 循環(huán)神經(jīng)網(wǎng)絡(luò)
標(biāo)準(zhǔn)的RNN 由輸入層X,隱藏層h和輸出層y組成。網(wǎng)絡(luò)在t時(shí)刻的狀態(tài)ht不僅與t-1 時(shí)刻的網(wǎng)絡(luò)狀態(tài)ht-1,而且與Xt相關(guān);而網(wǎng)絡(luò)在t時(shí)刻的輸出yt由該時(shí)刻的網(wǎng)絡(luò)狀態(tài)決定。因此,RNN 網(wǎng)絡(luò)的狀態(tài)和輸出為:
其中,符號·代表矩陣乘運(yùn)算,V是輸出y的權(quán)重矩陣,U是輸入序列X的權(quán)重矩陣,W是上一時(shí)刻狀態(tài)ht-1的權(quán)重矩陣。在網(wǎng)絡(luò)中,所有的參數(shù)(V,U,W)都是一樣的,即參數(shù)共享。f和g都是激活函數(shù),在RNN 中f選雙曲正切函數(shù)tanh 作為激活函數(shù),g一般選softmax作為激活函數(shù)。
在標(biāo)注的RNN 模型中,通常處理的是一維矢量數(shù)據(jù)。然而,圖像是二維數(shù)據(jù),為了處理圖像序列,在RNN 網(wǎng)絡(luò)中引入CNN 中神經(jīng)元經(jīng)典感受野的概念,則RNN網(wǎng)絡(luò)的狀態(tài)和輸出為:
其中,符號*代表卷積運(yùn)算。
為了發(fā)揮RNN 模型的聯(lián)想記憶功能,有效地提取圖像的特征,可以用恒定的輸入圖像代替RNN 模型的輸入序列來完成該任務(wù)。然而,由于RNN 存在一個(gè)固有的問題,即在處理較長序列時(shí)會出現(xiàn)梯度現(xiàn)象。為了避免該問題,引入深度反饋重新構(gòu)建RNN模型,其系統(tǒng)框結(jié)構(gòu)在圖4(t=4)中給出了詳細(xì)描述,系統(tǒng)的狀態(tài)和輸出方程為:
圖4 DF-RNN模型的結(jié)構(gòu)(t=4)圖
其中,ht是t時(shí)刻的輸出特征,X是DF-RNN 模型的恒定輸入圖,U仍然是輸入的權(quán)重矩陣,W是狀態(tài)權(quán)重矩陣,U和W均采用參數(shù)共享機(jī)制,s是sigmoid 激活函數(shù),符號*表示卷積運(yùn)算,符號+表是矩陣相加運(yùn)算。
雖然大尺寸的卷積核可以擴(kuò)大感受野,但引用大尺寸的卷積核會增加計(jì)算量,所以該網(wǎng)絡(luò)模型全部采用3×3大小的卷積核進(jìn)行特征提取。
本文的實(shí)驗(yàn)數(shù)據(jù)采用公開的牛津大學(xué)視覺幾何組創(chuàng)建的Oxford flower-102 花卉圖像數(shù)據(jù)集。此數(shù)據(jù)集由102 類花卉圖像組成,總共包含8189 張圖片。本文實(shí)驗(yàn)每類隨機(jī)選用10 張作為驗(yàn)證集,另外再每類選取10張作為測試集,剩下的6149張作為訓(xùn)練集,訓(xùn)練集里面每類花卉由20~238 張圖片組成。由于不同種類的花卉圖像之間相似度很高,如圖5 所示,同一種類的花卉圖像的差別也很大,如圖6 所示,這就使得花卉圖像的識別任務(wù)具有較高難度。
圖5 english marigold(左)和barbeton(右)
圖6 snapdragon
在網(wǎng)絡(luò)開始訓(xùn)練前,由于花卉圖像類間相似度高,類內(nèi)差別大,數(shù)據(jù)數(shù)量小,所以在輸入訓(xùn)練集進(jìn)行訓(xùn)練之前要先對訓(xùn)練數(shù)據(jù)做數(shù)據(jù)增強(qiáng)處理,以達(dá)到擴(kuò)充訓(xùn)練數(shù)據(jù)、有效減少網(wǎng)絡(luò)過擬合、增加網(wǎng)絡(luò)的識別能力、提高網(wǎng)絡(luò)的泛化能力等目的。采用數(shù)據(jù)增強(qiáng)的方法有:水平、豎直翻轉(zhuǎn),錯(cuò)切變換和放大。
在對訓(xùn)練集做完數(shù)據(jù)增強(qiáng)之后,接著對所有的數(shù)據(jù)圖片,即數(shù)據(jù)增強(qiáng)后的訓(xùn)練集、原始的驗(yàn)證集和測試集做圖像預(yù)處理。首先對圖片像素做歸一化處理,把原始0~255 的像素歸一化到0~1 之間,以達(dá)到減少網(wǎng)絡(luò)的計(jì)算量,簡化網(wǎng)絡(luò)輸入的目的。第二由于所有圖片的大小不一,將所有圖片統(tǒng)一縮放到224×224 大小,以完成網(wǎng)絡(luò)統(tǒng)一化輸入的要求。
本文所進(jìn)行的實(shí)驗(yàn)在中南民族大學(xué)視覺認(rèn)知科學(xué)實(shí)驗(yàn)室完成,實(shí)驗(yàn)軟硬件環(huán)境配置如表1所示。
表1 實(shí)驗(yàn)軟硬件環(huán)境
為了驗(yàn)證DF-RNN模塊的有效性,將本文方法分別與殘差網(wǎng)絡(luò)的殘差塊和密集網(wǎng)絡(luò)的密集塊做對比實(shí)驗(yàn)。將DF-RNN模塊分別替換成2個(gè)殘差塊和1個(gè)密集塊,在各自參數(shù)最優(yōu)的條件下進(jìn)行網(wǎng)絡(luò)訓(xùn)練并測試。殘差塊與密集塊的結(jié)構(gòu)如圖7所示。
圖7 殘差塊(左)和密集塊(右)結(jié)構(gòu)圖
本文實(shí)驗(yàn)選用Adam 作為優(yōu)化器,學(xué)習(xí)率設(shè)置為0.00001,訓(xùn)練迭代次數(shù)為900。為了定量地分析本網(wǎng)絡(luò)模型的性能并且與其他文獻(xiàn)所采用的方法做比較,采用Accuracy(Acc)作為評價(jià)指標(biāo),該評價(jià)指標(biāo)的計(jì)算公式為:
其中,right表示分類正確的樣本數(shù),all表示樣本總數(shù),Acc越大表示分類的準(zhǔn)確率越高,網(wǎng)絡(luò)的性能越好。
此外因?yàn)楸疚膶?shí)驗(yàn)是多分類實(shí)驗(yàn),所以選用多分類交叉熵(categorical_crossentropy)作為損失函數(shù),其定義公式為:
多分類交叉熵?fù)p失函數(shù)一般搭配Softmax 激活函數(shù)使用,其中n為類別數(shù)量,yi是其真實(shí)值為其實(shí)際輸出值,當(dāng)實(shí)際輸出值越接近真實(shí)值時(shí),多分類交叉熵越小,分類結(jié)果越好。圖8 是驗(yàn)證集在訓(xùn)練過程中的損失函數(shù)loss 值隨著訓(xùn)練輪數(shù)增加的曲線變化圖,訓(xùn)練輪數(shù)達(dá)到900的時(shí)候,loss值為1.01,此時(shí)loss曲線已趨近平穩(wěn),表明模型已有較好的分類性能,模型訓(xùn)練結(jié)束。
圖8 loss隨epoch增加的變化圖
一般而言,卷積層越多,網(wǎng)絡(luò)獲取的信息越多,特征也越豐富,但實(shí)驗(yàn)表明,隨著網(wǎng)絡(luò)加深,優(yōu)化效果反而會越差,并且網(wǎng)絡(luò)的訓(xùn)練會變得越來越困難,而卷積層過少,網(wǎng)絡(luò)提取特征的能力就會下降。本文實(shí)驗(yàn)綜合以上問題,并且考慮到本實(shí)驗(yàn)數(shù)據(jù)集規(guī)模較小,如果DF-RNN 中的t一直增大的話,整體的網(wǎng)絡(luò)預(yù)測的效果反而會降低,會出現(xiàn)過擬合現(xiàn)象,經(jīng)過多次實(shí)驗(yàn)證明,t=4 的時(shí)候是效果最好的。表2 是當(dāng)t取不同值時(shí)得到的實(shí)驗(yàn)結(jié)果。
表2 t取不同值時(shí)的實(shí)驗(yàn)結(jié)果
從表2 中可以看出,當(dāng)t取2~4 的時(shí)候,網(wǎng)絡(luò)整體的性能是上升的,到t=5 的時(shí)候開始下降,因此最終選取了t的值為4。
為了驗(yàn)證本文網(wǎng)絡(luò)模型的有效性,做了3 組對比實(shí)驗(yàn)。一是原始的VGG16 網(wǎng)絡(luò),另外2 個(gè)是將DFRNN 模塊分別替換成2 個(gè)殘差塊和1 個(gè)密集塊。這些實(shí)驗(yàn)都是在相同的數(shù)據(jù)集、相同的數(shù)據(jù)處理方法和相同的實(shí)驗(yàn)軟硬件環(huán)境下進(jìn)行的。實(shí)驗(yàn)結(jié)果見表3。
表3 不同模塊的實(shí)驗(yàn)結(jié)果比較表
從表3 中可以看出,本文提出的DF-RNN-CNN與原始的VGG16 相比,對花卉的識別率提升了9.6 個(gè)百分點(diǎn),表明DF-RNN 模塊的有效性。把DF-RNN模塊換成密集塊與殘差塊后,對花卉的識別準(zhǔn)確率都有不同程度的下降,分別下降了8.8個(gè)百分點(diǎn)和5.3個(gè)百分點(diǎn),表明DF-RNN模塊的構(gòu)造方式可以學(xué)習(xí)到更多的淺層特征,并把學(xué)習(xí)到的淺層特征傳遞到深層加以利用,實(shí)現(xiàn)特征復(fù)用。因此,本文提出的DF-RNN比密集塊和殘差塊的構(gòu)造方式更加強(qiáng)大,具有更好的分類效果。
另外本文實(shí)驗(yàn)還與傳統(tǒng)的花卉圖像分類模型和其他基于深度學(xué)習(xí)的花卉圖像分類模型的實(shí)驗(yàn)結(jié)果進(jìn)行對比。實(shí)驗(yàn)結(jié)果見表4和表5。
表4 本文模型與傳統(tǒng)花卉圖像分類模型實(shí)驗(yàn)結(jié)果比較表
表5 本文模型與基于深度學(xué)習(xí)的花卉圖像分類模型實(shí)驗(yàn)結(jié)果比較表
從表4可以看出,傳統(tǒng)分類模型方法對花卉的識別率較低,主要是因?yàn)槭止ぬ崛〉奶卣鲗τ诓煌悇e的花卉的通用性較差,適用于某一類花卉的特征不適合另一類,而且本文實(shí)驗(yàn)數(shù)據(jù)集類別一共有102類,要想手工提取到通用的特征非常難,而且工作量也非常繁重。綜上分析,本文方法可以取得較高的分類準(zhǔn)確率。
從表5 可以看出,本文構(gòu)造的分類網(wǎng)絡(luò)優(yōu)于其他基于深度學(xué)習(xí)方法構(gòu)造的網(wǎng)絡(luò)。與其他方法相比,本文方法最高提高了15.8 個(gè)百分點(diǎn),顯示本文建議的DF-RNN 網(wǎng)絡(luò)實(shí)現(xiàn)的聯(lián)想記憶功能與淺層特征重復(fù)利用方法對整個(gè)網(wǎng)絡(luò)的分類能力起到了極大的作用,表明本文方法具有更好的實(shí)用性。
本文卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)是在VGG16 的基礎(chǔ)上進(jìn)行改進(jìn)的,把VGG16 的第一個(gè)結(jié)構(gòu)塊替換成符合人眼視覺感知特性的DF-RNN 模塊,此模塊結(jié)合RNN 的特性,首先采用參數(shù)共享機(jī)制,減少網(wǎng)絡(luò)的計(jì)算量;其次添加記憶連接,一定程度上防止了其丟失網(wǎng)絡(luò)底層學(xué)到的重要的特征信息,改善了RNN 短時(shí)記憶的缺陷,具備一定的長時(shí)記憶的功能。本文實(shí)驗(yàn)結(jié)果表明加入了具有符合人眼視覺感知特性的DFRNN模塊的VGG網(wǎng)絡(luò)對花卉的識別率高于其他網(wǎng)絡(luò),達(dá)到86.8%。但DF-RNN模塊對于人眼視覺感知系統(tǒng)來說還是過于簡單,如何設(shè)計(jì)一種完全符合人眼視覺感知特性的卷積神經(jīng)網(wǎng)絡(luò)是今后進(jìn)一步研究的方向。