Fine-Grained Visual Classification via Progressive Multi-Granularity Training of Jigsaw Patches
abstract
細粒度可視分類(FGVC)比傳統分類任務更具挑戰性,因為類內對象的內在微妙變化。最近的研究主要集中在如何定位最具區別性的部分、更互補的部分以及不同粒度(granularities)的部分上。然而,對於哪些粒度是最具區別性的,以及如何在多粒度之間融合信息這兩方面,人們所做的努力較少。在這項工作中,我們提出了一個新的細粒度視覺分類框架來解決這些問題。特別地,我們提出:(i)一種新穎的漸進訓練策略,在每個訓練步驟中增加新的層次去利用在最后一步和前面階段發現的更小粒度的信息。(ii)一個簡單的拼圖生成器(jigsaw puzzle generator),生成包含不同粒度級別信息的圖像。我們在幾個標准的FGVC基准數據集上獲得了最先進的性能,其中所提出的方法始終優於現有方法或提供有競爭力的結果。代碼可見https://github.com/RuoyiDu/PMG-Progressive-Multi-Granularity-Training
1 Introduction
細粒度視覺分類(FGVC)旨在識別給定對象類別的子類,例如,不同種類的鳥類,以及不同汽車和飛機的模型。這是一個比傳統分類更具挑戰性的問題,因為子類之間的類內對象的內在微妙變化。迄今為止,最有效的解決方案依賴於在局部判別區域提取細粒度特征表示,或通過顯式檢測語義部分[11,38,35,12,36]或通過顯著性定位[31,10,4,24]進行隱式檢測。然后對這些局部判別特征進行綜合融合,進行最終分類。
早期的工作大多是借助人工標注來發現判別區域[2,21,34,37,16]。然而,人工注釋很難獲得,而且常常容易出錯,從而導致性能下降[38]。因此,研究焦點已經轉移到僅給予類別標簽的弱監督的訓練模型[38,35,31,4]。這些模型的成功在很大程度上可以歸因於能夠定位更具區分度的局部區域去進行分類。然而很少或根本沒有努力是朝着以下的兩個方面的, (i)粒度即這些最具區分度的局部區域,例如,一只鳥的頭或鳥喙,和(ii)如何將不同粒度的信息融合在一起去提高分類准確性,例如,鳥的頭部和嘴信息可以融合在一起。
然而,跨不同粒度的信息有助於避免大的類內變化的影響。例如,專家有時需要同時利用鳥頭部的整體結構和更精細的細節(如鳥喙的形狀)來識別一只鳥。也就是說,僅僅識別有區分度的parts往往是不夠的,還需要了解這些parts如何以互補的方式相互作用。最近的研究集中在“放大”因素[11,36],也就是說,不僅僅是識別parts,而且還集中在每個parts真正有區分度的區域(例如,喙,而不是頭部)。然而,這些方法主要集中在幾個parts,忽略了其他地方,因為使用了放大法,而不是簡單的融合。更重要的是,他們沒有考慮如何將不同放大parts的特征以協同的方式融合在一起。與這些方法不同的是,我們進一步認為,人們不僅需要識別parts及其最具區分度的粒度,同時還需要如何有效地合並不同粒度的parts。
在本文中,我們對細粒度分類采取另一種立場。我們既不顯式也不隱式地試圖從parts(或其放大版本)中挖掘細粒度的特征表示。相反,我們以一種假設來處理這個問題,即細粒度的區分信息自然地存在於不同的視覺粒度中——這都是為了鼓勵網絡在不同粒度上學習,同時融合多粒度特征。圖1可以更好地解釋這一點。
更具體地說,我們提出了一個整合的框架,同時適應part粒度學習和跨粒度特征融合。這是通過兩個相互協同工作的組件實現的:(i)一個漸進的訓練策略,有效地融合來自不同粒度的特征,和(ii)一個隨機jigsaw patch生成器,鼓勵網絡在特定粒度學習特征。注意,我們沒有使用“scale”,因為我們沒有對圖像patch應用高斯模糊過濾器,而是均勻地划分和打亂圖像patch,形成不同的粒度級別。
作為第一個貢獻,我們提出了一個多粒度漸進訓練框架來學習不同圖像粒度之間的互補信息。這與現有技術顯著不同,現有技術首先檢測parts,然后以特別的方式融合。在訓練過程中,我們的漸進框架是分步驟進行的,在每個步驟中,訓練的重點是利用網絡的相應階段培養特定粒度的信息。我們從更穩定的更細的粒度開始,逐漸轉向更粗的粒度,從而避免出現在大區域的大型類內變化所造成的混亂。就其本身而言,這類似於“縮小”操作,網絡將聚焦於一個局部區域,然后縮小圍繞這個局部區域的更大的區域,直到我們得到整個圖像時結束。更具體地說,當每個訓練步驟結束時,在當前步驟中訓練的參數將作為參數初始化傳遞到下一個訓練步驟。這種傳遞操作本質上是使網絡能夠基於前一個訓練步驟中學習到的區域挖掘粒度更大的信息。從所有階段提取的特征只在最后一步進行連接,以進一步確保互補關系得到充分挖掘。
然而,簡單地應用漸進訓練不會對細粒度特征學習有好處。這是因為通過漸進訓練學習到的多粒度信息可能傾向於關注相似的區域。第二個貢獻是,我們通過引入一個jigsaw puzzle生成器在每個訓練步驟形成不同的粒度級別來解決這個問題,並且只有最后一個步驟仍然使用原始圖像進行訓練。這有效地鼓勵模型在patch級別上操作,其中patch大小是特定於特定粒度的。它本質上迫使網絡的每個階段關注局部patch而不是整個圖像,因此學習特定於給定粒度級別的信息。圖1演示了這種效果。請注意,[4]最近的工作首先采用了jigsaw solver來解決細粒度分類。我們的顯著不同之處在於我們不使用jigsaw solver作為特征學習的一部分。相反,我們只是簡單地隨機生成jigsaw patch,以引入不同的對象parts級別來輔助漸進訓練。
本文的主要貢獻歸納如下:
1. 我們提出了一種新的漸進訓練策略來解決細粒度分類問題。它在不同的訓練步驟中運行,每一步都融合來自先前粒度級別的數據,最終在不同粒度之間培養固有的互補屬性,用於細粒度特征學習。
2. 我們采用了一個簡單而有效的jigsaw puzzle生成器來形成不同級別的粒度。這允許網絡和之前的工作一樣專注於不同的“scales”特性。
3.提出的漸進多粒度(Progressive Multi-Granularity,PMG)訓練框架在所有三個標准的FGVC基准數據集上獲得最先進的或有競爭力的性能。
2 Related Work
2.1 Fine-Grained Classification
得益於近年來神經網絡的發展,如VGG[28]、ResNet[14]等,神經網絡的特征提取能力得到了顯著提高。近年來,關於FGVC的研究已經從帶有額外標注的強監督情境(如bounding box[2,21,34,37,16])轉變為僅帶有類別標簽的弱監督情境(如類別標簽[11,38,35,12,36])。
在弱監督結構中,最近的研究主要集中在定位最具區別性的部分、更互補的部分和各種粒度的部分。然而,很少有人考慮如何更好地將這些判別部分的信息融合在一起,目前的融合技術大致可以分為兩大類。(i)第一種方法是根據不同的parts進行預測,然后直接將它們的概率組合在一起[36]。Zhang等人[36]訓練了幾個針對不同粒度特征的網絡,產生不同的預測分布,然后對其結果進行加權,然后將其組合在一起。(ii)其他一些方法將從不同parts提取的特征連接在一起進行下一個預測[38,11,12,35]。Fu等人發現區域檢測和ne-grained特征學習可以相互增強,並建立了一系列的網絡,在進行預測時為下一個網絡尋找有區分度的區域。Zheng等[38]以相似的動機,共同學習了part proposals和每個part上的特征表示,並在預測前定位各種判別parts。它們都訓練一個全連接的融合層來融合從不同parts提取的特征。Ge等人的[12]更進一步,用兩個LSTMs疊加在一起融合互補對象parts的特征。
不同parts特征的融合仍然是一個具有挑戰性的問題,但目前在這方面的研究還很少。在本研究中,我們試圖基於細粒度對象的內在特征來解決這一問題:盡管具有較大的類內變化,但細微細節在局部區域表現出穩定性。因此,我們不是先定位有區分度的特征,而是引導網絡從小粒度逐步學習到大粒度。
2.2 Image Splitting Operation
在以前的研究中,將圖像分割成相同大小的碎片用於不同的目標。其中一種典型的解決方法是解決jigsaw puzzle[6,29]。它還可以更進一步,采用jigsaw puzzle解決方案作為弱監督網絡的初始化,從而獲得更好的轉換性能[33]。該方法有助於網絡充分利用圖像的空間關系。在one-shot學習中,使用圖像分割操作進行增強,將兩幅圖像分割,並交換其中的一些patch,生成新的訓練圖像[5]。在最近的研究中,DCL[4]首先對FGVC進行圖像分割操作,通過破壞全局結構來強調局部細節,並重建圖像來學習局部區域之間的語義關聯。但是,在整個訓練過程中,分割的圖像大小都是相同的,這就意味着很難利用多粒度區域。在這項工作中,我們使用一個jigsaw puzzle生成器來限制每個訓練步驟中學習區域的粒度。
2.3 Progressive Training
漸進式訓練方法最初被提出用於生成式對抗網絡[18],它從低分辨率圖像開始,然后通過向網絡添加層來逐步提高分辨率。這種策略讓網絡發現圖像分布的大規模結構,然后將注意力轉移到尺度細節上,而不是從所有尺度上學習信息。近年來,漸進訓練策略被廣泛應用於生成任務[19,27,32,1],它通過中間監督簡化了信息在網絡中的傳播。
對於FGVC,多粒度信息的融合對模型的性能至關重要。在這項工作中,我們采用漸進訓練的思想來設計一個單一的網絡,可以通過一系列的訓練階段來學習這些信息。首先將輸入圖像分割成小patches,訓練低級層次
的模型。然后逐步增加patches的數量,並相應地添加相應的層,高級層被添加進來並進行訓練。目前采用漸進訓練的大部分工作都集中在樣本生成的任務上。據我們所知,在FGVC任務中還沒有嘗試過這種方法。
3 Approach
在本節中,我們將介紹我們提議的漸進多粒度(PMG)訓練框架。如圖2所示,為了解決類內的大變化問題,我們鼓勵模型在較淺的層次學習穩定的細粒度信息,並隨着訓練的進行逐步將注意力轉移到較深層次的大粒度抽象信息的學習上。
3.1 Network Architecture
我們網絡設計是通用的,可以使用在所有現有先進的backbone特征抽取器上,如Resnet[14]。讓F表示backbone特征抽取器,其有着L個階段。來自中間階段的輸出特征map表示為,其中
分別表示
階段的特征map的高、寬和channels數量,其中
。這里,我們的目標是在從不同的中間階段抽取的特征map上使用分類損失。因此,除了F,我們引入卷積塊
,其將
層的中間階段輸出
作為輸入,並將其縮減為一個向量表征
。然后,每個
層后跟隨着一個包含了兩個帶有BatchNorm[17]和Elu[7]非線性函數的全連接層的分類模塊
,用來預測類的概率分布
。這里我們考慮最后的S個階段:
。最后,我們串聯來自最后三個階段的輸出:
其后跟隨一個額外的分類模塊
3.2 Progressive Training
我們采用漸進式訓練,首先訓練低階段,然后逐步增加新的訓練階段。由於低階段的感知域和表達能力有限,網絡將被迫首先從局部細節(如物體紋理)中挖掘有區分度的信息。與直接訓練整個網絡相比,這種增量特性允許模型在特征逐步發送到更高階段時,從局部細節到全局結構定位有區分度的信息,而不是同時學習所有粒度。
對於每個階段的輸出和最后串聯特征的輸出的訓練,我們在ground truth標簽y和預測概率分布之間采用了交叉熵損失(CE),用於損失計算:
在每次迭代中,一個batch的數據d將被用於S+1步,我們只會按順序在每一步訓練一個階段輸出。需要明確的是,當前預測中使用的所有參數都將得到優化,即使它們可能已經在前面的步驟中更新,這可以幫助模型中的每個階段一起工作。
3.3 Jigsaw Puzzle Generator
Jigsaw Puzzle solving[33]十分適合用於表征學習的自我監督任務。相反,我們借用jigsaw puzzle的概念來為不同的漸進訓練步驟生成輸入圖像。目標是設計不同的粒度區域,並在每個訓練步驟強制模型學習特定於相應粒度級別的信息。給定輸入圖像,我們均勻地將其分成nxn個patches,每個的維度為
。W和H應該為n的整數倍。然后,這些patches會被隨機打亂,然后合並為一個新的圖像P(d,n)。在這里,patches的粒度受超參數n的控制。
對於每個階段的超參數n的選擇,需要滿足兩個條件:(i)patches的大小要小於對應階段的接受域,否則會降低jigsaw puzzle生成器的性能;(ii)隨着各階段接受域的增加,patches的大小應成比例增加。通常,每個階段的接受域大約是上一個階段的兩倍。因此,對於階段的輸出,我們設n為2L−l+1。
訓練期間,一個batch的d個訓練數據將首先被增強為jigsaw puzzle 生成器處理后的batch,獲得P(d, n)。所有的jigsaw puzzle 生成器處理后的batch共享相同的標簽yl。然后,對階段的輸出yl,我們輸入batch P(d, n), n = 2L−l +1,並優化所有的參數用於傳播。圖2一步一步地說明了訓練過程。
需要說明的是,jigsaw puzzle 生成器不能總是保證所有小於patches大小的parts的完整性。雖然可能存在一些比patch大小小的部分,但這些parts仍然有可能被分割。但是對於模型訓練來說,這也不是一個壞消息,因為我們在jigsaw puzzle 生成器之前采用的是一種標准的數據增強策略——隨機裁剪,導致的結果是patches與之前迭代的patches不同。在這個迭代中由於jigsaw puzzle 生成器而被分割的小的有區分度的parts,在其他迭代中不會總是被分割的。因此,它帶來了一個額外的優勢,即強制我們的模型在特定粒度級別上找到更多有區分度的parts。
3.4 Inference
在推理階段,我們僅輸入原始圖像到訓練模型中,不再使用jigsaw puzzle 生成器。如果我們僅使用去預測,那么其他三個階段的FC層將被移除,減少計算負擔。這樣,最后的結果C1可以表示為:
然而,基於特定粒度信息的單個階段的預測是唯一且互補的,當我們以相同的權重將所有輸出組合在一起時,這將導致更好的性能。多輸出組合預測C2可以寫成
因此,我們的模型既可以得到的預測,也可以得到多輸出組合預測。另外,雖然所有的預測都是對最終結果的補充,但是對於那些形狀相對光滑的物體,例如汽車,
已經足夠了。更多實驗細節見第4節。
4 Experiment Results and Discussion
在本節中,我們在三個 ne-grained圖像分類數據集上評估所提出的方法的性能:Caltech UCSD-Birds (CUB)[30]、Stanford Cars (CAR)[20]和FGVC-Aircraft (AIR)[25]。首先,4.1節介紹了實現細節。隨后,4.2節給出了與其他最先進方法的分類精度比較。為了說明在我們的方法中不同部件和設計選擇的優勢,在4.3和4.4節提供了一個全面的ablation研究和可視化。
4.1 Implementation Details
我們在GTX 2080 gpu集群上使用高於1.3版本的PyTorch[26]進行所有實驗。在廣泛使用的backbone VGG16[28]和ResNet50[14]上對該方法進行了評價,總階段數設置為L = 5。為了獲得最佳性能,我們設置S = 3,α= 1,和β= 2。圖像的類別標簽是唯一用於訓練的注釋。將輸入圖像大小調整為550×550,隨機裁剪為448×448,並在訓練模型時使用隨機水平ip進行數據增強。在測試過程中,輸入圖像的大小被調整為550×550,並從中心裁剪為448×448。以上設置均為文獻標准。
我們使用隨機梯度下降優化器(SGD)和batch normalization作為正則化器。同時,我們新添加的卷積層和FC層的學習率分別初始化為0.002,並在訓練過程中按照cosine annealing schedule[23]降低學習率。預訓練的卷積層的學習率保持為新添加層的1/10。對於上述所有模型,我們對它們進行了300個epoch的訓練,批大小為16,使用的權重衰減為0.0005,動量為0.9。
4.2 Comparisons with State-of-the-Art Methods
表1列出了我們的方法與其他最先進的方法在CUB-200-2011、Stanford Cars和FGVC-Aircraft上的比較。列出了的精度和所有四種輸出的組合精度。
CUB-200-2011 由於在測試過程中只需要一個網絡和一個前向傳播,所以我們在一個簡單的實驗過程中就可以在這個數據集上獲得具有競爭力的結果。我們的方法比RA-CNN[11]和MGE-CNN[36]的性能要好4.3%和1.1%,盡管他們建立了幾個不同的網絡來學習不同粒度的信息。他們分別訓練每個網絡的分類,然后將它們的信息組合起來進行測試,這證明了我們在一個網絡中逐步開發多粒度信息的優勢。此外,即使堆疊LSTM[12]的性能比我們的方法好,它也是一種兩階段算法,需要Mask-RCNN[13]和CPF提供互補的對象parts,然后使用雙向LSTM[15]進行分類,導致更多的推理時間和計算預算。
Stanford Cars 我們的方法以Resnet50為基礎模型,實現了最先進的性能。由於Stanford cars數據集的cars剛性要高得多,的性能也足夠好,所以組合多級輸出的改進並不明顯。我們的方法通過采用更先進的backbone網絡DenseNet161提高了性能,但其結果超過了PC[10]。對於MA-CNN[38]和NTS-Net[35],他們首先定位幾個不同的判別部分,然后結合提取的特征進行最終分類,我們的表現比它們高出2.3%和1.2%。
FGVC-Aircraft 在這個任務上,我們的方法的多級輸出組合結果也達到了最先進的性能。雖然S3N[9]在特征提取中同時找到了判別部分和互補部分,並對這些部分進行了額外的非均勻變換來突出這些部分,但是在相同的backbone網絡ResNet50下,我們仍然比它強0.6%,即使采用VGG16作為基礎網絡,也表現出了有競爭力的結果。
4.3 Ablation Study
我們進行消融研究以了解漸進式訓練策略和jigsaw puzzle生成器的有效性。我們選擇CUB-200-2011 數據集進行實驗,bacobone網絡為ResNet50,也就是說L階段的總個數為5個。我們首先設計不同的運行,將輸出的階段數從1個增加到5個,並且沒有jigsaw puzzle生成器,如表2所示。被保存在所有的運行中,並且步數是S+1。可見,當S < 4時,S的增加顯著提高了模型性能。然而,我們也注意到,當S變為4時,精度開始下降。可能的原因是,低階段層主要關注與類無關的特征,但額外的監督會迫使其尋找與類相關的信息,從而影響整體性能。
在表3中,我們在jigsaw puzzle 生成器的幫助下報告了我們的方法的結果。第階段的jigsaw puzzle生成器的超參數n遵循n = 2L−l+1的模式。與表3的結果相比,當S < 4時,jigsaw puzzle 生成器在漸進訓練的基礎上提高了模型性能。當S = 4時,帶有jigsaw puzzle 生成器的模型沒有表現出任何優勢,當S = 5時,jigsaw puzzle generator降低了模型性能。這是因為當n > 8時,分割的patches太小,不能保留有意義的信息,這就混淆了模型訓練。
根據以上分析,當我們選擇合適的s時,漸進訓練有利於細粒度分類任務。在這種情況下,jigsaw puzzle生成器可以進一步提高性能。
4.4 Visualization
為了說明該方法的優越性,我們利用Grad-CAM實現了該方法和基線模型的最后三個階段卷積層的可視化。圖3中的(a)-(c)列是我們模型backbone第三至第五階段的卷積層的可視化,由jigsaw puzzle 生成器以n ={8,4,2}的順序生成的圖像監督。在(a)欄中可以清楚地看出,模型集中在第三階段的小粒度區分部分,如鳥眼和鳥類羽毛的小圖案或紋理。在(c)列中,模型的第五階段關注粒度較大的部分。可視化結果表明,該模型能夠實現由小粒度到大粒度的區分部分逐步進行預測。
與基線模型的激活圖相比,我們的模型在目標對象上顯示出更多有意義的集中,而基線模型僅在最后階段顯示出正確的注意力。這一差異表明,漸進訓練的中間監督有助於模型在早期階段定位有用信息。此外,我們發現基線模型通常只關注對象的一個或兩個部分,在最后階段進行預測。然而,我們的方法在每個階段的注意區域幾乎覆蓋了整個對象,這表明由jigsaw puzzle生成器生成的圖像可以迫使模型在每個粒度級別上學習更多的有區分度的parts。
5 Conclusions
本文在細粒度的分類任務中使用漸進的訓練策略,提出一個新的框架,命名為Progressive Multi-Granularity (PMG) Training,其主要包含兩個主要組件:(i)新的訓練策略,其采用循序漸進的方式去融合多粒度特性,和(2)一個簡單的jigsaw puzzle生成器生成包含不同粒度級別信息的圖像。我們的方法可以實現端到端的訓練,除了類別標簽,不需要其他手動注釋,並且在測試過程中只需要一個帶有一次前向傳播的網絡。在3個廣泛應用的細粒度數據集上進行了實驗,其中2個獲得了最先進的性能,另一個獲得了較好的結果,證明了該方法的有效性。