王軍敏,張?jiān)妷?mèng)
(平頂山學(xué)院 信息工程學(xué)院,河南 平頂山 467036)
紋理圖像識(shí)別技術(shù)具有廣泛的應(yīng)用領(lǐng)域和重要的應(yīng)用價(jià)值,例如可應(yīng)用于生物特征識(shí)別[1]、遙感圖像分類[2]、工業(yè)產(chǎn)品的瑕疵檢測(cè)[3]等.傳統(tǒng)的紋理圖像識(shí)別方法主要是對(duì)紋理圖像的底層視覺特征進(jìn)行提取和識(shí)別,例如:灰度共生矩陣(Gray Level Co-occurrence Matrix, GLCM)算法[4]主要檢測(cè)不同像素對(duì)出現(xiàn)的統(tǒng)計(jì)特征,局部二值模式(Local Binary Pattern, LBP)算法[5]和完備的局部二值計(jì)數(shù)(Completed Local Binary Count, CLBC)算法[6]主要檢測(cè)局部鄰域像素與中心像素的灰度關(guān)聯(lián)信息.語義特征是圖像表達(dá)出的接近人類認(rèn)知和理解的概念,是一種更高級(jí)和抽象的特征,對(duì)提高圖像的高級(jí)表達(dá)和理解具有重要作用.由于傳統(tǒng)方法對(duì)紋理圖像語義特征的提取和識(shí)別能力不足,從而導(dǎo)致這些方法在紋理圖像語義場(chǎng)景下的識(shí)別性能較差.考慮到深度學(xué)習(xí)模型能夠模擬人腦分層提取特征的機(jī)制,能夠提取從底層到高層、從具體到抽象的圖像特征,因此提出一種基于深度學(xué)習(xí)的紋理圖像語義識(shí)別方法,以便更好地提取和識(shí)別紋理圖像的語義特征.
DTD紋理庫[7]是對(duì)現(xiàn)實(shí)場(chǎng)景中的紋理樣本進(jìn)行拍攝獲取的彩色紋理圖像數(shù)據(jù)集,一共包含47個(gè)類別,每類均有120個(gè)樣本圖像.這些樣本圖像分別用可描述的語義屬性作為類別標(biāo)記,例如條帶狀(banded)、辮子狀(braided)、網(wǎng)格狀(grid)、Z字形(zigzagged)、螺旋狀(spiralled)等.圖1展示了DTD紋理庫中的一部分樣本圖像及其對(duì)應(yīng)的語義屬性標(biāo)簽.
圖1 DTD紋理庫的部分樣本圖像及其語義屬性標(biāo)簽
從圖1可以看出,DTD紋理庫中的樣本圖像含有豐富的紋理特征,即便是同類別的樣本圖像也呈現(xiàn)出不同的底層視覺特征,因此不方便利用底層視覺特征進(jìn)行統(tǒng)一標(biāo)記,采用語義屬性則能很好地描述這些樣本圖像的類別,并且符合人類的認(rèn)知和描述習(xí)慣.
DTD紋理庫的訓(xùn)練集、驗(yàn)證集和測(cè)試集的劃分如下:由于DTD紋理庫的每類含有120個(gè)樣本,所以從每類選取60個(gè)樣本用于訓(xùn)練,20個(gè)樣本用于驗(yàn)證,剩下的40個(gè)樣本用于測(cè)試,從而構(gòu)建本文的訓(xùn)練集、驗(yàn)證集和測(cè)試集.
深度卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)是深度學(xué)習(xí)技術(shù)的一個(gè)重要分支,目前在圖像和語音識(shí)別領(lǐng)域獲得了廣泛的應(yīng)用.但是,從頭開始訓(xùn)練一個(gè)深度CNN模型需要大規(guī)模的訓(xùn)練樣本,并且對(duì)硬件平臺(tái)的計(jì)算能力要求很高,因此為了降低對(duì)訓(xùn)練樣本數(shù)量和計(jì)算平臺(tái)性能的要求,利用在大規(guī)模圖像數(shù)據(jù)集ImageNet上預(yù)先訓(xùn)練好的深度CNN模型作為本文模型的骨干網(wǎng)絡(luò).由于這些預(yù)訓(xùn)練模型的參數(shù)已經(jīng)在ImageNet圖像數(shù)據(jù)集上經(jīng)過了充分的預(yù)訓(xùn)練,已經(jīng)具備了初步的、較好的特征提取能力,所以可在預(yù)訓(xùn)練模型的基礎(chǔ)上添加所需的后端模塊并進(jìn)行微調(diào)訓(xùn)練,從而方便快捷地構(gòu)建針對(duì)不同應(yīng)用場(chǎng)景的深度學(xué)習(xí)模型.
筆者構(gòu)建的深度學(xué)習(xí)模型包括骨干網(wǎng)絡(luò)和后端模塊兩部分,其基本結(jié)構(gòu)如圖2所示.
圖2 本文深度學(xué)習(xí)模型的基本結(jié)構(gòu)
1)骨干網(wǎng)絡(luò)的主要作用是作為特征提取器,即從輸入紋理圖像中提取不同層次的紋理特征.筆者采用在ImageNet數(shù)據(jù)集上預(yù)先訓(xùn)練好的DenseNet161模型[8]作為骨干網(wǎng)絡(luò),DenseNet161模型的結(jié)構(gòu)如表1所示,主要利用4個(gè)DenseBlock模塊提取特征.因此,為了提取不同層次的語義特征,本文方法分別從DenseNet161模型的DenseBlock2、DenseBlock3、DenseBlock4的輸出端提取低、中、高三個(gè)層次的語義特征,以便送入后端模塊做進(jìn)一步處理.
表1 DenseNet161模型的基本結(jié)構(gòu)
2)后端模塊的主要作用是對(duì)骨干網(wǎng)絡(luò)提取的特征進(jìn)行降維、抑制過擬合,并對(duì)骨干網(wǎng)絡(luò)提取的不同層次的語義特征進(jìn)行特征融合,作為最終的分類輸出.其中:Conv1x1卷積模塊和全局平均池化(Global Average Pooling, GAP)層可以顯著降低模型的參數(shù)規(guī)模;Dropout層在訓(xùn)練階段隨機(jī)丟棄一些神經(jīng)元之間的連接,相當(dāng)于每次僅訓(xùn)練一個(gè)子網(wǎng)絡(luò),可有效抑制模型的過擬合;BatchNorm層對(duì)批樣本的特征進(jìn)行歸一化,能夠加快訓(xùn)練速度,有效防止梯度消失和梯度爆炸,并且能夠有效抑制過擬合;分類器Classifier使用一個(gè)全連接層將輸出端的個(gè)數(shù)調(diào)整為待識(shí)別紋理圖像的目標(biāo)類別個(gè)數(shù),并計(jì)算分類得分.最后,將多個(gè)分類器的輸出進(jìn)行特征融合,作為模型最終的預(yù)測(cè)結(jié)果,根據(jù)預(yù)測(cè)值的大小即可判斷當(dāng)前輸入樣本所屬類別的標(biāo)簽.
在訓(xùn)練階段,把訓(xùn)練樣本集送入模型進(jìn)行充分訓(xùn)練,不斷優(yōu)化調(diào)節(jié)模型的參數(shù),可使深度學(xué)習(xí)模型獲得更好的識(shí)別能力.為了獲得良好的訓(xùn)練效果,對(duì)訓(xùn)練階段的超參數(shù)進(jìn)行如下設(shè)置.
1)數(shù)據(jù)增強(qiáng)與歸一化.為了增加訓(xùn)練樣本的數(shù)量,對(duì)現(xiàn)有的訓(xùn)練樣本進(jìn)行數(shù)據(jù)增強(qiáng)操作,具體包括:先對(duì)原始圖像進(jìn)行隨機(jī)縮放并截取224×224像素的中心區(qū)域圖像,進(jìn)行水平方向的隨機(jī)翻折;同時(shí),由于預(yù)訓(xùn)練的DenseNet161模型是在ImageNet數(shù)據(jù)集上訓(xùn)練的,要求輸入圖像歸一化到該數(shù)據(jù)集的均值[0.485, 0.456, 0.406]和標(biāo)準(zhǔn)差[0.229, 0.224, 0.225],所以,為了滿足預(yù)訓(xùn)練模型對(duì)輸入的要求,把當(dāng)前輸入圖像的RGB三個(gè)顏色通道分別歸一化為均值[0.485, 0.456, 0.406],標(biāo)準(zhǔn)差為[0.229, 0.224, 0.225].
2)批尺寸.如果一次把全部訓(xùn)練樣本送入模型進(jìn)行訓(xùn)練,容易產(chǎn)生計(jì)算設(shè)備內(nèi)存不足的問題,所以采取把訓(xùn)練樣本分批送入模型進(jìn)行訓(xùn)練的策略,設(shè)置批尺寸為40,即每次把40個(gè)訓(xùn)練樣本送入模型進(jìn)行訓(xùn)練,以便獲得合適的梯度估計(jì)和參數(shù)調(diào)節(jié)效果.
3)凍結(jié)參數(shù)和可訓(xùn)練參數(shù).筆者構(gòu)建的深度學(xué)習(xí)模型一共有498個(gè)命名參數(shù),其中前480個(gè)命名參數(shù)屬于骨干網(wǎng)絡(luò),后面18個(gè)命名參數(shù)屬于后端模塊.因此,筆者凍結(jié)預(yù)訓(xùn)練模型的參數(shù),只對(duì)新增的后端模塊的參數(shù)進(jìn)行微調(diào)訓(xùn)練.
4)學(xué)習(xí)率.該參數(shù)控制模型尋找最優(yōu)解的速度,如果學(xué)習(xí)率過大則可能錯(cuò)過最優(yōu)解,如果學(xué)習(xí)率過小則會(huì)導(dǎo)致訓(xùn)練時(shí)間過長(zhǎng)或限于局部最優(yōu)解.因此,為了獲得良好的訓(xùn)練效果,根據(jù)實(shí)踐經(jīng)驗(yàn),設(shè)置初始的學(xué)習(xí)率為0.000 1.
5)丟棄概率.由于筆者所用的DTD數(shù)據(jù)集不屬于大規(guī)模數(shù)據(jù)集,容易導(dǎo)致模型訓(xùn)練的過擬合,所以為了有效抑制模型的過擬合現(xiàn)象,設(shè)置丟棄概率P=0.7.
6)優(yōu)化器.選擇綜合性能較好的Adam算法優(yōu)化器.
7)損失函數(shù).由于筆者研究多類別分類問題,所以本文模型的損失函數(shù)采用分類交叉熵函數(shù).
8)訓(xùn)練輪數(shù).設(shè)最大訓(xùn)練輪數(shù)為50輪.
在對(duì)模型進(jìn)行訓(xùn)練之后,為了檢驗(yàn)?zāi)P偷淖R(shí)別能力并選擇性能最佳的模型,需要對(duì)模型進(jìn)行驗(yàn)證,即把驗(yàn)證數(shù)據(jù)集送入訓(xùn)練后的模型,獲得驗(yàn)證精度.如果驗(yàn)證精度不夠理想,需要繼續(xù)對(duì)模型進(jìn)行微調(diào)訓(xùn)練,最后保存驗(yàn)證精度最高的模型,將其作為最佳的訓(xùn)練模型.
在測(cè)試階段,首先將測(cè)試集的樣本進(jìn)行歸一化,即把樣本圖像的3個(gè)顏色通道分別歸一化為均值[0.485, 0.456, 0.406],標(biāo)準(zhǔn)差為[0.229, 0.224, 0.225],然后把測(cè)試樣本分批送入驗(yàn)證階段保存的最佳模型,最后獲得預(yù)測(cè)結(jié)果,并計(jì)算測(cè)試精度.在測(cè)試階段,不需要對(duì)測(cè)試的樣本圖像進(jìn)行數(shù)據(jù)增強(qiáng)操作.
實(shí)驗(yàn)環(huán)境:計(jì)算機(jī)(Intel Core i5CPU@3.10GHz, 16 GB RAM), Python 3.7, PyTorch 1.8.1.
本文方法的具體實(shí)驗(yàn)步驟如下:
Step1利用DenseNet161骨干網(wǎng)絡(luò)和后端模塊構(gòu)建深度學(xué)習(xí)模型;
Step2對(duì)樣本圖像進(jìn)行歸一化,即把樣本圖像的RGB 3個(gè)顏色通道調(diào)整為均值[0.485, 0.456, 0.406],標(biāo)準(zhǔn)差為[0.229, 0.224, 0.225],并調(diào)整圖像尺寸為224×224像素;
Step3對(duì)訓(xùn)練樣本進(jìn)行數(shù)據(jù)增強(qiáng),擴(kuò)充訓(xùn)練樣本的數(shù)量,并設(shè)置模型的超參數(shù)值,包括優(yōu)化器、學(xué)習(xí)率、批尺寸、損失函數(shù)等;
Step4設(shè)置模型的凍結(jié)參數(shù)和可訓(xùn)練參數(shù),把數(shù)據(jù)增強(qiáng)后的訓(xùn)練集樣本分批送入本文模型,對(duì)模型的可訓(xùn)練參數(shù)進(jìn)行微調(diào)和優(yōu)化;
Step5把驗(yàn)證集的樣本分批送入模型進(jìn)行驗(yàn)證,當(dāng)模型在驗(yàn)證集上獲得最佳驗(yàn)證精度時(shí),保存此時(shí)的模型參數(shù),即獲得最佳的深度學(xué)習(xí)模型;
Step6利用訓(xùn)練和驗(yàn)證所得的最佳深度學(xué)習(xí)模型對(duì)測(cè)試樣本進(jìn)行測(cè)試,獲得測(cè)試集的識(shí)別結(jié)果.
圖3展示了本文方法在訓(xùn)練和驗(yàn)證階段的識(shí)別精度變化曲線.從圖3可以看出,在經(jīng)過5個(gè)Epoch之后,本文方法的訓(xùn)練和驗(yàn)證精度都已超過65%,體現(xiàn)出本文方法具有良好的學(xué)習(xí)能力和訓(xùn)練效果.
圖3 訓(xùn)練和驗(yàn)證精度曲線
為了進(jìn)一步評(píng)估本文方法的性能,將本文方法與其他先進(jìn)算法在DTD紋理庫測(cè)試集上的識(shí)別精度進(jìn)行對(duì)比,結(jié)果如表2所示.
表2 在DTD紋理庫測(cè)試集上的識(shí)別精度
從表2可以看出:1)傳統(tǒng)的底層視覺特征提取算法(GLCM算法、LBP算法和CLBC算法)的識(shí)別精度較低,這表明圖像的底層視覺特征不能準(zhǔn)確地描述其語義特征,導(dǎo)致該類算法對(duì)紋理圖像語義特征的識(shí)別能力較弱;2)基于深度學(xué)習(xí)的算法(VGG16算法、DenseNet161算法和本文算法)的識(shí)別精度顯著超過了傳統(tǒng)底層視覺特征算法,表明深度學(xué)習(xí)方法具有良好的語義特征學(xué)習(xí)和識(shí)別能力;3)本文方法在DTD紋理庫上取得了最高的識(shí)別精度73.36%,超過了其他算法的識(shí)別精度,表明本文方法能夠更好地提取紋理圖像的語義特征,在描述和鑒別紋理圖像的語義特征方面具有優(yōu)越的性能,因此本文方法在紋理圖像語義識(shí)別的場(chǎng)景中具有更好的應(yīng)用價(jià)值.
為了實(shí)現(xiàn)紋理圖像語義特征的識(shí)別,利用在ImageNet數(shù)據(jù)集上預(yù)先訓(xùn)練的DenseNet模型為骨干網(wǎng)絡(luò),在此基礎(chǔ)上增加后端模塊構(gòu)建深度學(xué)習(xí)模型,并通過對(duì)后端模塊的微調(diào)訓(xùn)練獲得最佳的深度學(xué)習(xí)模型.該方法降低了深度學(xué)習(xí)模型構(gòu)建和訓(xùn)練的難度.同時(shí),在DTD紋理庫上的實(shí)驗(yàn)結(jié)果表明,本文方法在紋理圖像的語義特征提取和識(shí)別方面具有良好的性能,彌補(bǔ)了傳統(tǒng)底層視覺算法對(duì)紋理圖像語義特征識(shí)別能力不足的問題,具有重要的應(yīng)用價(jià)值.