作者:Trapti Kalra
來源:AI公園,編譯:ronghuaiyang
導讀
本文分析了常見的紋理數(shù)據(jù)集以及傳統(tǒng)CNN在紋理數(shù)據(jù)集分類上效果不佳的原因。
在機器視覺任務中,將紋理分析與深度學習結(jié)合使用,對于獲得更好的結(jié)果起到了重要作用。在前一篇文章中,我們已經(jīng)討論了什么是紋理的基礎知識,不同類型的紋理,以及紋理分析在解決真正的計算機視覺任務中的適用性。我們還解釋了一些最常用和值得注意的提取紋理的技術(shù),此外,我們還演示了如何將這些紋理提取技術(shù)與深度學習結(jié)合起來。 深度學習由多種結(jié)構(gòu)組成,可用于圖像分類任務?;谏疃葘W習的模型經(jīng)常用于圖像分類任務,并在許多不同的用例中產(chǎn)生了出色的結(jié)果,展示了它們的有效性。幾年前,遷移學習的概念出現(xiàn)了,它建議使用使用大數(shù)據(jù)集訓練的模型作為特定用例的骨干,其中,預訓練的骨干模型只是通過使用特定案例的數(shù)據(jù)集來微調(diào)權(quán)重以解決特定任務。經(jīng)過圖像分類訓練的預訓練模型也可用于紋理分類任務。為了檢驗現(xiàn)有傳統(tǒng)的基于cnn的紋理分類模型的效率,我們使用一些公共的基于紋理的數(shù)據(jù)集對其進行性能基準測試。我們觀察到,傳統(tǒng)的CNN結(jié)構(gòu)(如圖5所示)很難產(chǎn)生較好的結(jié)果,并不是很有效地應用于紋理分類任務。
紋理分類以及常用的紋理數(shù)據(jù)集
紋理分析和分類是地形識別、自動醫(yī)療診斷、顯微圖像分析、自動駕駛汽車和爆炸危險檢測等領域的關(guān)鍵任務。在執(zhí)行基于分類的任務時,紋理是一個非常重要的屬性。作為人類,我們可以直觀地看到、理解和區(qū)分紋理,但對于基于人工智能的機器來說,情況并非如此。如果一個人工智能模型能夠識別紋理,那么它在分類任務中的應用將會是一個額外的優(yōu)勢。根據(jù)物體的視覺效果來理解和分類物體可以使人工智能模型更加高效和可靠。
因此,我們?yōu)榧y理分類任務構(gòu)建了模型,并在基于紋理的基準數(shù)據(jù)集(如DTD、FMD、和KTH)上測試模型的有效性?;谶@些數(shù)據(jù)集上任何模型的準確性,我們可以理解并在一定程度上預測它在其他類似數(shù)據(jù)集上的性能。下面我們將提供關(guān)于上述數(shù)據(jù)集的詳細信息。
DTD:它是一個基于紋理的圖像數(shù)據(jù)集,由5640張圖像組成,根據(jù)受人類感知啟發(fā)的47個類別進行組織。每個類別有120張圖片。
圖1,DTD中每個類別的圖
KTH:KTH通常被稱為KTH- tips(在不同的照明、姿勢和比例下的紋理)圖像數(shù)據(jù)庫被創(chuàng)建來在兩個方向上擴展CUReT數(shù)據(jù)庫,通過提供在尺度以及姿態(tài)和照明上的變化,并通過在不同的設置中對其材料的子集進行成像得到其他樣本。有11類的總樣本量是3195。
圖2,KTH-TIPS數(shù)據(jù)集中11個類別,每個類比4張圖
FMD:建立這個數(shù)據(jù)庫的特定目的是捕捉一系列常見材料(如玻璃、塑料等)在現(xiàn)實世界中的外觀。這個數(shù)據(jù)庫中的每一張圖片(總共有10個類別,每個類別有100張圖片)都是手動從Flickr.com(在創(chuàng)作共用許可下)中選擇的,以確保各種照明條件、組合、顏色、紋理和材料子類型。
圖3,F(xiàn)MD數(shù)據(jù)集中每個類比的幾張圖
傳統(tǒng)CNN圖像分類
就現(xiàn)有的傳統(tǒng)CNN而言,這些大多屬于預訓練模型本身或使用這些預訓練層/權(quán)值的模型。在我們的博客中,我們將首先簡要概述什么是預訓練模型,以及如何將其應用于圖像分類任務。
現(xiàn)有的幾種CNN模型都是由不同的研究人員針對圖像分類的任務提出的,這些模型也可以作為許多其他圖像分類相關(guān)任務的預訓練模型。在圖5中,我們可以看到如何將預訓練的層合并到傳統(tǒng)的基于CNN的架構(gòu)中。
在紋理分類任務的情況下,這些預先訓練的模型也可以通過遷移它們的知識,并將它們用于基于紋理的數(shù)據(jù)集。由于這些模型是為特定數(shù)據(jù)集上的圖像分類任務而建立的,而我們在一些不同的數(shù)據(jù)集上使用它們進行紋理分類,我們稱它們?yōu)轭A訓練模型。進一步介紹了圖像分類預訓練模型的一些關(guān)鍵思想:
什么是預訓練模型?
為了簡單地定義一個預先訓練的模型,我們可以將其稱為由其他人訓練的神經(jīng)網(wǎng)絡模型,并為特定的用例提供給其他開發(fā)人員使用。
流行的預訓練模型通常是通過使用一個龐大的數(shù)據(jù)集來解決一個復雜的任務。然后,這些模型被貢獻為開放源碼,因此其他開發(fā)人員可以進一步構(gòu)建或在他們的工作中使用這些模型。通常情況下,使用預先訓練的模型來解決類似的問題是一個好主意,而預先訓練的模型是為這些問題開發(fā)的。在圖4中,一個模型為一個源任務訓練,這個源模型已經(jīng)訓練(預訓練模型)的權(quán)值被用于目標任務。對新開發(fā)的模型進行了一些修改,將預先訓練的模型的權(quán)值進行轉(zhuǎn)移,以獲得更好和更精確的預測結(jié)果。
圖4,使用預訓練模型的方法
使用預訓練的模型作為計算機視覺和自然語言處理的各種問題的起點是非常常見的。從零開始構(gòu)建一個神經(jīng)網(wǎng)絡需要巨大的計算能力、時間和熟練的勞動力。
在這個文章中,我們將著重于應用預訓練模型(訓練用于圖像分類任務)來解決紋理分類任務。
常用的預訓練模型
下面是對預訓練模型的概述,這些模型經(jīng)常用于許多圖像分類相關(guān)的任務。
VGG-16: 2015年發(fā)布的最受歡迎的預訓練圖像分類模型之一。VGG-16是一個深度為16層可調(diào)的神經(jīng)網(wǎng)絡,它在ImageNet數(shù)據(jù)庫中的100萬張圖像上訓練。它能夠?qū)?000個物體進行分類。
Inception v3:一個由谷歌在同一個ImageNet數(shù)據(jù)庫上開發(fā)的預訓練模型。它也被稱為GoogLeNet。Inception v3是一個深度為50層的神經(jīng)網(wǎng)絡。在2014年的ImageNet競賽中,InceptionV3獲得了第一,而VGG-16獲得了亞軍。它只有700萬個參數(shù),這比以前的模型要小得多,除此之外,它的錯誤率很低,這是該模型的一個主要成就。
ResNet50:原始模型稱為殘差網(wǎng)或ResNet,它是微軟在2015年開發(fā)的。ResNet50是一個深度為50層的神經(jīng)網(wǎng)絡。ResNet50還訓練了來自ImageNet數(shù)據(jù)庫的100萬張圖像。與VGG16相比,ResNet復雜度更低,結(jié)果優(yōu)于VGG16。ResNet50旨在解決梯度消失的問題。
EfficientNet:它是谷歌于2019年訓練并向公眾發(fā)布的最先進的卷積神經(jīng)網(wǎng)絡。在EfficientNet中,作者使用了一種新的縮放方法,稱為復合縮放,我們在同一時間縮放固定數(shù)量的維度,并且我們均勻地縮放。通過這樣做,我們可以獲得更好的性能,縮放系數(shù)可以由用戶自己決定。EfficientNet有8種實現(xiàn)(從B0到B7)。
為我們的用例利用和調(diào)整預訓練模型的方法
由于我們所處理的數(shù)據(jù)與預訓練模型所訓練的數(shù)據(jù)不同,因此需要根據(jù)我們的數(shù)據(jù)更新模型的權(quán)重,以了解特定領域的信息。因此,我們需要對數(shù)據(jù)的模型進行微調(diào)。
下面我們將討論一些在特定用例中使用預先訓練過的模型的機制。
特征提取?- 使用預訓練模型作為特征提取機制。我們可以移除輸出層(即給出了1000個類中每個類的概率),然后使用整個網(wǎng)絡作為新數(shù)據(jù)集的固定特征提取器。
訓練一些層,同時凍結(jié)其他層?- 預訓練的模型可以用來部分訓練我們的模型,其中我們保持初始層的權(quán)重凍結(jié),并重新訓練更高層的權(quán)重。根據(jù)一些實驗,我們可以看到有多少層需要凍結(jié),有多少層需要訓練。
使用預訓練模型的體系結(jié)構(gòu)?- 我們可以從模型的體系結(jié)構(gòu)中獲得幫助,并使用它隨機初始化模型的權(quán)重。然后我們可以根據(jù)我們的數(shù)據(jù)集和任務訓練模型,這樣我們就有了一個很好的架構(gòu),可以為我們的任務帶來很好的結(jié)果。
在處理任何類型的圖像分類問題時,微調(diào)和使用預先訓練的模型是一個聰明的解決方案。此外,這些傳統(tǒng)的/預先訓練的CNN模型也產(chǎn)生了良好的結(jié)果,然而,這些架構(gòu)在對基于紋理的數(shù)據(jù)集進行分類時表現(xiàn)不佳。
為什么傳統(tǒng)的CNN架構(gòu)在基于紋理的數(shù)據(jù)集的分類任務中表現(xiàn)不佳?
圖5,傳統(tǒng)CNN結(jié)構(gòu)的4個主要部分 傳統(tǒng)的CNN架構(gòu)通常包括預訓練層,在此基礎上添加一些CNN層的可訓練塊,然后將其輸出傳遞到全連接層進行類預測。由圖5可以看出,傳統(tǒng)的CNN架構(gòu)主要有四個主要組件,用A、B、C、和D四個塊來描述。第一個分量是輸入層(描述為塊A),第二個是預先訓練的層/權(quán)值(描述為塊B),第三個分量是可訓練的CNN塊(描述為塊C),它的輸出傳遞給第四個分量(描述為塊D)的全連接層。傳遞給全連接層的輸入通常包括全局特征而不是局部特征。這種通用架構(gòu)適用于大多數(shù)需要圖像全局特征來對圖像進行分類的任務。然而,這些類型的架構(gòu)很無法很準確的預測類別,在這些類中,全局特征和局部特征都參與了類的預測。
CNN模型的復雜性隨著網(wǎng)絡深度的增加而增加,最后一層通常傾向于捕捉圖像的復雜特征。從卷積層捕獲的特征被發(fā)送到全連接層,以獲取圖像中物體的形狀信息并預測其類別。這些關(guān)于整體形狀和高度復雜特征的信息不適合用于紋理分析,因為紋理是基于復雜度較低的重復局部位置模式,這需要豐富的基于局部的特征提取。
為了利用為圖像分類而開發(fā)的基于CNN的模型進行紋理分類,利用網(wǎng)絡的CNN層輸出中提取的特征進行域轉(zhuǎn)移。在使用預先訓練的CNN進行基于紋理的分類時,我們面臨三個主要缺點,如下所示。
全連接的層發(fā)布卷積層捕捉圖像的空間布局,這對于表示物體的形狀很有用,但對于表示紋理卻不太有用
一個固定大小的輸入需要發(fā)送到CNN,以便它與全連接層兼容。這通常是一項昂貴的任務
預訓練的CNN的更深層可能是非常具體的領域,可能不是很有用的紋理分類
眾所周知,任何圖像的紋理都是通過其局部結(jié)構(gòu)和局部像素分布來定義的。要分析任何圖像的紋理特征,必須研究其基于局部的特征,并將其傳遞給全連接層。但是傳統(tǒng)的CNN不能將基于局部的特征傳遞給全連接層,因為傳統(tǒng)CNN架構(gòu)的最后一個CNN層是利用復雜的特征來捕捉物體的整體形狀,并提取全局特征(如圖5所示),而不是捕捉局部特征的模式。這就是傳統(tǒng)CNN架構(gòu)在基于紋理的數(shù)據(jù)集上表現(xiàn)不佳的原因。
在已有的CNNs中加入紋理提取特征技術(shù),可以提高紋理分類任務的結(jié)果。表1比較了傳統(tǒng)的CNN方法vs方法使用Resnet-50骨干以及一些特征提取技術(shù)。
表1,傳統(tǒng)CNN模型和使用特征提取技術(shù)的Resnet-50在基準數(shù)據(jù)集上的結(jié)果比較 將紋理特征提取策略與深度學習相結(jié)合的模型往往比傳統(tǒng)的深度學習方法產(chǎn)生更好的結(jié)果。這是因為傳統(tǒng)的CNN模型捕捉了通常對目標檢測有用的復雜特征,而紋理是使用局部重復的模式/特征識別的。 可以使用自定義的深度卷積網(wǎng)絡來改進CNN,在卷積層之后,隨著CNN引入各種紋理提取技術(shù)。 將紋理提取層和預訓練層結(jié)合在一起的自定義深度卷積網(wǎng)絡不如單獨使用預訓練模型或統(tǒng)計地使用紋理特征提取器靈活。我們將在后面的文章中討論紋理特征提取和預訓練模型。
編輯:黃飛
評論