郭 銳,熊風光*,謝劍斌,尹宇慧,劉 磊
(1.中北大學 大數據學院,山西 太原 030051;2.山西省視覺信息處理及智能機器人工程研究中心,山西 太原 030051)
紋理圖像含有豐富的紋理特征,紋理特征是人類了解和認知物體重要的視覺特征之一。因此,對紋理圖像的識別是非常重要的。近些年來,深度學習在紋理識別領域取得了矚目的成績,大大提升了紋理識別的準確率。然而,紋理識別任務是極具挑戰(zhàn)性的,現有的紋理識別方法存在復雜的紋理數據集上識別效果不佳的問題。因此,針對紋理識別模型在復雜數據集下的識別展開深入的研究。
主要工作如下:第一,提出多維特征融合模塊,充分利用高層特征與低層特征,提取更有效的紋理特征;第二,提出對殘差池化層的改進,在原殘差池化層的基礎上,加入了全局最大池化支路,提升紋理識別的準確率;第三,應用LBP(Local Binary Patterns,局部二值模式)輔助識別策略,使用LBP編碼映射圖像為紋理識別模型提供輔助信息,使紋理識別模型達到更好的效果。
目前,紋理識別方法主要分為傳統(tǒng)方法、深度學習方法、多類方法相結合三種類型。在傳統(tǒng)方法領域最為突出的紋理描述符就是LBP算法。LBP[1]算法對圖像的局部鄰域特征進行編碼,計算編碼值的直方圖作為紋理圖像的特征。此外,LBP算法還有很多的變體[2],如尺度不變的LBP紋理特征[3]、局部二元圓周和徑向導數模式[4]、凹凸微結構模式[5]和局部二值模式直方圖傅里葉變換[6]。趙曌等[7]融合LBP紋理和局部灰度特征,實現了紋理材料圖像的識別與分割。這些需要手動設計紋理特征,過程復雜、時間成本高而且不是端到端的方法。
很多深度學習方法在紋理識別任務中獲得了成功。M. Cimpoi等[8]完成了深度學習紋理識別的初嘗試,提出FV-CNN。在FV-CNN的基礎上又進行了很多研究[9-10],取得了不錯的效果。但是這些研究[8-10]將紋理識別任務分割成了多個小任務,不是端到端方法。Zhang等[11]提出的Deep TEN網絡,在卷積層之上集成了一種新的編碼層,開辟了端到端紋理識別的先河。Hu等[12]提出多級紋理編碼,提升了紋理描述符的有效性。相較傳統(tǒng)方法,深度學習方法盡管準確率上有一定的提高,但其效果仍不理想。
多方法相結合方面,Gil Levi等[13]通過MDS多維映射的方法得到了原始圖片LBP碼的編碼映射圖像,使得LBP算法與CNN方法相結合成為了可能。Rao Muhammad Anwer[14]提出一種雙流融合訓練網絡的方法,提高了模型的效果。張雪梅等[15]結合LBP和WLD兩種紋理描述算子,實現了人臉表情識別。但是這類方法存在計算復雜、紋理識別性能不高的問題。
Mao等[16]提出深度殘差池化層,該方法的殘差編碼方案是從預訓練的CNN的最終卷積層中提取特征映射作為字典來計算殘差。該殘差池化層結構見圖1。該殘差池化層由殘差編碼模塊和聚合模塊組成,通過此殘差池化層得到了低維有效的紋理特征,提升了紋理識別的效率。但是該殘差池化層存在如下問題:第一,此方法僅使用了預訓練CNN的最終卷積層,中間卷積層并沒有利用起來,特征相對單一,提取的紋理特征有效性不強;第二,此方法缺少對圖像全局空間結構的觀察,導致識別準確率不高。
圖1 原殘差池化層結構
該文提出一種基于改進殘差池化層的紋理識別模型,模型結構如圖2所示。
圖2 模型模塊結構
第一步,將標準RGB圖像輸入到基礎特征提取模塊,提取圖像的基礎特征,常用的基礎特征提取網絡有Resnet、Densenet等;第二步,將基礎特征提取模塊得到的特征圖輸入到多維特征融合模塊中,得到融合不同維度特征的特征圖;第三步,融合不同維度特征的特征圖輸入到改進的殘差池化層中,得到紋理特征向量;第四步,將紋理特征向量輸入到分類層中,得到紋理識別的結果。
針對文獻[16]原殘差池化層紋理識別模型中,僅使用了預訓練CNN的最終卷積層,未充分利用多層特征導致提取的紋理特征有效性不高的問題,該文提出了多維特征融合模塊。
在CNN網絡架構中,不同尺度的特征中蘊含著不同的特征信息。淺層特征中蘊含著圖像的全局特征信息,高層特征中蘊含著圖像的局部信息。在以往基于CNN的紋理識別算法中,大多只采用了高層特征,忽略了淺層特征。而在紋理識別任務中,圖像的高層特征以及淺層特征都是需要關注的。將高層特征與淺層特征融合,對紋理識別任務是有益的。
通過基礎特征提取模塊可以得到Pre-trained Deep learning feature,在Pre-trained Deep learning feature中,存在多個卷積塊,不同的卷積塊可以輸出大小不同的feature map。Resnet殘差網絡是經典的分類網絡,其內部的殘差塊使用了跳躍連接,緩解了在深度神經網絡中增加深度帶來的梯度消失問題。以Resnet50為例,通過Resnet50得到的Pre-trained Deep learning feature中有5個卷積塊,其中,卷積塊Conv_1僅是一個單層卷積層的輸出,并未學習圖像信息,故在本方法中沒有使用Conv_1輸出的特征。在卷積塊Conv_2、Conv_3、Conv_4和Conv_5中輸出特征圖尺寸分別為56×56×256、28×28×512、14×14×1 024和7×7×2 048。多維特征融合模塊中使用到了卷積塊Conv_2、Conv_3、Conv_4和Conv_5輸出的特征圖。
在多維特征融合模塊當中,將來自基礎特征提取模塊的不同維度特征進行融合,多維特征融合模塊結構見圖3。多維特征融合模塊工作流程如下:首先,將Conv_2、Conv_3、Conv_4和Conv_5四種尺寸的特征圖經過一個1×1的卷積層,該操作不改變特征圖的大小;之后,將Conv_5支路得到的特征圖輸入到改進殘差池化層中,獲得尺寸為1×2 048的特征向量;將Conv_2、Conv_3、Conv_4特征圖依次進行上采樣,相加操作,得到兩個融合多維特征的特征圖,尺寸分別為28×28×1 536、56×56×1 792;將上述兩個特征圖通過3×3的卷積層和改進殘差池化層,通過改進的殘差池化層處理后可以得到特征向量。將三個改進殘差池化層得到的特征向量進行拼接,可以得到最終的紋理特征向量。
圖3 多維特征融合模塊結構
多維特征融合模塊具有如下優(yōu)勢:第一,該方法綜合了高層特征與低層特征,得到了更為有效的紋理特征;第二,多維特征融合模塊利用了基礎特征提取網絡的中間輸出,并沒有增加復雜的計算過程,計算量極少量增加,對算法的時間復雜度負擔小;第三,多維特征融合模塊中的各個模塊都是可學習的,可以支持端到端的紋理識別模型;第四,多維特征融合模塊可以靈活應用于多個主干網絡當中。
針對文獻[16]原殘差池化層紋理識別模型中缺少對圖像全局空間結構的觀察,導致識別準確率不高的問題,提出改進殘差池化層。
改進殘差池化層的結構如圖4所示。此層即為圖2中的改進殘差池化層,是在原殘差池化層的基礎上進行改進的,所以改進殘差池化層分為兩部分,第一部分是原殘差池化層的保留,即圖4中的非虛線框部分,第二部分為該文對殘差池化層的改進,增加全局最大池化支路,即圖4中的虛線框部分。
圖4 改進殘差池化層結構
改進殘差池化層的工作流程如下:首先,預訓練的特征映射C由預訓練的CNN不同的卷積層獲得。特征映射C的計算如公式(1)所示:
C=fcnn(I),C∈R7×7×2 048
(1)
其中,C為預訓練CNN的特征映射,I為輸入圖像,fcnn()為預訓練的CNN模型(此處以Resnet50為例)。將通過基礎特征提取模塊得到的特征映射C輸入到Convolutional transfer module中學習特征X,Convolutional transfer module如圖5所示,其包括對特征圖的Convolutional layer(1x1)、drop out、Batch normalization、sigmoid操作,其中drop out 和Batch normalization操作用來避免過擬合。Convolutional transfer module模塊操作公式表示如下:
圖5 卷積傳輸模塊及聚合模塊結構
X=fctm(C),X∈R7×7×2 048
(2)
其中,X為學習到的特征,fctm()為Convolutional transfer module對特征映射C的操作。在該方法中,預訓練的特征C和學習到的特征X在空間上是有序的,所以位置(i,j)處的殘差映射值Zij計算公式如下:
Zij=Xij-?(Cij),Zij,Xij,Cij∈R2 048
(3)
其中,Zij為位置(i,j)處的殘差映射值,Xij為位置(i,j)處學習到的特征,Cij為位置(i,j)處預訓練的特征映射值。?()為sigmoid函數,強調了學習到的特征和預先訓練的特征之間的差異。這迫使卷積傳輸模塊學習一個適合于紋理識別的新特征。
將殘差映射Z輸入到Aggregation module,Aggregation module結構組成如圖5所示,使用此模塊可以聚合殘差獲得無序特征。此模塊包括對特征圖的ReLU、Batch normalization、Global Average Pooling操作,其中ReLU作為特征選擇器,將負殘差置為零,學習到的特征X與相應的預訓練映射特征C則被保留,從而得到了有效的分類特征。Global Average Pooling操作將7×7×2 048的殘差映射處理為2 048維的無序特征向量。Aggregation module操作的計算公式如下:
Y=fagg(Z),Y∈R2 048
(4)
其中,Y為得到的無序特征,fagg()為Aggregation module對殘差映射特征的操作。
在原殘差池化層的基礎上,引入全局最大池化支路,為紋理特征引入空間結構觀察,提升紋理識別的準確率,如圖4中虛線框所示。將預訓練特征映射C輸入到Global Maximun Pooling中,得到具有全局空間觀察的特征向量;Global Maximun Pooling的計算公式如下:
M=MAX(C),C∈R7×7×2 048,M∈R2 048
(5)
其中,M為具有全局空間結構觀察的特征向量。其次,原殘差池化層工作流程保持不變,將具有全局空間結構觀察的特征向量M與原殘差池化層得到的無序特征向量Y進行拼接,使用L2 normalization操作進行標準化,消除數值差異帶來的負面影響,得到最終的紋理特征,輸入到分類層中,得到紋理識別結果。
此殘差池化層改進有四個優(yōu)勢:第一,將訓練好的卷積特征中的空間信息作為字典,并基于空間位置進行硬賦值,效果更好;第二,該殘差池化層中各模塊的參數都是可學習的,可以端到端地完成紋理識別任務;第三,該方法將原殘差池化層的無序紋理表示與新增全局最大池化層的空間結構觀察相結合,得到了更好的紋理識別效果;第四,該改進殘差池化層可以靈活地應用于不同的主干網絡當中。
LBP編碼算法是一種用來描述圖像局部紋理特征的算子,具有旋轉不變性和灰度不變性等顯著的優(yōu)點。然而,LBP編碼是無序的,不符合CNN的卷積(卷積核中值的加權平均)操作特性,把LBP編碼直接輸入到CNN當中是無意義的。故而,采用Levi[13]提出的方法,通過多維尺度分析法和EMD距離將圖像轉化為LBP編碼映射圖像,使其可以直接輸入到CNN當中參與卷積操作。其中,多維尺度分析法將無序的LBP碼映射到度量空間中,使得映射后的編碼間的距離接近原始碼對之間的距離,可以有意義地參與卷積運算;EMD距離被定義為描述將一個分布轉換為另一個分布所需的最小努力,使用EMD距離可以有效地表示不同LBP碼在數值和位數上的差異。近似EMD距離公式如下:
Disij=‖MDS(LBPi)-MDS(LBPj)‖
(6)
其中,Disij表示LBP碼LBPi和LBPj之間的差異。MDS()表示累計分布函數,在此處表示位值的累計分布函數。此方法效果如圖6所示,左側是標準RGB圖像,中間是LBP編碼圖像,右側是LBP編碼映射圖像。
圖6 圖像對比
通過圖6可以看出,LBP編碼映射圖像相對標準RGB圖像紋理更加顯著,而且,其中還包含了與標準RGB圖像互補的紋理信息。使用此圖像能夠為基于標準RGB圖像的紋理識別模型提供幫助。
LBP輔助識別結構見圖7。首先,將標準RGB圖像與LBP編碼映射圖像分別輸入到基礎特征提取網絡,提取基礎特征;其次,將基礎特征輸入到多維特征融合模塊當中,獲得融合高維特征和低維特征的特征圖;然后,將獲得的特征圖分別輸入到改進的殘差池化層中,獲得紋理特征向量;最后,將標準RGB圖像得到的特征向量與LBP編碼映射圖像得到的特征向量進行融合,即將兩個特征向量進行拼接得到最終紋理特征,使用此特征獲得紋理識別結果。
圖7 LBP輔助識別
提出的網絡模型可以兼容所有的基礎特征提取網絡。在本次實驗中,所有的層都是固定的。操作系統(tǒng)為Windows。使用優(yōu)化器為Adam優(yōu)化器。實驗使用PyTorch進行開發(fā),損失函數為交叉熵損失,使用CPU Intel(R) Core(TM) i7-10700進行訓練。批次大小為64,學習率為0.000 1,學習輪數為500輪。數據集選擇DTD數據集以及FMD數據集,網絡輸入圖像大小為224×224。選擇在測試集上多次測試的平均準確率作為評估指標,平均準確率為多次測試中預測正確的占比值。準確率計算公式如公式(7),其中TP表示預測正確數,FP表示預測錯誤數。
(7)
實驗在DTD可描述數據集[17]以及FMD材料數據集[18]上進行。DTD可描述數據集包含帶狀、斑點、泡沫、凹凸、網紋、裂紋等47個不同的紋理類別,共計5 640張圖片。圖片均收集來自Google和Flickr,是紋理識別領域通用的權威數據集。數據集涵蓋了日常生產生活所見的90%以上的紋理情況。FMD數據集包含10種常見的材料類別,如織物、皮革等。每個類別包含100張圖像,對DTD數據集和FMD數據集使用了數據增強的方法來擴充數據集,以便更充分地訓練網絡。分別對DTD數據集和FMD數據集進行水平翻轉以及垂直翻轉操作,將原始數據集擴充了三倍。數據集示例見圖8。其中,第1-2行是DTD數據集及相關處理得到的圖像,第3-4行是FMD數據集及相關處理得到的圖像。第一列是原始圖像,第二列是原始圖像對應的LBP編碼映射圖像,第3-6列分別是原始圖像進行垂直翻轉,水平翻轉后的圖像及其對應的LBP編碼映射圖像。
對于DTD可描述數據集,此數據集共包含47類,每一類有120張圖像,隨機選取每類其中80張為訓練集,40張為測試集,訓練集共計3 760張圖像,測試集共計1 880張圖像。對于FMD數據集,此數據集共包含10類,每一類有100張圖像,隨機選取每類其中50張為訓練集,50張為測試集,訓練集共計500張圖像,測試集共計500張圖像。
3.2.1 多維特征融合模塊有效性分析
本次實驗中,在DTD數據集和FMD數據集上,探究多維特征融合模塊對紋理識別效果的影響。本次實驗使用的基礎特征提取網絡為Resnet50。具體實驗結果見表1。其中,Conv2_x是指將Resnet50第二個卷積塊輸出的形狀為56×56×256的特征圖直接輸入到改進殘差池化層中獲得的紋理識別結果,特征維度為256;Conv3_x是指將Resnet50第三個卷積塊輸出的形狀為28×28×512的特征圖單獨輸入到殘差池化層中獲得的紋理識別結果,特征維度為512;Conv4_x是指將Resnet50第四個卷積塊輸出的形狀為14×14×1 024的特征圖直接單獨輸入到殘差池化層中獲得的紋理識別結果,特征維度為1 024;Conv5_x是指將Resnet50第五個卷積塊輸出的形狀為7×7×2 048的特征圖直接輸入到殘差池化層中獲得的紋理識別結果,也就是文獻[16]原殘差池化層紋理識別模型,特征維度為2 048,在FMD數據集上的平均準確率為81.09%,在DTD數據上的平均準確率為71.53%;Conv2_x、Conv3_x是指將Resnet50第二和第三個卷積塊分別通過殘差池化層,將得到的特征向量拼接后得到的紋理識別結果,特征維度為768;Conv4_x、Conv5_x是指將Resnet50第四和第五個卷積塊分別通過殘差池化層,將得到的特征向量拼接后得到的紋理識別結果,特征維度為3 072;Conv2_x、Conv3_x、Conv4_x是指將Resnet第二、第三和第四個卷積塊分別通過殘差池化層,將得到的特征向量拼接后得到的紋理識別結果,特征維度為1 792;Conv3_x、Conv4_x、Conv5_x是指將Resnet第三、第四和第五個卷積塊分別通過殘差池化層,將得到的特征向量拼接后得到的紋理識別結果,特征維度為3 584;該文提出的多維特征融合模塊獲得的特征向量維度為3 072,在FMD數據集上的平均準確率為81.80%,相較于原模型平均準確率提升了0.71百分點,在DTD數據上的平均準確率為72.38%,相較于原模型平均準確率提升了0.85百分點。在特征維度相對不大的情況下取得了最好的識別效果,證明了多維特征融合模塊的有效性。
表1 不同的特征圖在FMD數據集和DTD數據集上的平均準確率 %
3.2.2 改進殘差池化層有效性分析
本次實驗中,在DTD數據集和FMD數據集上,探究殘差池化層的改進對紋理識別效果的影響。本次實驗使用的基礎特征提取網絡為Densenet 161。在表2中,原模型是指文獻[16]提出的原殘差池化層紋理識別模型,全局平均池化與原模型是指該文改進中的全局最大池化換成全局平均池化,對比這三者的效果。通過表2可以發(fā)現,原模型在FMD上平均準確率為84.10%,全局平均池化與原模型拼接在FMD上平均準確率為83.8%,文中方法在FMD數據集上平均準確率達到了86%,相比原模型提高了1.9百分點;原模型在DTD上平均準確率為75.57%,全局平均池化與原模型拼接在FMD上平均準確率為75.32%,全局最大池化與原模型拼接在FMD數據集上平均準確率為75.48%,與原模型相差不大。由實驗結果可知,對殘差池化層的改進可以有效提升紋理識別的效果。
表2 不同殘差池化層改進在FMD數據集和DTD數據集上的平均準確率 %
3.2.3 LBP輔助識別有效性分析
本次實驗中,在DTD數據集和FMD數據集上,探究LBP輔助識別對紋理識別效果的影響。在表3中,RGB圖像是指不使用LBP輔助識別,只使用標準RGB圖像輸入網絡進行紋理識別;LBP編碼映射圖像,是指使用LBP編碼映射圖像輸入網絡進行紋理識別;LBP輔助識別是指文中方法。由表3可知,僅標準RGB圖像輸入時,在FMD數據集和DTD數據集上的平均準確率為84.10%和75.57%;僅LBP編碼映射圖像輸入時,在FMD數據集和DTD數據集上的平均準確率為70.22%和66.95%;采用LBP輔助識別,使用LBP編碼映射圖像提供輔助信息時,在FMD數據集和DTD數據集上的平均準確率為86.32%和76.21%。使用LBP輔助識別后,在FMD數據集上平均準確率提升了2.22百分點,在DTD數據集上平均準確率提升0.64百分點,證明LBP輔助識別方式可以有效提高紋理識別的性能。
表3 LBP輔助識別方式使用與否在FMD數據集和DTD數據集上的平均準確率 %
圖9是標準RGB圖像輸入(左)和LBP輔助識別(右)在FMD數據集測試集上的混淆矩陣。由圖9可知,使用LBP輔助識別后,在每個類別上的平均準確率均有所提升。在fabric類上的平均準確率提升了4百分點;在leather類上的平均準確率提升了6百分點;在metal類上的平均準確率提升了6百分點;在plastic類上的平均準確率提升了4百分點;在water類上的平均準確率提升了2百分點;在wood類上的平均準確率提升了4百分點。由上述分析可知,使用LBP編碼映射圖像提供輔助信息時,幾乎在所有的類別上均提升了效果。證明標準RGB圖像與LBP編碼映射圖像之間并不只是在某個特殊的情況下存在互補的紋理特征,這兩者之間存在穩(wěn)定和全面的互補紋理特征。
圖9 混淆矩陣
本次實驗中,在DTD數據集和FMD數據集上,文中方法與B-CNN、Deep filter banks、Locality-aware coding、TEX-Net、DeepTEN和DRP等最新的紋理識別技術進行了比較。由表4可知,在FMD數據集上,主干網絡為Resnet50時,文中方法平均準確率為81.8%;主干網絡為Densenet161時,達到86.32%,文中方法均取得了最優(yōu)的效果。在DTD數據集上,主干網絡為Resnet50時,文中方法平均準確率為72.38%;主干網絡為Densenet161時,達到76.21%,文中方法綜合取得最優(yōu)結果。綜合來看,文中方法在FMD數據集和DTD數據集上均取得了不錯的效果,證明了文中方法的有效性。
表4 文中方法與對比方法在FMD數據集和DTD數據集上的平均準確率 %
針對紋理識別進行研究,提出了基于改進殘差池化層的紋理識別方法。提出了多維特征融合模塊,使得紋理識別可以靈活利用高層特征和低層特征,增強了紋理特征;對殘差池化層進行改進,在原殘差池化層的基礎上,添加全局最大池化層支路,增加對紋理圖像的全局空間結構觀察,得到更有效的紋理特征;通過LBP算法和MDS多維映射法得到的LBP編碼映射圖像與標準RGB圖像之間存在互補的紋理信息,可以為紋理識別提供輔助信息,提高紋理識別的準確率。實驗結果表明,該方法在紋理識別任務領域是有效的。使用深度學習的方法實現紋理識別,在未來的研究中,可以將對紋理識別任務針對性更強的傳統(tǒng)方法與深度學習方法結合,以進一步提升紋理識別的效果。