賈大勇,李春樹,吳 嚴(yán)
(寧夏大學(xué)物理與電子電氣工程學(xué)院,寧夏銀川 750021)
巖畫作為一種非物質(zhì)文化遺產(chǎn),代表了古代人類對(duì)自然的向往。人們以石器、鐵器為工具,將自然界的景物刻在巖石上,表達(dá)了對(duì)大自然的敬畏之心。我國(guó)的賀蘭山巖畫是巖畫寶庫(kù)中的瑰寶,但由于其長(zhǎng)時(shí)間暴露在空氣中,受到風(fēng)和雨水的侵蝕,表面早已破敗不堪,給巖畫的識(shí)別與保護(hù)工作帶來(lái)了巨大的挑戰(zhàn),同時(shí)也對(duì)相關(guān)工作人員的工作能力提出了更高的要求。傳統(tǒng)的人工檢測(cè)、記錄耗時(shí)耗力,不僅效率低,而且不利于深入開(kāi)展巖畫保護(hù)工作?;诖?,本文提出將雙階段目標(biāo)檢測(cè)算法Faster R-CNN應(yīng)用于賀蘭山巖畫檢測(cè)識(shí)別中[1]。計(jì)算機(jī)視覺(jué)的引入可大大提高巖畫檢測(cè)的效率,同時(shí)減少人工成本的消耗,對(duì)巖畫的保護(hù)和發(fā)掘工作具有十分重要的現(xiàn)實(shí)意義。
本次實(shí)驗(yàn)對(duì)圖像中的人和物有較高的檢測(cè)精度要求,因此本文選用Faster R-CNN 作為目標(biāo)檢測(cè)算法。為了使Faster R-CNN 算法在特征提取階段能夠通過(guò)卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)獲得更多的特征語(yǔ)義信息,同時(shí)減少由于數(shù)據(jù)量過(guò)小而出現(xiàn)的過(guò)擬合現(xiàn)象,本文對(duì)所用的數(shù)據(jù)集進(jìn)行以下操作。首先,針對(duì)賀蘭山巖畫中圖騰和動(dòng)物前景與背景區(qū)分度較低,動(dòng)物與人面像形態(tài)、大小不一和部分物體輪廓不完整等現(xiàn)象,運(yùn)用數(shù)據(jù)增強(qiáng)技術(shù),對(duì)巖畫數(shù)據(jù)集進(jìn)行擴(kuò)充。數(shù)據(jù)增強(qiáng)是指對(duì)巖畫進(jìn)行批量反轉(zhuǎn)、擴(kuò)張、壓縮、旋轉(zhuǎn)和歸一化等處理,該技術(shù)能夠豐富賀蘭山巖畫數(shù)據(jù)集的語(yǔ)義信息,提升數(shù)據(jù)集圖像的表達(dá)能力,避免在訓(xùn)練數(shù)據(jù)集的過(guò)程中出現(xiàn)過(guò)擬合現(xiàn)象。然后,本文又通過(guò)圖像標(biāo)注軟件LabelImg 對(duì)巖畫中出現(xiàn)的人或物分門別類地進(jìn)行標(biāo)注,將數(shù)據(jù)增強(qiáng)后的賀蘭山巖畫數(shù)據(jù)集送入Faster R-CNN 網(wǎng)絡(luò)中進(jìn)行訓(xùn)練。數(shù)據(jù)增強(qiáng)能夠充分利用算法中特征金字塔網(wǎng)絡(luò)(feature pyramid networks,FPN)不同層的優(yōu)勢(shì)[2],使圖像的淺層語(yǔ)義信息和深層語(yǔ)義信息進(jìn)一步融合,從而得到語(yǔ)義信息更加豐富的特征提取層,進(jìn)而提高模型的檢測(cè)精度,提升目標(biāo)檢測(cè)網(wǎng)絡(luò)的性能。
2014 年R.Grishick 等提出了R-CNN 深度學(xué)習(xí)算法,并將其應(yīng)用于目標(biāo)檢測(cè)領(lǐng)域。該算法采用選擇性搜索(selective search,SS)算法和CNN,對(duì)輸入圖像進(jìn)行特征提取,并借助CNN 強(qiáng)大的特征提取能力,大大提升了SS 算法在圖像分類上的精度[2-3]。目前,目標(biāo)檢測(cè)算法主要分為單階段和雙階段2 種類型。Faster R-CNN 為雙階段目標(biāo)檢測(cè)算法,其主要優(yōu)點(diǎn)是檢測(cè)精度高,然而相較于單階段目標(biāo)檢測(cè)算法,F(xiàn)aster R-CNN 在檢測(cè)速度上略顯不足。較為經(jīng)典的單階段目標(biāo)檢測(cè)算法有SSD(single shot multibox detector)算法、YOLO(you only look once)算法等[4],該類算法在小目標(biāo)物體檢測(cè)中表現(xiàn)優(yōu)異,只需對(duì)輸入圖像進(jìn)行1 次處理,就能同時(shí)解決目標(biāo)候選框的定位與回歸問(wèn)題。賀蘭山巖畫前景與背景的區(qū)分度較低,整體目標(biāo)較大且多為單個(gè)目標(biāo),對(duì)檢測(cè)精度要求較高,因此本文選用雙階段目標(biāo)檢測(cè)算法。Faster R-CNN 目標(biāo)檢測(cè)流程分為3 個(gè)部分:①由特征提取網(wǎng)絡(luò)提取輸入圖像的特征層;②通過(guò)區(qū)域候選網(wǎng)絡(luò)(region proposal network,RPN)獲得感興趣區(qū)域;③對(duì)感興趣區(qū)域進(jìn)行分類與回歸操作。
Faster R-CNN 算法是R-CNN 算法的延伸與擴(kuò)展。R-CNN 網(wǎng)絡(luò)架構(gòu)中使用的SS 算法在運(yùn)行中不僅耗時(shí)較多,而且對(duì)計(jì)算機(jī)CPU 和GPU 的占用率較高,限制了深度學(xué)習(xí)的發(fā)展。Faster R-CNN 在R-CNN的基礎(chǔ)上創(chuàng)新性地提出用RPN 代替SS 算法,生成建議框[5-7]。RPN 通過(guò)CNN 共享特征層,極大地縮短了計(jì)算時(shí)間,提高了計(jì)算效率,提升了算法的檢測(cè)速率。Faster R-CNN 的算法流程圖如圖1 所示。
圖1 Faster R-CNN 算法流程圖
Faster R-CNN 可以和多種類型的特征提取網(wǎng)絡(luò)結(jié)合,例如:ResNet,VGG,DenseNet,DetNet 等系列。ResNet 系列為深度特征提取網(wǎng)絡(luò),其最大的特點(diǎn)是具有殘差式網(wǎng)絡(luò)結(jié)構(gòu)[8]。在實(shí)際應(yīng)用中,人們?yōu)榱私鉀Q復(fù)雜的工程問(wèn)題,往往會(huì)加深網(wǎng)絡(luò)的層數(shù),但是隨著深度的增加,在特征提取網(wǎng)絡(luò)中會(huì)出現(xiàn)梯度爆炸或梯度消失的情況,而ResNet 的殘差式網(wǎng)絡(luò)結(jié)構(gòu)可以很好地解決上述問(wèn)題。這種結(jié)構(gòu)可以將上一層的輸入x 直接與多層之后的輸出F(x)疊加,即特征層最終的輸出H(x)由輸入線性疊加而成。這種特殊的輸出方式可以解決由梯度爆炸或梯度消失導(dǎo)致的學(xué)習(xí)效率下降、精準(zhǔn)度無(wú)法提高等現(xiàn)象。殘差神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如圖2 所示?;谑褂谜叩男枨?,ResNet可以提供卷積層數(shù)不同的版本[9],常用的有ResNet-50 和ResNet-101,本文采用ResNet-101 特征提取網(wǎng)絡(luò),其各卷積層的結(jié)構(gòu)參數(shù)見(jiàn)表1。
表1 ResNet-101 各卷積層結(jié)構(gòu)參數(shù)表
圖2 殘差神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
RPN 是Faster R-CNN 的核心組成部分,其作用是篩選出候選區(qū)域中有效的感興趣區(qū)域,對(duì)提取到的特征層進(jìn)行初步篩選,為后續(xù)的分類與回歸打下基礎(chǔ)。RPN 利用1 個(gè)3×3 的卷積核對(duì)特征層進(jìn)行卷積處理,并且在卷積核的中心生成長(zhǎng)寬比不同的1 組錨框(Anchor)[10],每組錨框分為3 種比例(1∶1,2∶1,1∶2),其原理圖如圖3 所示。
圖3 錨框原理圖
RPN 之后連接的是2 個(gè)并行結(jié)構(gòu)的全連接層,其中1 個(gè)負(fù)責(zé)分類,1 個(gè)負(fù)責(zé)回歸。分類層負(fù)責(zé)計(jì)算感興趣區(qū)域中出現(xiàn)目標(biāo)是前景或背景的概率,即判斷預(yù)測(cè)框內(nèi)是否包含物體?;貧w層則負(fù)責(zé)計(jì)算預(yù)測(cè)框與真實(shí)框的4 個(gè)頂點(diǎn)坐標(biāo)的偏移量,以此來(lái)調(diào)試RPN 的權(quán)重值。RPN 結(jié)構(gòu)示意圖如圖4 所示,圖中N 表示特征層的維度。
圖4 RPN 結(jié)構(gòu)示意圖
目標(biāo)檢測(cè)的任務(wù)是預(yù)測(cè)物體所屬類別、物體所處位置的中心坐標(biāo)(x,y)以及預(yù)測(cè)框的寬(w)和高(h)。損失函數(shù)的作用是計(jì)算預(yù)測(cè)值與真實(shí)值之間的差值,即判斷預(yù)測(cè)框中出現(xiàn)的物體屬于前景還是背景;計(jì)算預(yù)測(cè)框與真實(shí)框之間的偏移量,并以此作為預(yù)測(cè)精準(zhǔn)度的度量手段。
首先,RPN 對(duì)特征層里的候選區(qū)域進(jìn)行初步篩選,大致給出目標(biāo)屬于前景或背景的概率。其次,以交并比MIoU作為評(píng)價(jià)指標(biāo),其定義式為
式中:P 表示預(yù)測(cè)框的面積;G 表示真實(shí)框的面積。交并比示意圖如圖5 所示。圖5 中P 與G 的重合面積為預(yù)測(cè)框與真實(shí)框的交集,相交的面積越大,說(shuō)明預(yù)測(cè)的準(zhǔn)確性越高。當(dāng)MIoU小于0.4 時(shí),預(yù)測(cè)框被劃分為負(fù)樣本;當(dāng)MIoU大于0.7 時(shí),預(yù)測(cè)框被劃分為正樣本;當(dāng)MIoU為0.4~0.7 時(shí),樣本則不予考慮。
圖5 交并比示意圖
偏移量的定義是基于預(yù)測(cè)框與真實(shí)框的差值。真實(shí)框的中心坐標(biāo)為(x,y),寬為w,高為h;預(yù)測(cè)框中心坐標(biāo)的初值為(xa,ya),寬為wa,高為ha[11]。預(yù)測(cè)框偏移量的計(jì)算公式為
式中:水平方向上的偏移量tx和ty利用寬和高進(jìn)行歸一化;豎直方向上的偏移量th和tw利用對(duì)數(shù)進(jìn)行處理。對(duì)數(shù)操作限制了偏移量的值,使訓(xùn)練過(guò)程中的預(yù)測(cè)框逐步接近真實(shí)框,可提高預(yù)測(cè)精度。
預(yù)測(cè)框中被檢測(cè)目標(biāo)的類別和偏移量由RPN后半段的全連接層計(jì)算得到,之后利用公式(3)將其作用在對(duì)應(yīng)預(yù)測(cè)框上,就可以得到預(yù)測(cè)框與標(biāo)記框的水平差值tx*和ty*以及垂直差值th*和tw*[11]。預(yù)測(cè)框的最終坐標(biāo)為(x*,y*),寬為w*,高為h*,計(jì)算公式為
RPN 是多任務(wù)的網(wǎng)絡(luò)模型,其損失函數(shù)由2 部分組成,分別為目標(biāo)分類任務(wù)和邊界框回歸任務(wù)。本文通過(guò)RPN 得到預(yù)測(cè)值,再通過(guò)損失函數(shù)得到預(yù)測(cè)值與真實(shí)值的差,其定義式為
式中:i 表示所選取Anchor 的索引數(shù);pi表示第i 個(gè)Anchor 類別為真實(shí)值的概率[12];pi*表示Anchor 類別的預(yù)測(cè)值(正樣本記為1;負(fù)樣本記為0);Ncls表示分類預(yù)測(cè)時(shí)每個(gè)處理批次所有樣本的數(shù)量,Nreg表示回歸預(yù)測(cè)時(shí)每個(gè)處理批次Anchor 樣本點(diǎn)的數(shù)量;平衡因子λ 的作用是對(duì)損失函數(shù)進(jìn)行調(diào)整;ti表示第i 個(gè)Anchor 邊界框4 個(gè)坐標(biāo)參數(shù)組成的向量,ti*表示第i 個(gè)Anchor 所對(duì)應(yīng)真實(shí)框4 個(gè)坐標(biāo)參數(shù)組成的向量。其中分類損失Lcls使用的是交叉熵?fù)p失,其定義式為
回歸損失Lreg使用了smoothL1函數(shù)[13],其定義式為
本文應(yīng)用場(chǎng)景為賀蘭山巖畫目標(biāo)檢測(cè)。未經(jīng)擴(kuò)充的賀蘭山巖畫數(shù)據(jù)集中的目標(biāo)共有4 種類別,分別為人面像89 張、太陽(yáng)神像102 張、猴面像14 張以及羊像94 張,共計(jì)299 張;擴(kuò)充后的數(shù)據(jù)集中人面像267 張、太陽(yáng)神像305 張、猴面像98 張以及羊像282 張,共計(jì)952 張。本文使用PASCAL VOC 2007數(shù)據(jù)集格式,將整體數(shù)據(jù)集隨機(jī)劃分為訓(xùn)練集、驗(yàn)證集、測(cè)試集,分別占整個(gè)數(shù)據(jù)集的70%,20%,10%。部分?jǐn)?shù)據(jù)集如圖6 所示。
圖6 部分賀蘭山巖畫
實(shí)驗(yàn)配置參數(shù):CPU(Intel(R)Xeon(R)CPU @2.30 GHz,內(nèi)存16 G);GPU(NVIDIA-S Tesla K 80,24 G 顯存);操作系統(tǒng)Ubuntu 16.04[14];深度學(xué)習(xí)框架為Pytorch 1.0.0;圖形加速器采用CUDA 10.0 和cuDNN 7.6.2;代碼運(yùn)行環(huán)境為Python 3.5。
2017 年Facebook 的研究人員提出了Pytorch,其與TensorFlow 深度學(xué)習(xí)框架相比,更加高效、簡(jiǎn)潔,故本文選用Pytorch 作為深度學(xué)習(xí)框架。本次實(shí)驗(yàn)在訓(xùn)練過(guò)程中采用隨機(jī)梯度下降法尋找全局最優(yōu)解。實(shí)驗(yàn)一共對(duì)數(shù)據(jù)集訓(xùn)練了120 個(gè)周期;實(shí)驗(yàn)的初始學(xué)習(xí)率設(shè)置為0.01,衰減速率為0.001;RPN 階段正、負(fù)樣本的閾值分別為0.7,0.4。
本文使用Faster R-CNN 和ResNet-101,分別對(duì)未進(jìn)行數(shù)據(jù)增強(qiáng)的賀蘭山巖畫數(shù)據(jù)集和數(shù)據(jù)增強(qiáng)后的賀蘭山巖畫數(shù)據(jù)集進(jìn)行對(duì)比實(shí)驗(yàn)。訓(xùn)練過(guò)程中要保持訓(xùn)練參數(shù)一致,并使用相同測(cè)試集,對(duì)目標(biāo)檢測(cè)模型進(jìn)行對(duì)比。數(shù)據(jù)增強(qiáng)前后的賀蘭山巖畫損失曲線如圖7 所示,實(shí)驗(yàn)檢測(cè)精度見(jiàn)表2。由圖7可知,相較于數(shù)據(jù)增強(qiáng)前,數(shù)據(jù)增強(qiáng)后網(wǎng)絡(luò)模型的損失函數(shù)曲線更加平緩,收斂更加迅速,曲線波動(dòng)幅度更小。
表2 數(shù)據(jù)集數(shù)據(jù)增強(qiáng)前后的實(shí)驗(yàn)檢測(cè)精度%
圖7 數(shù)據(jù)增強(qiáng)前后的損失曲線
本文選取部分實(shí)驗(yàn)結(jié)果圖,進(jìn)一步分析檢測(cè)結(jié)果,如圖8~圖10 所示。由圖10 可知,數(shù)據(jù)增強(qiáng)后的目標(biāo)預(yù)測(cè)框更加準(zhǔn)確,避免了數(shù)據(jù)增強(qiáng)前由于猴面像數(shù)據(jù)量過(guò)小而造成的誤檢現(xiàn)象。因此,當(dāng)項(xiàng)目數(shù)據(jù)量較小時(shí),可以利用數(shù)據(jù)增強(qiáng)技術(shù)來(lái)完成模型優(yōu)化,從而在一定程度上提升網(wǎng)絡(luò)性能。
圖8 鏡像反轉(zhuǎn)前后人面像檢測(cè)結(jié)果圖
圖9 鏡像和壓縮前后羊像檢測(cè)結(jié)果圖
圖10 光學(xué)變換前后猴面像檢測(cè)結(jié)果圖
本文基于Faster R-CNN 目標(biāo)檢測(cè)算法,將數(shù)據(jù)增強(qiáng)技術(shù)應(yīng)用于賀蘭山巖畫檢測(cè)中,提升了目標(biāo)檢測(cè)算法的網(wǎng)絡(luò)性能,優(yōu)化了目標(biāo)檢測(cè)模型,并且避免了由于數(shù)據(jù)量較小而引起的過(guò)擬合現(xiàn)象,可以更加有效地檢測(cè)出賀蘭山巖畫中的目標(biāo)。
當(dāng)前階段,深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一種新興研究方向。在賀蘭山巖畫的學(xué)習(xí)樣本中,深度學(xué)習(xí)可以有效地學(xué)習(xí)到被檢測(cè)目標(biāo)的內(nèi)在規(guī)律,能夠讓機(jī)器像人一樣具有分析學(xué)習(xí)的能力,并且其在圖像和語(yǔ)音識(shí)別技術(shù)中也具有較大的優(yōu)勢(shì)。深度學(xué)習(xí)為賀蘭山巖畫等非物質(zhì)文化遺產(chǎn)保護(hù)工作提出了新的研究方向,同時(shí)也提供了廣泛的應(yīng)用前景。