周長敏,佘佐明,吳安麗
(1.凱里學(xué)院,大數(shù)據(jù)工程學(xué)院,凱里556011;2.凱里學(xué)院,經(jīng)濟(jì)與管理學(xué)院,凱里556011;3.凱里學(xué)院,美術(shù)與設(shè)計學(xué)院,凱里556011)
按地區(qū)和風(fēng)格對蠟染紋樣進(jìn)行分類是蠟染數(shù)字化保護(hù)的基礎(chǔ)工作,具有重要意義。在圖像分類模型中,基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNNs)的模型在圖像分類領(lǐng)域取得了令人矚目的成績,提出了AlexNet、GoogLeNet、VGGNet、ResNet等經(jīng)典模型。CNNs直接依靠神經(jīng)網(wǎng)絡(luò)本身去學(xué)習(xí)數(shù)據(jù)的特征[1],無需設(shè)計復(fù)雜的特征提取器,因而在紡織品識別與分類領(lǐng)域得到廣泛關(guān)注。黎智等人[2]使用VGGNet實現(xiàn)了蠟染染色模擬,侯宇康等人[3]使用VGGNet提取蠟染紋理特征并將其風(fēng)格遷移到其他圖案生成全新的民族紋飾圖案。王飛等人[4]使用CNNs進(jìn)行羊絨與羊毛鑒別、賈小軍等人[5]使用CNNs對藍(lán)印花布紋樣基元進(jìn)行分類都取得了較好的分類效果。目前,CNNs應(yīng)用于蠟染紋樣分類的研究較少,本文提出一種改進(jìn)的VGGNet模型對蠟染紋樣進(jìn)行分類,并通過實驗驗證模型的分類效果。
遷移學(xué)習(xí)(Transfer Learning)是一種將源領(lǐng)域?qū)W習(xí)到的知識應(yīng)用到目標(biāo)領(lǐng)域的機(jī)器學(xué)習(xí)方法[6]。CNNs是一種包含卷積運算的神經(jīng)網(wǎng)絡(luò),主要由輸入層、卷積層、池化層、全連接層組成。為擴(kuò)展網(wǎng)絡(luò)深度,CNNs通常包含多個交替堆疊的卷積層和池化層。深層的CNNs擁有大量的參數(shù),需要巨大的數(shù)據(jù)樣本進(jìn)行長時間訓(xùn)練才能充分捕獲數(shù)據(jù)中的規(guī)律,從而取得好的分類效果。VGGNet、AlexNet等優(yōu)秀模型所使用的訓(xùn)練數(shù)據(jù)集為120萬張圖像的ImageNet數(shù)據(jù)集。在具體的應(yīng)用領(lǐng)域重新建立新的CNNs,如果數(shù)據(jù)樣本不足會導(dǎo)致網(wǎng)絡(luò)模型在訓(xùn)練過程中參數(shù)過度擬合訓(xùn)練數(shù)據(jù)集,從而影響模型的泛化性能。本文采用遷移學(xué)習(xí)的方法,對VGGNet模型的全連接層進(jìn)行調(diào)整,使用預(yù)先訓(xùn)練好的模型參數(shù)作為初始化參數(shù),使用蠟染紋樣數(shù)據(jù)集對模型進(jìn)行訓(xùn)練,以適應(yīng)蠟染紋樣的分類問題。
CNNs的訓(xùn)練需要大量標(biāo)注的數(shù)據(jù)樣本,為解決訓(xùn)練樣本不足的問題,可采用數(shù)據(jù)增強技術(shù)擴(kuò)充數(shù)據(jù)樣本。數(shù)據(jù)增強是指在不改變圖像主要特征的前提下通過裁剪、縮放、平移、旋轉(zhuǎn)等操作,對圖像數(shù)據(jù)集進(jìn)行擴(kuò)充。本文采集了安順、丹寨、黃平、織金4種風(fēng)格類型的蠟染紋樣圖像,圖1所示為1張丹寨蠟染紋樣圖像經(jīng)過數(shù)據(jù)增強處理后到的樣本圖像。對訓(xùn)練集進(jìn)行數(shù)據(jù)增強可以讓模型學(xué)習(xí)到圖像特征的不變性,有助于提高模型的泛化能力。
圖1 蠟染紋樣數(shù)據(jù)增強
VGGNet是Simonyan等人[7]在2014年提出的網(wǎng)絡(luò)模型,在ImageNet視覺識別競賽中獲得分類第二的成績。VGG16和VGG19是VGGNet中的最常用的兩個模型,VGG16和VGG19卷積層數(shù)分別為13和16,兩者的全連接層都為3層,具體結(jié)構(gòu)如圖2所示。與AlexNet模型使用多尺寸卷積核不同,VGGNet統(tǒng)一使用3×3大小的卷積核,卷積核個數(shù)從淺層的64個增加到深層的512個。使用多個小卷積核代替大卷積核的優(yōu)勢是多個卷積核需要經(jīng)過多次激活,能夠增加網(wǎng)絡(luò)的非線性,增強網(wǎng)絡(luò)的表征能力。
圖2 VGG16和VGG19結(jié)構(gòu)
為保留更多的圖像信息和保證網(wǎng)絡(luò)的深度,VGGNet采用一組卷積層加一個池化層的方式來組織網(wǎng)絡(luò)結(jié)構(gòu),池化層全部采用最大池化法,池化核的大小為2×2。VGGNet有3個全連接層。各全連接層的神經(jīng)元個數(shù)分別為4096、4096、1000,全連接層的輸出結(jié)果通過Softmax函數(shù)生成分類標(biāo)簽。
VGGNet屬于參數(shù)量巨大的深層網(wǎng)絡(luò),3個全連接層的參數(shù)密度最高,大量的參數(shù)容易導(dǎo)致網(wǎng)絡(luò)模型過擬合[8],從而影響模型的泛化性能。Hinton等人[9]提出了在訓(xùn)練過程中隨機(jī)丟棄全連接層部分神經(jīng)元的dropout方法來解決過擬合的問題,但效果不理想。Lin等人[10]提出將最后池化層輸出的特征圖進(jìn)行全局平均池化(Global Average Pooling)來減少參數(shù)的方法。全局平均池化與普通平均池化不同,全局平均池化的池化窗口大小與每個通道的特征圖大小相同,相當(dāng)于對每個特征圖獨立地進(jìn)行求平均值操作,該平均值相當(dāng)于類別的置信度。將最后池化層輸出的特征圖進(jìn)行全局平均池化代替原來的全連接層,可縮減參數(shù)量,有助于解決過擬合問題。
基于以上思路,本文在保持VGG網(wǎng)絡(luò)卷積層結(jié)構(gòu)不變的情況下,將網(wǎng)絡(luò)的全連接層調(diào)整為全局平均池化層,如圖3所示為改進(jìn)后的VGG16網(wǎng)絡(luò)結(jié)構(gòu)。
(1)輸入層。將輸入的RGB模式蠟染紋樣圖像統(tǒng)一調(diào)整到224×224像素,對圖片進(jìn)行歸一化處理,得到標(biāo)準(zhǔn)化的像素矩陣。
(2)卷積組。如圖3所示,卷積組的結(jié)構(gòu)與VGG16模型一致,由5個塊(block)組成。block1、block2為2層卷積,block3、block4、block5為3層卷積,每個block的最后層為2×2的最大池化層。
圖3 改進(jìn)的VGG16模型
(3)全局平均池化層。在原來VGG16模型最后的卷積塊block5之后增加一個全局平均池化層,對512個尺寸為7×7的特征圖進(jìn)行全局平均池化操作,池化核的大小為7×7,池化步長為7。全局平均池化層輸出長度為512的一維向量與4個分類神經(jīng)元進(jìn)行全連接,輸出結(jié)果通過Softmax函數(shù)生成分類標(biāo)簽。
本文實驗數(shù)據(jù)為實地拍攝采集的4類蠟染紋樣圖片1784張,包括安順蠟染460張、丹寨蠟染456張、黃平蠟染438張、織金蠟染430張。每類蠟染抽取80%的圖片進(jìn)行數(shù)據(jù)增強,得到5600張圖片用于模型的訓(xùn)練,20%的圖片作為測試集用于測試模型的分類準(zhǔn)確率與泛化性能,測試集不進(jìn)行數(shù)據(jù)增強操作。圖4為各類蠟染紋樣例圖。
圖4 蠟染樣例
實驗效果評價標(biāo)準(zhǔn)為圖像分類準(zhǔn)確率(Accuracy),具體表示如下:
公式(1)中M表示測試集樣本總數(shù),T為正確分?jǐn)?shù)的樣本數(shù)。
本文實驗的硬件環(huán)境為CPU Intel Core i7-10750H,內(nèi)存16GB,顯卡NVIDIA GeForce GTX 1650,顯存4GB。軟件環(huán)境為Windows 10操作系統(tǒng),使用Anaconda進(jìn)行開發(fā)環(huán)境管理,在TensorFlow-GPU框架的基礎(chǔ)上實現(xiàn)模型的微調(diào),模型的訓(xùn)練和測試采用CUDA并行計算框架和cuDNN深度神經(jīng)網(wǎng)絡(luò)的加速庫來實現(xiàn)GPU加速,數(shù)據(jù)增強使用Python的imgaug庫實現(xiàn)。
為驗證本文模型的有效性,分析CNNs提取圖像特征的特點,設(shè)置以下實驗內(nèi)容。
實驗一:本文模型的有效性驗證,具體流程如下:
(1)構(gòu)建蠟染紋樣分類模型。在VGG16、VGG19模型的最后池化層之后增加一個全局平均池化層,將全局平均池化的輸出與4個分類神經(jīng)元進(jìn)行全連接,構(gòu)建2個改進(jìn)模型。修改原VGG16、VGG19模型的分類神經(jīng)元個數(shù)為4個,構(gòu)建2個對比模型。
(2)訓(xùn)練模型。使用預(yù)先訓(xùn)練好的VGG16、VGG19模型參數(shù)作為初始化參數(shù),設(shè)定學(xué)習(xí)率、數(shù)據(jù)批量值、迭代次數(shù)以及優(yōu)化器,使用相同的訓(xùn)練數(shù)據(jù)集對(1)中構(gòu)建的4個模型進(jìn)行訓(xùn)練。
(3)測試模型。使用相同的測試集對以上4個模型進(jìn)行測試,驗證分類效果。
實驗二:與傳統(tǒng)分類模型對比,具體流程如下:
(1)采用方向梯度直方圖(Histogram of Oriented Gradient,HOG)算法提取蠟染紋樣特征,使用特征數(shù)據(jù)訓(xùn)練支持向量機(jī)(Support Vector Machine,SVM)模型,測試模型的分類效果。
(2)通過尺度不變特征變換(Scale-Invariant Feature Transform,SIFT)算法對蠟染紋樣進(jìn)行特征提取,使用K-means算法對特征進(jìn)行聚類得到特征詞典,以特征詞典為基礎(chǔ)將每幅圖片表示成特征向量,使用特征向量訓(xùn)練SVM模型,使用相同的測試集測試分類效果。
3.4.1 實驗一
通過實驗,確定訓(xùn)練樣本和測試樣本的數(shù)據(jù)批量值(batch size)均為32,訓(xùn)練迭代次數(shù)為3000次,使用Adam自適應(yīng)優(yōu)化器,初始學(xué)習(xí)率設(shè)為0.001。如圖5所示為訓(xùn)練過程中的損失函數(shù)的變化曲線圖。從圖中看出,使用全局平均池化層改進(jìn)的VGG16_improve和VGG19_improve模型的初始損失值都低于原模型,4個模型在前1000次訓(xùn)練過程中損失值下降速度最快,迭代2000次以后模型基本收斂,因此訓(xùn)練3000次可以得到分類效果穩(wěn)定的模型。實驗表明使用預(yù)先訓(xùn)練好的模型參數(shù)作為初始化參數(shù)可以加快模型收斂的速度,減少訓(xùn)練次數(shù),達(dá)到遷移學(xué)習(xí)的目的。
圖5 損失函數(shù)曲線
表1為4個模型在訓(xùn)練集和測試集上的準(zhǔn)確率。從表1中可看出,改進(jìn)的VGG16_improve、VGG19_improve模型在訓(xùn)練集和測試集上的分類準(zhǔn)確率都高于原模型,并且在測試集上的分類準(zhǔn)確率達(dá)到了92.12%和95.79%,表明本文提出的改進(jìn)模型具有更好的分類效果和泛化性能。本組實驗也驗證了網(wǎng)絡(luò)層數(shù)的增加在一定程度上能夠提升分類準(zhǔn)確率。
表1 分類準(zhǔn)確率
3.4.2 實驗二
表2為本文模型與傳統(tǒng)分類模型準(zhǔn)確率的對比。從表2中可以看出,相比HOG+SVM分類法、SIFT+SVM分類法,本文模型的分類準(zhǔn)確率得到了大幅度的提高,表明本文提出的模型更適用于蠟染紋樣分類問題,同時驗證了卷積神經(jīng)網(wǎng)絡(luò)的圖像特征提取性能優(yōu)于傳統(tǒng)的圖像特征提取算法。
表2 與傳統(tǒng)分類方法對比
蠟染屬于國家非物質(zhì)文化遺產(chǎn),蠟染紋樣分類是對其進(jìn)行數(shù)字化保護(hù)的基礎(chǔ)工作。本文提出一種改進(jìn)的VGGNet分類模型,將最后池化層的輸出進(jìn)行全局平均池化后直接與分類神經(jīng)元進(jìn)行全連接,使用預(yù)先訓(xùn)練好的VGGNet模型參數(shù)作為初始化參數(shù),提高訓(xùn)練的效率,采用數(shù)據(jù)增強技術(shù)擴(kuò)充訓(xùn)練集樣本數(shù)量,提高模型的泛化能力。通過與原模型、傳統(tǒng)分類方法進(jìn)行實驗對比,本文提出的改進(jìn)模型在蠟染測試集上的分類準(zhǔn)確率達(dá)到92.12%和95.79%,具有較好的分類效果。下一步的研究工作是繼續(xù)收集蠟染紋樣,擴(kuò)充類別與數(shù)據(jù)集,研究其他卷積神經(jīng)網(wǎng)絡(luò)模型的分類效果,改進(jìn)、優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),進(jìn)一步提升分類性能。