劉羿漩,齊振嶺,董苗苗,梁允泉,葛廣英
(1.聊城大學 物理科學與信息工程學院 山東省光通信科學與技術(shù)重點實驗室,山東 聊城 252059;2.聊城大學 物理科學與信息工程學院,山東 聊城 252059;3.聊城大學 計算機學院,山東 聊城 252059)
隨著計算機與互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,計算機視覺技術(shù)的應用在日常生活中無處不在,深度學習算法可以應用于圖像分類[1-3]、缺陷檢測[4-7]等領(lǐng)域。在非遺文化的數(shù)字化保護領(lǐng)域,信息技術(shù)可將非遺文化遺產(chǎn)轉(zhuǎn)換、再現(xiàn)或復原成為一種可共享、可再生的數(shù)字形態(tài),并以全新的方式加以保存利用。韓美群等[8]對比了近20年內(nèi)國內(nèi)外學者在非遺數(shù)字化傳承方面的研究結(jié)果,并且提出在新時代信息技術(shù)高速發(fā)展的階段應當增強數(shù)字技術(shù)在高質(zhì)量文化供給上的支撐作用。在中國眾多非遺文化中,中華傳統(tǒng)刺繡可按地區(qū)、工藝以及加工特點等標準分為不同種類,進而使用在不同的場合,而區(qū)分不同刺繡種類的過程通常相當繁瑣復雜且需要大量掌握相關(guān)專業(yè)知識的人力成本與時間成本,所以可以運用深度學習算法實現(xiàn)刺繡的批量分類。楊蕾等[9]提出一種能夠?qū)⒗C品針法紋樣特征進行提取和匹配的方法,構(gòu)建了一種以導向濾波作為尺度變換函數(shù)的特征提取模型,匹配準確率高達88%。周澤聿等[10]通過對Xception模型全連接層的層數(shù)和dropout等參數(shù)進行微調(diào)并探討了不同參數(shù)對結(jié)構(gòu)的影響,提出了一種基于Xception-TD的中華傳統(tǒng)刺繡分類模型,該模型的準確率高達96.86%,且在刺繡多分類的問題上準確率也優(yōu)于基準模型。
圖像處理是深度學習算法最早嘗試應用的領(lǐng)域,其中卷積神經(jīng)網(wǎng)絡 (convolutional neural network,CNN)[11]是深度學習的代表算法之一。1989年加拿大多倫多大學教授Yann LeCun提出了首個卷積神經(jīng)網(wǎng)絡LeNet。后來隨著硬件水平提升。2012年10月,Hinton教授以及他的學生采用更深的卷神經(jīng)網(wǎng)絡模型AlexNet在著名的大規(guī)模數(shù)據(jù)集視覺識別比賽(ImageNet large scale visual recognition challenge,ILSVRC)上取得了第一名且效果遠超第二名,AlexNet網(wǎng)絡的高性能使得圖像識別的領(lǐng)域研究更進一步。隨后,VGGNet在2014年的 ILSVRC比賽中,贏得了定位任務的冠軍,在分類任務中排名第二。但AlexNet、VGGNet等模型主要通過增加卷積神經(jīng)網(wǎng)絡的深度以達到更好的分類效果,網(wǎng)絡層數(shù)增加的同時也帶來了梯度消失、過擬合、梯度爆炸等問題。2014年面世的GoogleNet網(wǎng)絡使用1×1卷積核進行降維以及映射處理,引入了Inception結(jié)構(gòu)以融合不同尺度特征信息[12]。在2015年的ILSVRC比賽中,ResNet利用一種稱為Shortcut Connection結(jié)構(gòu)來跳過網(wǎng)絡的某些層,以3.57%的top5錯誤率贏得了冠軍[13]?;赗esNet模型訓練生成的網(wǎng)絡中存在層貢獻很少的局限性,Liu等于2017年提出了DenseNet,使用了跨層連接及以前饋方式,每個層都會接受前面所有層作為其額外的輸入[14]。相較于ResNet,DenseNet旁路加強了特征的重用且具有更少的參數(shù)量。Google公司在2017年提出了MobileNet,它是一種小巧而高效的CNN模型,優(yōu)點在于提出了深度可分離卷積,降低了計算量和參數(shù)量[15],使卷積神經(jīng)網(wǎng)絡更易部署到移動端。2020年,Google公司提出了EfficientNet模型[16],該模型是一個快速高精度模型,它使用了深度(depth)、寬度(width)、輸入圖片分辨率(resolution)共同調(diào)節(jié)技術(shù)。卷積神經(jīng)網(wǎng)絡的優(yōu)勢在于無需進行人為的特征提取,近些年卷積神經(jīng)網(wǎng)絡推動了很多行業(yè)的發(fā)展,本文將卷積神經(jīng)網(wǎng)絡算法應用到刺繡分類問題上并對比分析結(jié)果。
本文對比了Googlenet、Resnet、DenseNet、MobileNet以及EfficientNet共5種常用的經(jīng)典CNN模型在中華傳統(tǒng)刺繡分類數(shù)據(jù)集上的表現(xiàn)后,選擇基于DenseNet模型進行改進,采用SPP(spatial pyramid pooling)模塊[19]加快損失收斂,穩(wěn)定算法訓練過程,通過修改激活函數(shù)提高模型精度,然后采用局部二值模式LBP[17-18]、Canny算子邊緣提取以及Gabor濾波等方式提取紋理特征,與原圖合并成四至六通道圖像作為卷積神經(jīng)網(wǎng)絡的輸入進行訓練,擴充數(shù)據(jù)寬度,便于算法提取特征,進一步提升刺繡分類的識別準確率。
DenseNet卷積神經(jīng)網(wǎng)絡模型是由Huang等在2017年提出[14],該網(wǎng)絡借鑒了ResNet結(jié)構(gòu),即建立前面層與后面層的連接,利于梯度反向傳播和訓練更深層次網(wǎng)絡。DenseNet模型能夠?qū)崿F(xiàn)特征重復使用,減輕了梯度消失問題,減少參數(shù)量并提高特征的傳播率和利用率。DenseNet卷積神經(jīng)網(wǎng)絡模型中的密集連接塊DenseBlock比ResNet的連接機制更為激進,所有層之間互相連接,每個層的額外輸入包括了前面的所有層,在DenseBlock內(nèi)特征圖大小統(tǒng)一,所有層互相連接以使每一層能夠接受前面所有層中的特征,加強特征重用。
假設(shè)H(·)“表示卷積神經(jīng)網(wǎng)絡的非線性效應,其中包括卷積、池化以及激活等多種操作的組合。傳統(tǒng)CNN網(wǎng)絡經(jīng)過第i層后得到的輸出xi的計算方式如式(1)所示:
xi=Hi(xi-1)
(1)
對ResNet卷積神經(jīng)網(wǎng)絡模型來說,第i層的輸出xi的計算方式如式(2)所示:
xi=Hi(xi-1)+xi-1
(2)
對DenseNet卷積神經(jīng)網(wǎng)絡模型來說,第i層的輸出xi將連接第i層之前所有的層作為輸入,則第i層的輸出xi的計算方式如式(3)所示:
xi=Hi([xi-1,…,x2,x1,x0])
(3)
式(3)中的非線性效應Hi(·)為歸一化(batch normalization,BN)操作。DenseBlock結(jié)構(gòu)連接方式如圖1所示。
圖1 DenseBlock結(jié)構(gòu)圖
由圖1可知DenseNet模型的前向傳播方式是比ResNet模型更為密集的連接,各個層的特征圖在通道維度上連接在一起使整個網(wǎng)絡更易訓練。
1.2.1 SPP結(jié)構(gòu)
為解決圖像分類任務中輸入圖像尺寸限制問題,2015年,He等[20]提出金字塔池化(spatial pyramid pooling,SPP)結(jié)構(gòu),若要使卷積神經(jīng)網(wǎng)絡適應不同尺寸的輸入圖片,文獻[20]提出了在卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)后面引入SPP結(jié)構(gòu)。
具體操作為最后一層卷積層和全連接層前加入SPP結(jié)構(gòu),對通過最后一層卷積的多層特征圖進行通道調(diào)整,本文將每個特征圖按16×16,4×4以及1×1不同大小劃分為不同尺寸的網(wǎng)格,然后對每個網(wǎng)格進行最大池化(Max pooling)操作,然后經(jīng)過拼接通道將特征圖轉(zhuǎn)化為固定長度的特征向量,使其作為后面全連接層的輸入??傮w來說,SPP結(jié)構(gòu)就是通過不同大小窗口進行池化,得到分辨率不同的特征圖,對每個特征圖連接1×1卷積層來壓縮調(diào)整通道維度。SPP結(jié)構(gòu)圖如圖2所示。
圖2 SPP結(jié)構(gòu)圖
1.2.2 激活函數(shù)
卷積神經(jīng)網(wǎng)絡中激活函數(shù)用于實現(xiàn)網(wǎng)絡的非線性映射,DenseNet網(wǎng)絡結(jié)構(gòu)中使用的激活函數(shù)為ReLU函數(shù),但ReLU函數(shù)在輸入小于0時無法激活神經(jīng)元,易使網(wǎng)絡訓練不收斂,ReLU函數(shù)定義如式(4)所示。為解決此問題,Leaky ReLU函數(shù)[21]利用較小的權(quán)值保留了部分信息,其定義如式(5)所示:
(4)
(5)
本文將Leaky Relu函數(shù)中系數(shù)?取值為0.01,有助于擴大ReLU函數(shù)的范圍,該激活函數(shù)將激活函數(shù)的整個函數(shù)范圍定義在負無窮到正無窮上,使x的較小的線性分量作為負輸入調(diào)整網(wǎng)絡中負值的零梯度問題。實驗比較了激活函數(shù)選擇ReLU函數(shù)以及Leaky ReLU函數(shù)對刺繡圖像分類模型性能的影響,實驗證明了激活函數(shù)選為Leaky ReLU函數(shù)能夠提升網(wǎng)絡的性能。
引入SPP結(jié)構(gòu)以及進行激活函數(shù)改進后的DenseNet整體網(wǎng)絡結(jié)構(gòu)如圖3所示。
圖3 改進后的DenseNet網(wǎng)絡結(jié)構(gòu)圖
其中DenseBlock中的激活函數(shù)全部為Leaky ReLU函數(shù)。
1.2.3 數(shù)據(jù)集寬度擴充
1) 局部二值模式(local binary pattern,LBP)是一種用來描述圖像局部紋理特征的算子,提取出的特征是圖像的局部紋理特征,具有旋轉(zhuǎn)不變性和灰度不變性等優(yōu)點。具體的計算方式如式(7)所示:
(7)
式(7)中x0表示一個小窗口的中心點像素灰度值,xi表示中心點周圍的其他像素點的灰度值,共有8個像素點,F(xiàn)(·)表示將小窗口中心點像素與相鄰像素比較得到的二值序列,具體方法為將中心像素點的值與周圍像素點的值做對比,若中心像素點的值小于周圍像素點的值,則對應周圍像素點標記為1,反之,若中心像素點的值大于周圍像素點的值,則將對應像素標記為0,將得到的二值序列與二值化后的周圍像素點對應相乘后并相加,即得到中心像素值。
根據(jù)刺繡圖像分類數(shù)據(jù)集中的RGB圖像利用LBP特征提取前后對比如圖4所示。
圖4 LBP提取特征前后對比圖
2)基于Canny算子的邊緣檢測可以通過高斯濾波、像素梯度計算、非極大值抑制等步驟簡化圖像,改變圖像的表現(xiàn)形式使其更易提取特征。
首先對圖像進行高斯濾波,即將一個灰度圖像與一個高斯核進行卷積操作,具體計算方式如式(8)所示:
(8)
(9)
然后計算經(jīng)過高斯濾波后的圖像的梯度值與梯度方向,以此觀察灰度值變化最大的像素點,梯度值與梯度方向的具體計算方式如式(10)和式(11)所示:
(10)
(11)
其中:Gx為像素點在x方向上的梯度值,Gy為像素點在y方向上的梯度值。然后進行非極大值抑制不是極大值的像素點,過濾非邊緣像素點,使邊緣寬度盡可能小,接著進行雙閾值檢測設(shè)置一個低閾值和一個高閾值,進一步減少邊緣像素點。
根據(jù)刺繡圖像分類數(shù)據(jù)集中的RGB圖像在經(jīng)過Canny算子提取邊緣的前后對比如圖5所示。
圖5 Canny算子邊緣檢測前后對比圖
3)Gabor濾波器是邊緣提取的線性濾波器,其頻率和方向表達與人類視覺系統(tǒng)類似,能夠提供良好的方向選擇和尺度選擇特性,而且對于光照變化不敏感,因此十分適合紋理分析。它的優(yōu)勢體現(xiàn)在Gabor濾波器可以從不同方向和尺度上對物體紋理進行提取特征,并進行隨意組合。本文采取二維Gabor濾波器對圖像進行濾波,其濾波核可以分為實部和虛部,其具體數(shù)學表達式如式(12)所示:
(12)
其中:x′與y′的計算方式如式(13)所示:
(13)
上面兩個公式中,參數(shù)λ為波長,可影響濾波器濾波尺度;參數(shù)θ為濾波器方向,共有4個,分別為0度,45度,90度以及135度;參數(shù)ψ為相位偏移,取值范圍為-180至180;參數(shù)γ為空間縱橫比,本文取值為0.5;參數(shù)σ為帶寬,本文取值為2π。
對刺繡圖像分類數(shù)據(jù)集中的RGB圖像進行二維Gabor濾波前后對比如圖6所示。
圖6 Gabor濾波前后對比圖
本文在已有研究基礎(chǔ)上對圖像分類網(wǎng)絡進行研究改進,根據(jù)訓練樣本圖像分類數(shù)據(jù)集X{x1,x2,…,xn}以及對應的m種類別Y{y1,y2,…,ym},對網(wǎng)絡結(jié)構(gòu)f(θ),損失函數(shù)l以及學習率LR進行訓練,算法訓練流程如圖7所示。
圖7 刺繡分類的訓練過程
1) 按預先設(shè)定的Batch size從訓練集X{x1,x2,…,xn}中選取一個訓練批次X1{xa,…,xb}進行歸一化預處理,對于訓練批次中每張刺繡圖像中RGB三通道分別按均值meanr,g,b=[0.485,0.456,0.406],標準差stdr,a,b=[0.229,0.224,0.225]進行如式(14)操作:
(14)
式(1)中Inputr、Inputg、Inputb為未歸一化前圖像的RGB三通道像素值,Outputr、Outputg、Outputb為歸一化后圖像的RGB三通道像素值。
Mn=F(M1⊕M2⊕…⊕Mn-1)
(15)
(16)
式(3)中利用損失函數(shù)L計算損失l,訓練過程的損失函數(shù)選用交叉熵損失函數(shù),如式(17)所示:
(17)
式(17)中b-a表示每一訓練批次中的樣本個數(shù),c表示類別數(shù)量共有m種,pic為符號函數(shù),若訓練批次中第i個樣本的真實類別與類別c相同則取1,反之取0,qic表示預測訓練批次中第i個樣本屬于類別c的概率。
4)計算得到的損失l后向傳播更新網(wǎng)絡權(quán)重θ,如式(18)所示:
θ′=θ-lr×g(l1)
(18)
5)判斷整個數(shù)據(jù)集是否遍歷結(jié)束,若遍歷未結(jié)束,選取下一訓練批次重復以上步驟,若遍歷結(jié)束,則保存該輪次的模型權(quán)重參數(shù)文件并判斷是否滿足訓練輪次。
6)若未滿足訓練輪次,重復以上步驟,若滿足訓練輪次則結(jié)束模型訓練。
本次實驗需要對訓練所得的神經(jīng)網(wǎng)絡模型進行測試以驗證效果,主要采用的評估指標為準確率(accuracy)、精確率(precision)、召回率(recall)和特異度(specificity)以及混淆矩陣。刺繡圖像分類模型的測試流程如圖8所示。
圖8 刺繡分類的測試過程
具體的測試步驟如下:
1)選擇訓練得到的卷積神經(jīng)網(wǎng)絡模型并加載;
2)從刺繡圖像分類數(shù)據(jù)集中選取待測刺繡圖像,進行歸一化預處理;
3)將預處理后的刺繡圖像送入網(wǎng)絡中進行計算并得到識別分類結(jié)果;
4)判斷測試集中圖片是否全部測試完畢,若未完畢,重復以上步驟,若完畢,保存測試結(jié)果并計算模型的評估指標。
本文數(shù)據(jù)集樣本采集來源于網(wǎng)絡,篩選出八類中華傳統(tǒng)刺繡,包括中國四大名繡:蘇繡、湘繡、粵繡、蜀繡以及少數(shù)民族刺繡:哈密刺繡、水族馬尾繡、西秦刺繡和其它類別,其中其它類別內(nèi)的刺繡還包含京繡、魯繡、盤金繡以及十字繡等。數(shù)據(jù)集中的部分刺繡圖像(隨機選取一張)如圖9所示。整個數(shù)據(jù)集按照9:1的比例劃分為訓練集與驗證集,即訓練集圖像共6 933張,測試集圖像共767張。具體類別分布如圖10所示。
圖9 刺繡圖像分類數(shù)據(jù)集樣本
圖10 刺繡圖像分類數(shù)據(jù)集類別分布圖
本文實驗的訓練與測試環(huán)境相同,均為Windows10操作系統(tǒng),使用Pytorch深度學習框架來實現(xiàn)整個模型訓練與測試過程,實驗環(huán)境的具體參數(shù)如表1所示。
表1 基準模型對比仿真環(huán)境
實驗選取5個常用的經(jīng)典卷積神經(jīng)網(wǎng)絡模型進行基準模型對比實驗,分別為GoogleNet (Inception V3)、ResNet50、DenseNet-121、MobileNetV2與EfficientNet-B0,然后將這5種模型與本文改進后的模型進行性能對比,這5種模型的詳細參數(shù)對比分析如表2所示。
表2 卷積神經(jīng)網(wǎng)絡模型對比表
經(jīng)過反復嘗試,本次實驗中選定的訓練相關(guān)超參數(shù)值如表3所示。
表3 網(wǎng)絡訓練超參數(shù)
2.3.1 不同算法實驗對比分析
本次實驗需要對訓練所得的神經(jīng)網(wǎng)絡模型驗證效果,主要采用的評估指標為準確率(accuracy)、精確率(precision)、召回率(recall)和特異度(specificity)以及混淆矩陣。
1)混淆矩陣。
混淆矩陣是評判模型優(yōu)劣的一種指標,常用于評判分類器模型的優(yōu)劣。表4代表一個二分類示例的混淆矩陣。
表4 二分類混淆矩陣
2)準確率Accuracy。
準確率(ACC)表示模型正確分類樣本占總樣本數(shù)比例(包括所有類別)。計算公式如下:
3)精確率Precision。
精確率(PPV)表示模型預測的所有Positive中預測正確的比例。計算公式如下:
4)召回率Recall。
召回率/靈敏度(TPR)表示在所有真實Positive中,模型預測正確的Positive比例。計算公式如下:
5)特異度Specificity。
特異度(TNR)表示在所有真實Negative中,模型預測正確的Negative比例。計算公式如下:
GoogleNet、ResNet、DenseNet、MobileNet與EfficientNet模型在各個種類上取得的精確率、召回率和特異度如表5所示。
表5 基準模型測試結(jié)果
由表5可知,基于DenseNet的刺繡圖像分類模型在8個刺繡種類上取得的精確率(precision)、召回率(recall)和特異度(specificity)與其他卷積神經(jīng)網(wǎng)絡模型相比較高且分布更均勻,證明了DenseNet模型較其他卷積網(wǎng)絡模型更適用于刺繡圖像分類任務?;贒enseNet的刺繡圖像分類模型在刺繡圖像分類數(shù)據(jù)集上獲得的混淆矩陣如圖11所示。
圖11 刺繡圖像分類數(shù)據(jù)集中八種刺繡的混淆矩陣
從圖11中可以看出在刺繡分類數(shù)據(jù)集中基于DenseNet的中華傳統(tǒng)刺繡分類模型在水族馬尾繡種類上識別率最高,而在粵繡種類上準確率最低。由混淆矩陣可知各類別識別正確概率均在80%以上,說明基于DenseNet的刺繡圖像分類模型對數(shù)據(jù)集中存在的噪聲和帶有遮擋與具有相似特征的刺繡圖像,有較強的魯棒性。
因此選擇基于DenseNet網(wǎng)絡結(jié)構(gòu)進行改進優(yōu)化,在模型中引入SPP結(jié)構(gòu)并進行激活函數(shù)優(yōu)化,改進后的算法與其他算法在訓練過程中的損失收斂對比過程如圖12所示。
圖12 各算法損失收斂對比圖
由圖12可得本文方法在刺繡圖像分類識別數(shù)據(jù)集上的損失收斂速度比其他算法的損失收斂速度更快。
為驗證改進后的算法的優(yōu)越性有效性,在刺繡圖像測試集上與其它算法進行對比,各算法取得的準確率如表6所示,利用本文方法改進后的算法在刺繡圖像測試集上取得的準確率遠遠高于其他基準卷積神經(jīng)網(wǎng)絡算法和改進前的DenseNet算法,進一步證明了本文提出方法的有效性。
表6 算法取得的準確率對比
2.3.2 數(shù)據(jù)集寬度擴充消融實驗
通過組合刺繡圖像分類數(shù)據(jù)集中的RGB三通道原圖及以上所介紹的4種方法得到的特征圖,分別組合得到8種不同方案,分別為RGB、RGB+LBP、RGB+ Canny、RGB+Gabor、RGB+LBP+Canny、RGB+ LBP+Gabor、RGB+Canny+Gabor以及RGB+ LBP+Canny+Cabor。從準確率與預測時間2個方面對比數(shù)據(jù)集寬度擴充前后基于改進DenseNet的刺繡圖像分類模型性能的差異,如表7所示。
表7 數(shù)據(jù)集寬度擴充消融試驗結(jié)果分析
將數(shù)據(jù)集按照8種不同寬度擴充方案送入改進后的刺繡圖像分類模型進行訓練,經(jīng)過Savitzky-Golay濾波平滑處理后,得到8種不同方案的分類模型的損失收斂對比圖如圖13所示,在刺繡圖像分類數(shù)據(jù)集上的取得的準確率對比圖如圖14所示。
圖13 數(shù)據(jù)集寬度擴充消融試驗損失收斂對比圖
圖14 數(shù)據(jù)集寬度擴充消融試驗準確率對比圖
在通道數(shù)增加至四通道時,刺繡圖像分類模型的準確率明顯提高,達到了97.39%,但方案4預測時間比方案2多了0.1 s,準確率并未顯著提升。綜合預測時間與模型在刺繡圖像分類測試集上達到的準確率兩方面綜合來看應選擇方案2,即將RGB圖像與LBP提取的特征圖合并為四通道圖像數(shù)據(jù)作為網(wǎng)絡輸入。
為提升刺繡分類效果,構(gòu)造了刺繡圖像分類數(shù)據(jù)集,研究了基于卷積神經(jīng)網(wǎng)絡的刺繡圖像分類模型,并基于DenseNet模型提出引入SPP算法以及替換激活函數(shù)優(yōu)化網(wǎng)絡結(jié)構(gòu),提出不同擴充數(shù)據(jù)集寬度方法并進行消融實驗,確定最佳輸入網(wǎng)絡數(shù)據(jù)集應為RGB圖像與LBP提取的特征圖合并的四通道圖像數(shù)據(jù),改進后的刺繡圖像分類模型與基準模型相比,準確率提高了8.1%,高達97.39%,平均分類識別時間為72.7 ms,驗證了改進后算法具有較高的識別精度與較快識別速度,提升了刺繡圖像分類效果。
本文進行的刺繡圖像分類數(shù)據(jù)集類別有限且大部分來源于網(wǎng)絡,未來可進一步收集更豐富的刺繡類別對模型進行訓練,提升識別分類效果。