編譯:ronghuaiyang
導讀 這是前一篇文章的繼續,在這篇文章中,我們將討論紋理分析在圖像分類中的重要性,以及如何在深度學習中使用紋理分析。 ?
在這篇文章中,我們將討論紋理分析在圖像分類中的重要性,以及如何在深度學習中使用紋理分析。我們還將討論一些常用的紋理提取技術,這些技術用于預先訓練的模型,以更有效地解決分類任務。
為了更好地理解本文中解釋的主題,我們假設讀者對紋理提取技術、遷移學習和預訓練的模型(如ResNet、InceptionNet等)有基本的了解。
在過去的幾年里,深度學習在分類、分割和識別任務中顯示出了巨大的意義和有效性。然而,在許多情況下,傳統的基于cnn的架構在基于紋理的分類任務中表現不佳。為了解決這個問題,最近有人提出了一些新的架構。
以往的紋理分類工作大多使用預訓練的模型,如ResNet、InceptionNet等,并將紋理特征提取技術之一應用于預訓練模型的激活輸出。
如果圖像數據集具有豐富的基于紋理的特征,如果將額外的紋理特征提取技術作為端到端體系結構的一部分,則深度學習技術會更有效。
預訓練模型的問題是,由于模型的復雜性,最后一層捕獲圖像的復雜特征。這些特征提供了關于物體形狀的信息,但不適合基于圖像中的重復模式來識別紋理細節。為了以一種優雅的方式解決這個問題,研究人員提出了將紋理提取技術與CNN結合起來的概念。這樣紋理就能被更準確地捕捉和分類。
在基于紋理的分類任務重,紋理分析對于深度學習的重要性
由于紋理基于局部模式,而傳統的深度學習方法強調復雜的特征,對紋理分類沒有幫助,因此,傳統的CNN架構不能很好地執行基于紋理特征的分類任務。為了讓深度學習在基于紋理的數據上更好地工作,需要有一種方法,可以從圖像中提取紋理特定的特征,并將其傳遞給全連接層,同時保留全局特征。這樣的架構設置將使全連接的層具有信息紋理特征,并有助于更有效地估計類邊界。
圖1,局部特征提取
我們可以在圖1中看到,織物顯微圖像中提取的局部特征如何顯示幾乎相似的特征,這些提取的局部特征足以呈現織物的紋理類型。從給定的織物紋理中,假設使用紋理分析技術提取給定圖像的局部特征(LF)。相同的局部模式在整個圖像中重復。在這張織物圖像中,三個提取的局部特征的特征幾乎是相同的。與全局特征相比,提取這些局部特征將更有幫助,因為局部特征在定義給定織物中存在的紋理類型時更有希望,從而更好地區分“紋理類型”類。
在紋理分析中,我們重點研究了紋理的識別和提取方法。更好地理解紋理分析方法有助于我們確定最適合特定紋理類型的技術,以及如何將該方法應用于給定的圖像,以提取紋理特征。
利用紋理分析的知識,我們可以開發基于紋理的技術,并在神經網絡架構中以“層”的形式實現它們。這使得紋理分析方法可以與基于cnn的骨干架構相結合。
如何在深度學習結構中提取紋理特征?
在典型的CNN體系結構中,沒有規定性的方法來強制在傳遞給全連接層的激活中存在紋理特征。假設,我們必須根據紋理類型對一些圖像進行分類。如果以某種方式,我們可以強制模型來解釋圖像中的紋理特征,那么模型的性能就會大大提高。
在最近的研究中,很少有紋理特征提取技術能夠以“專門的”可微網絡層的形式與CNN體系結構集成。將紋理提取層與傳統CNN體系結構集成后,其主要優點是將局部特征與全局特征一起傳遞給全連通層,有助于更顯著地估計類邊界。
每種紋理提取技術能夠提取的紋理特征類型不同,因此沒有一種“通用的”紋理提取方法。
由于紋理是圖像的局部屬性,因此這些技術的工作原理是突出給定圖像的局部特征。
在下一節中,我們將討論最近開發的紋理提取技術以及它們在使用CNN架構時應用的紋理任務類型。
深入紋理提取技術、方法以及在預訓練激活輸出上的應用
DeepTen
DeepTen網絡是一種利用損失函數在端到端學習框架上學習視覺詞匯的技術。編碼層被利用在卷積層之上。DeepTen的獨特之處在于字典、特征、分類器和編碼表示都是同時學習的。這里的字典指的是輸入數據的稀疏表示。
為什么它有助于紋理分析
在一般的計算機視覺任務中,使用SIFT(尺度不變特征變換)或者濾波器組提取手工設計的特征。但在DeepTen中,每個部分都針對給定的端到端模式/紋理/材料識別任務進行了調優。整個管道被訓練在一起,這些特征為識別任務提供了一個無順序的編碼。
如何使用它進行基于紋理的分類
在DeepTen中使用了一個可學習的殘差編碼層,它將殘差學習和整個字典移植到CNN的一個單層中。DeepTen的編碼層有3個主要屬性:
廣義魯棒殘差編碼器,描述特征分布。
作為卷積層之上的池化層,增加了深度學習模型的靈活性。
它使模型適合于傳輸預訓練的特征,因為它學習了一個包含領域特定信息的固有字典。
圖2,固有字典由編碼層學習
這里在圖2中,字典的碼字和輸入視覺描述符被用來計算殘差。利用兩者之間的距離來獲取賦值權值,最后對殘差向量和賦值權值進行聚合。
DeepTen還使用了端到端學習技術,因為編碼層是一個有向無環圖(圖2),它是可微的,可以使用使用反向傳播的隨機梯度下降來訓練它。
用例
DeepTen縮小了CNN和經典計算機視覺任務之間的差距,使其在紋理和材料識別任務中非常高效。要了解更多關于編碼層是如何實現的以及它是如何集成到CNN的,請參考:https://openaccess.thecvf.com/content_cvpr_2017/papers/Zhang_Deep_TEN_Texture_CVPR_2017_paper.pdf
DEPNet
深度編碼池(Deep Encoding Pooling, DEP)是一種將局部空間信息與無序紋理細節相結合的技術。這里我們用一個有監督的參數分布來找出類的邊界,并建立類之間的關系。
在經典的方法中,使用定制的濾波器組過濾紋理圖像,然后使用基于直方圖或詞袋的方法對這些輸出進行分組。特征提取是通過將直方圖或詞袋的輸出發送到預訓練的卷積層來完成的。然而,在DEPNet中,紋理圖像被發送到卷積層,從那里的輸出被發送到編碼層和全局平均池化層。
為什么它有助于紋理分析:
DEPNet更關注局部空間信息和無序表示。
在這里,編碼層捕獲紋理外觀細節(即“無序紋理”:意思是不考慮圖像中局部特征的空間順序),而全局平均池化層捕獲空間信息。這兩層都用雙線性模型處理。
圖3,DEPNet結構
DEPNet雙線性模型使用全連接層的輸出。這些全連接層的輸出是向量,對兩個向量的外積沒有限制,也不涉及計算特征向量外積的計算復雜度。
在深度編碼池網絡中,
紋理編碼層將整個字典學習和視覺編碼管道集成到一個單一的CNN層,這為紋理建模提供了一個無序的表示。
雙線性模型是雙因素模型,如果一個因素不變,則另一個因素的輸出是線性的。這些因素平衡了兩個組成部分的貢獻。
DEPNet的卷積層與基于ImageNet的預訓練cnn的非線性層相結合,用于特征提取。
如何使用它進行基于紋理的分類:
在很多情況下,數據集的兩個類彼此非常相似,經常分類錯誤。例如,瀝青和石頭瀝青或樹葉和草(樹葉是背景)。在這種情況下,有必要為該圖像找到類標簽和最近的類。為了解決這個問題,在尋找圖像與各種類之間的關系時使用了DEP-manifold。
從非參數算法來看,DEP-manifold采用了一個積分分布。深度神經網絡利用這種分布直接預測紋理圖像的流形坐標。基于材料類的相似性,建立了材料識別算法的混淆矩陣。分類錯誤的元素在對角線附近有一個接近的相關性,這些圖像可以被歸類為密切相關的類。
圖4,從超過1000張隨機圖像的GTOS訓練集中提取特征,在分類層之前執行
在圖4中,混淆矩陣中的深藍色代表高相關性,淺藍色代表低相關性。有些類分類錯誤,但它們可以被認為是最接近的類。可以看到多個深藍色點的列是類之間關系密切的類。
用例
DEPNet的整個體系結構就像一個有向無環圖,所有的參數都可以通過反向傳播來訓練。DEPNet就是一種專門用于地面地形識別的算法。論文:https://openaccess.thecvf.com/content_cvpr_2018/papers/Xue_Deep_Texture_Manifold_CVPR_2018_paper.pdf。
DSRNet
紋理技術通常側重于提取紋理的無序空間排列,但也重視紋理的內在結構特性。深度結構顯示網絡(DSR-Net)側重于結構表示,因為紋理分析是通過捕捉紋理之間的空間關系來完成的。
為什么它有助于紋理分析
DSRNet背后的主要思想是,紋理的空間排列在其空間布局中可以有多種感知,但這些紋理之間存在空間依賴性,這種依賴性不會因空間布局而變化,并告訴我們紋理的結構屬性。見下圖(圖5),一個紋理有多個感知。
圖5,A:不同的紋理帶有移動的紋理元素,B:可移動紋理元素之間的空間依賴性 如何使用它進行基于紋理的分類
在DSRNet中捕捉紋理之間的結構關系使用了兩個模塊 —— 原始捕獲模塊(PCM)和依賴學習模塊(DLM)
如圖6所示,DSR-Net有兩個分支 —— 結構顯示分支和空間有序分支。首先以resnet50為骨干進行特征提取,然后將特征串聯在一起形成特征池以獲取局部空間特征。將結構顯示分支的輸出與空間有序分支的輸出相加,最后發送到全連接層。
圖6,a) DSR-Net的完整架構 b) structure - reveal模塊的詳細架構
在PCM空間上下文中,對紋理給出約束,這些約束在八個方向上給出。如圖7所示,方向映射用于從給定輸入捕獲主要模式。
圖7,原語捕獲模塊(PCM)示意圖,for each position指的是PCM計算的每一步
如圖8所示,PCM捕獲的模式被傳遞給DLM, DLM使用兩種協作策略在本地生成多個候選原語之間的依賴關系。
圖8所示。依賴學習模塊(DLM)的說明
用例
由于DSRNet基于紋理的結構特性,它對亮度變化和空間變形具有很強的魯棒性。除了紋理分類,它還可以用于其他視覺任務。然而,DSRNet已被證明適合于場景解析和細粒度識別任務。有關DSRNet及其功能的更多信息,請參考//openaccess.thecvf.com/content_CVPR_2020/papers/Zhai_Deep_Structure-Revealed_Network_for_Texture_Recognition_CVPR_2020_paper.pdf
CLASSNet
它是一個使用CLASS (Cross-Layer Aggregation of Statistical Self-similarity)技術構建的神經網絡。這是通過在不同層間改變CNN的結構來實現的,方法是向其添加統計自相似性(SSS),這是紋理的一個眾所周知的屬性。
紋理包含許多相互矛盾的特性,這些特性是由具有統計平穩性的隨機過程捕獲的。
Statistical stationery是指兩個或兩個以上的區域在某些統計方面具有相似的值。紋理中的各種模式都由這些相同的統計數據表示。圖9是一個例子,其中圖像中的三片葉子形狀相似,在統計上是一致的。
圖9,自相似的圖例
為什么它有助于紋理分析
將小波變換與SSS結合形成跨層SSS,以便更好地提取特征圖進行分類。同時將SSS與CNN結合使用,可以得到空間紋理信息。
如何使用它進行基于紋理的分類
如圖10所示,從不同CNN層中選取的特征映射被疊加為特征張量。其中一個沿著通道維度的張量是跨層SSS。使用滑動窗口通過通道對局部特征進行采樣,然后在每個采樣塊上計算差分盒計數(DBC)維數。最后,將所有塊上DBC維度的直方圖用作描述符。
圖10,CLASS的說明。來自CNN的堆疊特征圖是在滑動窗口的幫助下采樣的。計算每個DBC塊的DBC維數,得到每個DBC塊的直方圖
采用跨層方式的特征聚合是在Resnet各層內的卷積層內完成的,Resnet是CLASSNet的主干。由于DBC的計算是基于SSS的,因此可以方便地轉移到ResNet骨干;SSS在改進特征聚合方面也很有用。
圖11,CLASSNet的體系結構說明
圖11簡要描述了ResNet骨干網的連續殘塊(RB)如何與FC層和GAP層連接。殘差塊由幾個卷積層和跳過連接組成。CLASS模塊集成在所有RBs之上。
CLASS模塊有4個階段:
尺寸歸一化:通過對每個特征向量進行1x1卷積,然后向上采樣到一個固定的尺寸來歸一化。
跨層分組:所有特性映射都堆疊在另一個之上。
DBC Pooling:在每個采樣路徑上計算DBC獲得本地補丁。
聚合:聚合前,對feature map(從上一步獲得)進行1x1卷積。對殘差向量應用softmax計算軟直方圖。然后在此基礎上計算軟直方圖并共享bin中心。
用例
CLASSNet模塊沒有引入很多新的參數,除了可學習的bin中心、用于軟直方圖的縮放因子和卷積層的權重 —— 用于大小歸一化,以及用于在DBC池化后生成軟直方圖。
所有這些參數都與ResNet一起訓練。CLASS模塊適用于較輕量級的主干和首選輕量級模型的地方。CLASSNet是一種經過驗證的紋理識別模型,對各種數據集的紋理識別效果良好。有關CLASSNet及其性能的進一步了解,請參閱//openaccess.thecvf.com/content/CVPR2021/papers/Chen_Deep_Texture_Recognition_via_Exploiting_Cross-Layer_Statistical_Self-Similarity_CVPR_2021_paper.pdf。
FENet
通常,CNN經常使用全局平均池(GAP)來捕獲紋理的空間特征,但GAP無法描述來自紋理的復雜分布模式。為此,FENet引入了分形編碼(Fractal Encoding, FE)的概念,利用局部全局層次分形分析,找出紋理在空間排列中的模式。
為什么它有助于紋理分析
分形幾何是一種通常用于紋理合成和紋理分析的方法。許多自然紋理都具有分形維數信息,這些信息告訴我們紋理圖像中圖案的規律性。如圖12所示,有兩種不同類型的紋理。計算這些圖像的分形維數將有助于輕松區分兩種類型的紋理。
圖12,圖像和對應圖像的分形維數
這里,在圖12中,在特定區域的黑白像素值可以是相同的,但紋理的類型是非常不同的。
這些基于分形維數的統計信息被FE (fractal Encoding)用來描述紋理的空間布局,以便更好地提取特征。
如何使用它進行基于紋理的分類
FE使用全局特征編碼模塊,通過特征圖找到特征的空間模式。FE模塊利用分形分析池(FAP)根據圖像的局部分形維數對紋理的點進行分組。圖13是FE模塊完整的深度架構。
圖13,FE模塊完整示意圖。FE模塊從CNN骨干接收輸入,并通過兩條路徑發送。在第一個路徑中,輸入通過GAP和FC層,而在第二個路徑中,輸入通過上采樣層和FAP層。最后,兩者使用雙線性池化層(BLP)[4]進行組合
FAP由三個子部分組成:
局部維數估計塊(LDEB):從輸入特征片創建一個按點的局部分形維數圖。
點分組塊(PGB):從LDEB獲取輸入,根據分形維數圖對特征切片進行分類,即生成一系列軟隸屬度圖。
GDCB (Global Dimension Calculation Block):接受PGB的輸入,計算分形維數
當FE模塊在ResNet的最后一層之前使用時,它的有效性得到了提高。
用例
FENet已經產生了一些令人印象深刻的結果,它可以用于紋理識別,也可以用于問題分割,分類,并在數字圖像中用于紋理的一般建模。要深入了解FE模塊的工作、架構以及計算的分形是如何與ResNet一起使用的,請查看:https://proceedings.neurips.cc/paper/2021/file/c04c19c2c2474dbf5f7ac4372c5b9af1-Paper.pdf。
Histogram
引入了直方圖層,主要利用直方圖捕獲局部空間特征的分布。它使用反向傳播來估計層的參數。直方圖層的合并帶來了兩個優點,即仔細組合過的特征和通過深度學習放大的紋理特征。
直觀的想法
直方圖是處理紋理數據的一種成功而熟練的方法。bin中心和寬度的確定對特征提取具有重要意義。這些邊界不是由人工決定的,而是通過反向傳播來評估的。
為什么它有助于紋理分析?
特性工程是一個廣泛的過程,需要大量的人力、計算能力和時間。傳統上,人們依靠手工技術,如局部二元模式(LBP)和梯度直方圖來區分基于空間分布的特征。后來,深度學習出現了,并開始通過產生更好的結果取代這些技術,但這里的問題是,深度學習需要很多層來提取最好的特征。為了解決這一問題,引入了直方圖層,將深度學習和手工特征的優點結合起來并加以利用。
如何使用它進行基于紋理的分類?
通常,在使用直方圖時,我們手動輸入直方圖的特征(bin center和width),但在這個直方圖層,我們使用徑向基函數(RBF) 作為直方圖bin的操作。
直方圖參數的精確值是通過反向傳播來估計的。如圖14所示,直方圖的參數將作為局部化的直方圖層,它將維護紋理分析的空間內容。
圖14,圖像包含了其他紋理,而不僅僅是草。局部直方圖可以區分圖像中包含純草(上兩個直方圖)或混合其他紋理(下兩個直方圖)的部分
直方圖層主要有兩部分:
軟bin操作:這里使用RBF為直方圖提供平滑估計。當容器中心與特征值相等時,RBF的最大值為1,隨著特征值遠離容器中心,RBF值趨于0。圖像的直方圖特征圖計算如圖15所示,其中M x N為輸入圖像的空間維度,S × T為創建大小為R × c的直方圖的滑動窗口。B為bin的總數。
反向傳播:對于更新,bin中心和寬度直方圖層通過反向傳播使用端到端學習。利用徑向基函數(RBF)計算直方圖層的梯度,并根據特征圖值與bin中心之間的距離更新參數。
圖15,局部直方圖操作的可視化。對于一個給定的圖像,總共生成了B個大小為R x C的直方圖特征圖(B為箱子總數)。輸入圖像的大小是M x N, S x T是滑動窗口的大小
最后在模型中,將輸入圖像傳遞到卷積層提取卷積特征,然后將輸出圖像傳遞到全局平均池化(GAP),最后傳遞到直方圖層,獲取紋理、空間和低階卷積特征。然后,這些特征被連接在一起,然后被輸入一個全連接的層進行分類。直方圖層的位置從1到5不等。在這個圖16中,來自最后一個卷積層(位置5)的特征映射被傳遞到直方圖層。
圖16,ResNet直方圖層。卷積層的輸出被傳遞到GAP層和直方圖層。直方圖層的位置可以從1到5不等
用例
一旦從直方圖和CNN層中提取出圖像中的信息,然后將兩者一起進行微調。直方圖層可以合并到任何人工神經網絡中,可以用于任何紋理分析任務,而不是分類任務,如紋理合成、分割和紋理形狀。
有關直方圖層的更多信息,請查看研究:https://arxiv.org/pdf/2001.00215v9.pdf。
總結
上述討論的方法通常用于各種紋理分類任務。在為基于紋理的分類任務實現深度學習模型時,你可以使用這些技術或從這些技術中獲得見解,并將它們與你的自定義或預訓練的模型一起使用。根據手頭的數據集和任務,明智地使用這些技術將提高模型的準確性。
英文原文:https://medium.com/@trapti.kalra_ibm/how-to-leverage-textural-features-in-deep-learning-architectures-fd817759d5e8
編輯:黃飛
?
評論
查看更多