细粒度图像分析_图像分类研究现状
一、概述
資源
Awesome Fine-grained Visual Classification
 Awesome Fine-Grained Image Analysis – Papers, Codes and Datasets—-weixiushen
什么是細粒度圖像分類
細粒度圖像分類問題是對大類下的子類進行識別。細粒度圖像分析任務相對通用圖像(General/Generic Images)任務的區別和難點在于其圖像所屬類別的粒度更為精細。
 以圖1為例,通用圖像分類其任務訴求是將“袋鼠”和“狗”這兩個物體大類(藍色框和紅色框中物體)分開,可見無論從樣貌、形態等方面,二者還是很容易被區分的;而細粒度圖像的分類任務則要求對“狗”該類類別下細粒度的子類,即分別為“哈士奇”和“愛斯基摩犬”的圖像分辨開來。正因同類別物種的不同子類往往僅在耳朵形狀、毛色等細微處存在差異,可謂“差之毫厘,謬以千里”。不止對計算機,對普通人來說,細粒度圖像任務的難度和挑戰無疑也更為巨大。
 
意義
細粒度圖像分類無論在工業界還是學術界都有著廣泛的研究需求與應用場景。與之相關的研究課題主要包括識別不同種類的鳥、狗、花、車、飛機等。在實際生活中,識別不同的子類別又存在著巨大的應用需求。例如, 在生態保護中, 有效識別不同種類的生物,是進行生態研究的重要前提。如果能夠借助于計算機視覺的技術, 實現低成本的細粒度圖像識別, 那么無論對于學術界, 還是工業界而言, 都有著非常重要的意義。
細粒度圖像分類的挑戰
由于分類的粒度很小,細粒度圖像分類非常困難,在某些類別上甚至專家都難以區分。主要原因有三:
 子類之間差異細微:只在某個局部上有細微差異,如狗的眼睛
 子類內部差異巨大:如姿態、背景帶來的差異
 受視角、背景、遮擋等因素影響較大
細粒度分類常用方法
目前細粒度圖像分類基本上都 采用深度學習的方法,取得不錯的效果。具體來說,大致可以分為以下幾類:
- 使用通用DCNN(Deep Convolutional Neural Network,深度卷積神經網絡)進行細粒度分類,該方法難以捕獲有區別性的局部細節,目前已經不太常用;
- 基于定位-識別的方法:先找到有區分度的局部,然后進行特征提取和分類,該方法又可分為強監督和弱監督兩種;
- 基于網絡集成的方法:使用多個DCNN對細粒度識別中的相似特征進行判別;
- 卷積特征的高階編碼方法:將cnn特征進行高階轉換然后進行分類,主要有fisher vector、雙線性模型、核融合等。
二、基于定位-識別的方法
人類區分相似物體時,通常會通過快速掃描的方式先找到具有區別性的區域,然后在該區域仔細進行比對識別。與人類的方式類似,基于定位-識別的方法將細粒度圖像識別分為兩個部分:區別性區域定位和區域中的細粒度特征學習。在區別性區域定位時,通常會以強監督或弱監督的方式利用深度神經網絡的卷積特征響應;而在細粒度特征學習時,則從定位到的各個區域中分別抽取特征,并將各特征組合到一起最后進行分類。
 強監督的方法不僅需要類別標簽,而且需要部件標注和關鍵部位框,該種方法取得了不錯的效果,但缺點在于需要昂貴的人工標注,而且人工標注的位置不一定是最佳的區別性區域,這完全依賴于標注者的認知水平。
 進來,很多弱監督的方法被提出來。該類方法利用注意力機制、聚類等手段來自動發現區別性區域,不需要部件標注,僅僅有分類標簽即可完成訓練。
 當前有很多方法在朝這方面努力,從大的發展趨勢來看,基于定位-分類的細粒度圖像分類方法經歷了從手工特征工程到多階段方法再到end to end的發展過程。
2.1 強監督
所謂“強監督細粒度圖像分類模型”是指:在模型訓練時,為了獲得更好的分類精度,除了圖像的類別標簽外,還使用了物體標注框(Object Bounding Box)和部位標注點(Part Annotation)等額外的人工標注信息,如下圖所示。
 
2.1.1 Part-based R-CNN
<Part-based R-CNNs for fine-grained category detection – ECCV2014>
 相信大家一定對R-CNN不陌生,顧名思義,Part-based R-CNN就是利用R-CNN算法對細粒度圖像進行物體級別(例如鳥類)與其局部區域(頭、身體等部位)的檢測,其總體流程如下圖所示。
 
 首先利用Selective Search等算法在細粒度圖像中產生物體或物體部位可能出現的候選框(Object Proposal)。之后用類似于R-CNN做物體檢測的流程,借助細粒度圖像中的Object Bounding Box和Part Annotation可以訓練出三個檢測模型(Detection Model):一個對應細粒度物體級別檢測;一個對應物體頭部檢測;另一個則對應軀干部位檢測。然后,對三個檢測模型得到的檢測框加上位置幾何約束,例如,頭部和軀干的大體方位,以及位置偏移不能太離譜等。這樣便可得到較理想的物體/部位檢測結果(如圖3右上)。
 接下來將得到的圖像塊(Image Patch)作為輸入,分別訓練一個CNN,則該CNN可以學習到針對該物體/部位的特征。最終將三者的全連接層特征級聯(Concatenate)作為整張細粒度圖像的特征表示。顯然,這樣的特征表示既包含全部特征(即物體級別特征),又包含具有更強判別性的局部特征(即部位特征:頭部特征/軀干特征),因此分類精度較理想。
Part R-CNN的進步是明顯的. 從局部區域的檢測定位, 到特征的提取, 該算法均基于卷積神經網絡, 并針對細粒度圖像的特點進行改進優化, 以改進通用物體定位檢測算法在該任務上的不足, 達到了一個相對比較高的準確度. 同時,該算法進一步放松了對標記信息的依賴程度, 在測試時無需提供任何標記信息, 大大增強了算法的實用性. 、
 其不足之處在于,第一是 利用自底向上的區域產生方法, 會產生大量無關區域, 這會在很大程度上影響算法的速度. 第二是不僅在訓練時需要借助Bounding Box和Part Annotation,為了取得滿意的分類精度,在測試時甚至還要求測試圖像提供Bounding Box,這便限制了Part-based R-CNN在實際場景中的應用。第三是該算法本身的創新性十分有限, 既然局部區域對于細粒度圖像而言是關鍵所在, 那么對其進行定位檢測則是必要的途徑. 只是引入現有的通用定位算法, 似乎并不能很好地解決該問題。
2.1.2Pose Normalized CNN
<Bird Species Categorization Using Pose Normalized Deep Convolutional Nets – 2014>
 姿態歸一化CNN的創新之處在于使用原型對圖像進行了姿態對齊操作, 并針對不同的局部區域提取不同網絡層的特征, 以試圖構造一個更具區分度的特征表示. 它在原有的局部區域模型的基礎上, 進一步考慮了鳥類的不同姿態的干擾, 減輕了類內方差造成的影響, 從而取得了較好的性能表現. 但是, 該算法對于關鍵點的檢測精度較為敏感, 利用DP算法對關鍵點進行檢測, 其精度為75.7%。
有感于Part-based R-CNN,S. Branson等人提出在用DPM算法得到Part Annotation的預測點后同樣可以獲得物體級別和部位級別的檢測框,如下圖所示。與之前工作不同的是,Pose Normalized CNN對部位級別圖像塊做了姿態對齊操作。
此外,由于CNN不同層的特征具有不同的表示特性(如淺層特征表示邊緣等信息,深層特征更具高層語義),該工作還提出應針對細粒度圖像不同級別的圖像塊,提取不同層的卷積特征。該網絡將經過姿態歸一化提取的conv5、fc6等底層特征與未對齊的fc8高級特征進行融合。
訓練階段,姿態歸一化網絡使用DPM預測2D位置及13個語義部位關鍵點,或者直接使用已提供的物體框及部位標注信息學習姿態原型。將不同的部位圖像進行彎曲,并且使用不同的DCNN(AlexNet)提取其特征。最后拼接各個部位及整張圖像的特征訓練分類器。
最終,還是將不同級別特征級聯作為整張圖像的表示。如此的姿態對齊操作和不同層特征融合方式,使得Pose Normalized CNN在使用同樣多標記信息時取得了相比Part-based R-CNN高2%的分類精度。
2.1.3 基于多候選區集成的部件定位(Part localization using multi-proposal consensus)
<Part Localization using Multi-Proposal Consensus for Fine-Grained Categorization – BMVA2015>
使用基于AlexNet的單個DCNN定位關鍵點和區域。
將AlexNet最后的fc8層替換為兩個產生關鍵點及視覺特征的輸出層。使用邊緣框分塊(edge box crops)方法將圖像分塊,之后產生其特征點位置及視覺特征,去除自信度低的預測結果。之后取剩余預測結果的中心點,作為最終關鍵點預測結果。并使用將部件檢測網絡中關鍵點位置的特征,將其拼接,使用200路一對所有SVM分類器進行分類。
2.1.4部件堆積CNN(Part-stack CNN,PS-CNN)
<Part-stacked CNN for fine-grained visual categorization – CVPR2016>
基于人工標記的強部件標注信息,PS-CNN使用全卷積網絡進行部件定位和一個雙流的分類網絡對物體及部件的特征進行編碼。
全卷積網絡將CNN中的全連接層使用1×1的卷積代替,其輸出特征圖的維度小于輸入圖像維度。輸出特征圖的每個像素點對應輸入圖像的一個區域,該區域稱為其感受野。FCN具有以下優點:1)其特征圖可以直接作為部件的定位結果應用于分類網絡;2)FCN能夠同時得到多部件的定位結果;3)FCN的學習及推理較為高效。
 使用FCN得到conv5中M個關鍵點的位置之后,將定位結果輸入到分類網絡,使用兩級架構分析圖像物體級及部件級的特征。
 部件級網絡首先通過共享層提取特征,之后分別計算關鍵點周圍的部件特征。物體級別網絡使用標注框提取對象級CNN特征,及pool5特征。之后將部件級網絡及物體級網絡特征圖合并,進行分類。
 
2.1.5 Deep LAC(Location Alignment Classification)
<Deep LAC: Deep localization, alignment and classification for fine-grained recognition – CVPR2015>
Deep LAC在同一個網絡中進行部件定位、對齊及分類,提出了VLF(valve linkage function,閥門連接函數)函數,進行Deep LAC中的反向傳播,其能夠自適應地減小分類及對齊的誤差,并且更新定位結果。
部件定位子網絡包含5個卷積層及3個全連接層。輸出為框的左上角及右下角點的坐標。
對齊子網絡接收部件定位結果,執行模板對齊,產生姿態對齊的部件圖像。對齊子網絡進行平移、縮放、旋轉等操作用于姿態對齊區域的生成。同時,該子網絡還負責反向傳播過程中分類及定位結果的橋接作用。
對齊子網絡中的VLF是一個非常關鍵的模塊,優化定位及分類子網絡間的連接,協調分類結果與定位結果。使網絡達到穩定狀態。
 
Mask-CNN
<Mask-CNN : Localizing Parts and Selecting Descriptors for Fine-Grained Image Recognition –Pattern Recognition, 2018>
 該模型亦分為兩個模塊,第一是Part Localization;第二是全局和局部圖像塊的特征學習。需要指出的是,與前兩個工作的不同在于,在Mask-CNN中,借助FCN學習一個部位分割模型(Part-Based Segmentation Model)。其真實標記是通過Part Annotation得到的頭部和軀干部位的最小外接矩形,如下圖(c)所示。在FCN中,Part Localization這一問題就轉化為一個三分類分割問題,其中,一類為頭部、一類為軀干、最后一類則是背景。
 
 FCN訓練完畢后,可以對測試集中的細粒度圖像進行較精確地part定位,下圖展示了一些定位效果圖。可以發現,基于FCN的part定位方式可以對大多數細粒度圖像進行較好的頭部和軀干定位。同時,還能注意到,即使FCN的真實標記是粗糙的矩形框,但其預測結果中針對part稍精細些的輪廓也能較好地得到。在此,我們稱預測得到的part分割結果為Part Mask。不過,對于一些復雜背景圖像(如圖6右下)part定位結果還有待提高。
在得到Part Mask后,可以通過Crop獲得對應的圖像塊。同時,兩個Part Mask組合起來剛好可組成一個較完整的Object Mask。同樣,基于物體/部位圖像塊,Mask-CNN訓練了三個子網絡。
在此需要特別指出的是,在每個子網絡中,上一步驟中學到的Part/Object Mask還起到了一個關鍵作用,即“篩選關鍵卷積特征描述子”(Selecting Useful Convolutional Descriptor),如圖7( c)-(d)。這個模塊也是我們首次在細粒度圖像分類中提出的。篩選特征描述子的好處在于,可以保留表示前景的描述子,而去除表示背景的卷積描述子的干擾。篩選后,對保留下來的特征描述子進行全局平均和最大池化(Global Average/Max Pooling)操作,后將二者池化后的特征級聯作為子網絡的特征表示,最后將三個子網特征再次級聯作為整張圖像的特征表示。
 
實驗表明,基于篩選的Mask-CNN在僅依靠訓練時提供的Part Annotation(不需要Bounding Box,同時測試時不需額外監督信息)取得了目前細粒度圖像分類最高的分類精度(在經典CUB數據上,基于ResNet的模型對200類不同鳥類分類精度可達87.3%)。此外,借助FCN學習Part Mask來進行Part定位的做法也取得了Part定位的最好結果。
2.2 弱監督
值得借鑒的思想:目標檢測中—基于弱監督的目標定位
 Weakly Supervised Object Localization
 cvpr2020-南大提偽監督目標定位方法,弱監督目標定位的最新SOTA
2.2.1 兩級注意力(Two-level attention)
兩級注意力(Two Level Attention)算法第一個嘗試不依賴額外的標注信息, 而僅僅使用類別標簽來完成細粒度圖像分類的工作。 兩級注意力結合了三種類型的注意力:生成候選圖像塊的自底向上注意力、選擇相關塊形成特定物體的對象級自頂向下注意力、定位判別性部件的部件級自底向上注意力。通過整合這些類型的注意力機制訓練特定的DCNN,以提取前景物體及特征較強的部件。該模型容易泛化,不需要邊界框及部件標注。
之后基于FilterNet選擇出來的框訓練DomainNet。特別地,使用相似矩陣將中間層分為K個簇,簇的作用域部件檢測器相同。之后各個簇篩選出的圖像塊被縮放到DomainNet輸入大小,生成其激活值,之后將不同部件的激活值匯總并訓練一對多SVM分類器。最終,將物體級與部件級注意力預測結果合并,以利用兩級注意力的優勢。
 
 總體上來看, 兩級注意力模型較好地解決了在只有類別標簽的情況下, 如何對局部區域進行檢測的問題. 但是, 利用聚類算法所得到的局部區域, 準確度十分有限. 在同樣使用Alex Net的情況下, 其分類精度要低于強監督的Part R-CNN算法。
2.2.2 細粒度分類的注意力(Attention for fine-grained categorization)
<Attention for fine-grained categorization – RCLR2015>
人類在識別時通常不斷移動物體以觀察相關的特征,并不斷將特征添加到圖像表征序列中。
 AFGC(細粒度分類注意力模型)是一個基于GoogLeNet的RNN( deep recurrent neural network,深度遞歸神經網絡),在每個時間步處理一個多分辨率的圖像塊。網絡使用該圖像塊更新圖像的表征,并與之前的激活值相結合,輸出下一注意點的位置或輸出物體最終分類結果。
 
2.2.3 FCN注意力模型(FCN attention)
FCN attention是基于強化學習的全卷積注意力定位網絡,其能夠自適應地選擇多任務驅動的注意力區域。由于其基于FCN架構,因而更加高效,并且能夠對多個物體部件進行定位,同時提取多個注意力區域的特征。其中,不同部件可以有不同的預定義大小。網絡共包括局部定位模塊和分類模塊。
局部定位模塊使用全卷積網絡進行部件定位,其基于VGG16模型,輸出單通道的自信度映射圖。置信度最高的區域被選擇作為部件位置。每個時間步都生成一個特定的部件位置。
分類模塊對所有部件及整張圖像進行分類。對局部圖像裁剪到模型輸入大小,最后取所有部件及全局預測的均值。
 
2.2.4 多樣化視覺注意力(Diversified visual attention)
DVAN(diversified visual attention network,多樣注意力網絡 )提高視覺注意力多樣性以提取最大程度的判別性特征。包括四個部分:注意力區域生成、CNN特征提取、多樣性視覺注意力、分類。 該網絡**采用LSTM作為注意力機制**,在不同時間步生成不同的注意力區域。傳統注意力模型只關注單個位置,DVAN使用特定的損失函數聯合判別多個位置的特征。同時每個時間步都會預測物體類別,最后采用各預測結果的均值。
RACNN
本文中,提出了一個全新的循環注意力卷積神經網絡(recurrent attention convolutional neural network——RA-CNN),用互相強化的方式對判別區域注意力(discriminative region attention)和基于區域的特征表征(region-based feature representation)進行遞歸學習。
 在網絡結構設計上主要包含3個scale子網絡,每個scale子網絡的網絡結構都是一樣的,只是網絡參數不一樣,在每個scale子網絡中包含兩種類型的網絡:分類網絡和APN網絡。數據流程為:輸入圖像通過分類網絡提取特征并進行分類,然后attention proposal network(APN)網絡基于提取到的特征進行訓練得到attention區域信息,再將attention區域crop出來并放大,再作為第二個scale網絡的輸入,這樣重復進行3次就能得到3個scale網絡的輸出結果,通過融合不同scale網絡的結果能達到更好的效果。
 
 RA-CNN 通過尺度內分類損失(intra-scale classification loss)和尺度間排序損失(inter-scale ranking loss)進行優化,以相互學習精準的區域注意力(region attention)和細粒度表征(fine-grained representation)。RA-CNN 并不需要邊界框(bounding box)或邊界部分的標注(part annotations),而且可以進行端到端的訓練。
 本文采用交替優化的方式進行訓練。
MACNN
這篇文章提出了一個多注意力卷積神經網絡(MA-CNN),讓part generation 和 feature learning能互相強化。同時模型拋棄手工標記attention part 的方法,采用弱監督學習方法。(手工標注attention part 難定標注位置,且耗費人力)
 本文亮點:
- 利用feature map 不同通道(channels)關注的視覺信息不同,峰值響應區域也不同這一特點,聚類響應區域相近的通道,得到 attention part。
- 由于1中part 定位方式特殊,本文提出了一個channel grouping loss,目的讓part內距離更近(intra-class similarity),不同part距離盡量遠(inter-class separability)。
 MA-CNN框架如上圖所示。模型分為三部分,base network、channel grouping layers 和part classification sub-networks.
輸入一張圖片(a)給網絡,通過base network 產生feature map(b);將(b)中的各通道展開,以12個通道為例,得到(c),可見每個通道都有一個峰值響應區域(白色部分),同時有些通道的峰值響應區域相近(同一種顏色外框表示);文中通過堆疊的全連接層達到聚類效果,把相近的區域歸為一類,如圖(e),圖中劃為4類。同類的channel相加,取sigmoid(歸一化到0-1)產probabilities,等效于產生4個空間注意區域,即4個mask(局部定位!),這四個mask分別和feature map 進行點乘,得到4個局部精細化的特征,分別進行分類。
 MA-CNN 通過交替優化的學習方式(輪流優化兩個loss函數),使對每個part的softmax分類損失,及對每個part的channel grouping loss(Lcng)收斂。
MAMC
很多工作是獨立的檢測一個物體的多個關鍵性區域,忽略了物體的多個關鍵性區域的內在關聯,因此,學習到的注意力模塊很可能集中在同一個區域,并且缺乏本地化多個具有區別特征的部分的能力,這些特征可以區分類似的細粒度類。另外,很多方法都是multi-stage的,不夠高效;或者需要很復雜的一些初始化,工作量大。
 從大量的實驗研究中,作者觀察到一種有效的細粒度分類的視覺注意機制應該遵循三個標準:1)檢測到的部分要均勻分布在目標體上,提取出不相關的特征;2)各部分特征應該可以單獨對不同類的對象進行區分;3)局部區域提取器應輕量化,以便在實際應用中按比例放大。
本文提出的弱監督方法可以高效精確地獲取判別區域。如下圖所示,本文方法框架有兩部分組成:1)壓縮-多擴展one-squeeze multi-excitation(OSME)模塊,輕微增加計算量(也不算太輕),從多個注意力區域提取特征。2)多注意力多類別約束multi-attention multi-class constraint(MAMC),加強注意力區域之間的通信。本文方法比其他方法具有端到端單階段的優勢。
 OSME
 也是一種弱監督下的部件定位的注意力方法。先前工作總結:1)部件檢測。往往將部件檢測和特征提取分開,計算開銷增大。2)軟注意力,來自響應可視化。
 如上圖,我們的框架以ResNet50作為baseline, SEnet通過壓縮-擴展操作對輸出特征圖再校準。為了產生P個特定注意力的特征圖,我們從SEnet延伸,把一次擴展操作換成多次擴展操作。
 在壓縮操作中,我們聚合特征圖空間產生通道級的描述子,和通道數一致。全局平均池化是一種簡單高效的通道統計特征描述方法。
 在擴展操作中,對通道描述子施加多個獨立門機制,產生多個注意力圖。門機制中是FC+Relu+FC+Sigmoid,由于sigmoid特性,其輸出對通道間的非互斥關系進行了編碼。我們利用其輸出對起初Resnet50的輸出進行再次加權,得到特定注意力圖。
 為了對每個特定注意力圖進行特征提取,將這些特定注意力圖展平成向量之后輸入進FC層。
 簡單而言,本文通過對baseline輸出全劇平均池化之后進行多次門操作獲得P個特征向量。并認為這些特征向量是對不同非互斥部件/特征的聚類(這里還不能稱為判別性特征)。
 MAMC
 下面解決的問題可以描述為,如何讓以上模塊產生的注意力特征指向類別,產生判別性注意力特征。先前方法總結: 1)把以上注意力特征合并進行softmax loss(指交叉熵損失函數),softmax loss不能掌握兩兩注意力特征之間的關系,2)遞歸搜索機制,會把初代誤差迭代方放大。還要使用強化學習以及一些復雜的初始化方法。我們的方法在訓練中增強兩兩部件之間的關系。這種方法就是多注意力多類別機制。以下就是度量學習的框架了。
 訓練集組織:我們有圖像-類別對,為了刻畫圖片之間的注意力和同一子類內的注意力之間的關系,我們重新組織輸入Batch(參考度量學習)。參考文章 Improved Deep Metric Learning with Multi-class N-pair Loss Objective中的N-pair采樣方法。具體而言就是,每個batch中有N對圖片,每對兩張圖片來自同一個子類,取一個圖片為錨點(anchor),另一個為此anchor的正樣本,然后給出他們所屬類別。那么經過OSME模塊,假設有P個excitation,那么每個樣本就各自產生P個注意力特征向量。
Learning a Discriminative Filter Bank within a CNN(DFL-CNN)
<Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition – CVPR2018>
 端到端的細粒度識別可以分為兩類:一個是定位-分類子網絡 ,另一個是端到端特征編碼。
第一類方法,定位-分類子網絡,包含了由定位網絡輔助的分類網絡。分類網絡的中級學習是由定位網絡中定位信息(部位定位和分割掩碼)加強的。早期工作是依賴于數據集的額外部位標注信息,最近的只需要分類標簽。不管標注信息,這些方法的的共同當即就是先尋找到匹配的部位在比較它們的外觀。 第一步要求對象類間的語義部分可以共享,鼓勵不同部位之間的表示相似,但是,為了有區分性,第二步鼓勵在不同類別之間部位表示是不同的。這種微妙的沖突可能需要在定位網絡和分類網絡進行權衡,這可能會降低單個集成網絡的分類表現。這種權衡也涉及到實踐,在訓練時,這兩個網絡往往分開交替訓練,因此網絡會變得復雜。
第二類方法,端到端的特征編碼方法,利用了卷積特征的高階統計編碼(如 bilinear pooling)增強了CNN中層學習能力。與定位分類自網絡比較來說,端到端的網絡雖然有效,但可解釋性和在嚴格非嚴格領域的性能很難保持一致性。
作者的主要貢獻設計了一個CNN框架中,不需要額外的部分或邊框注釋,以端到端的方式就可以學習有區別的mid_level patches.這樣我們的辨別性patch就不用各個類之間共享,只需要有辨別性的apperance就行了。因此,我們的網絡完全專注于classification,避免了識別和定位之間的權衡。
實現是通過1×1的卷積核作為小的‘’部位檢測子“設計一個非對稱的、多支路的結構來利用patch-level信息和全局外觀表示,并且引入了非隨機初始化濾波器監督去激活特征塊的濾波器。
 
 非對稱結構的兩條支路核心組件如上圖所示。
 **P-stream:**這個組件后接分類器(比如全連接層和softmax層)形成網絡判別的P-stream,其中預測是通過判斷判別性塊檢測子的響應來預測的。P-stream是使用Conv4_3的輸出,并且對這個特征圖使用較小的感受野,一片的大小為92×92,跨步是8。
 **G-stream:**細粒度圖像識別還要依賴于全局形狀和表觀,所以另一個支路保存的是更深的卷積核和全連接,第一個全連接編碼全局信息通過線性結合整個卷積特征圖。因為這個支路關注于全局信息,所以我們稱之為G-stream。
 **side-branch:**為了讓框架學習特定于類的判別補丁檢測器,我們通過引入跨通道池層和softmax損耗層,對多個通道的特征進行綜合。
(ECCV 2018) Learning to Navigate for Fine-grained Classification
三、基于網絡集成的方法
將細粒度數據集劃分為幾個相似的子集分別進行分類,或直接使用多個神經網絡來提高細粒度分類的性能。
3.1子集特征學習網絡(Subset feature learning networks)
Subset feature learning for fine-grained category classification—CVPR2015
包括通用CNN及特定CNN兩個部分。
使用大規模數據集上預訓練的通用CNN并在細粒度數據集上遷移學習。同時,在其fc6特征上使用LDA降維。
 將細粒度數據集中外觀相似的類聚類為K個子類,并訓練K個特定的CNN。
 在測試時,使用子集CNN選擇器(subset selector CNN ,SCNN)選擇輸入圖像相應的子集CNN。SCNN使用K個聚類結果作為類標簽,將fc8的softmax輸出數量改為K。之后,使用最大投票法確定其子類。
 
3.2 混合DCNN(Mixture of deep CNN)
Fine-grained classification via mixture of deep convolutional neural networks—CVPR2015
MixDCNN不對數據集進行劃分,學習K個特定的CNN。輸入圖像經過K個CNN,K個子CNN的分類結果通過分類占位概率(occupation probability)進行融合,其定義如下,通過占位概率,MixDCNN可以實現端到端訓練。
  α k = e C k ∑ c = 1 K e C c \alpha_{k}=\frac{e^{C_{k}}}{\sum_{c=1}^{K} e^{C_{c}}} αk?=∑c=1K?eCc?eCk??
 其中,Ck為第K個CNN的最佳分類結果。
 
3.3 CNN樹(CNN tree)
Learning finegrained features via a CNN tree for large-scale classification —CVPR2015
 在多分類問題中,某個類通常與其他幾個類相混淆,這些容易相互混淆的類被稱為混淆集。在混淆集中,應該使用判決性更強的特征對其進行區分。
 首先在類集合上訓練模型,之后評估訓練好模型每個類的混淆集,將各類的混淆集合并為幾個混淆超集。之后將混淆超集做為子節點,在其上進一步學習,重復該過程,直到CNN樹達到最大深度。
 
3.4 多粒度CNN( Multiple granularity CNN)
Multiple granularity descriptors for fine-grained categorization —ICCV2015
 子類標簽包含某實體在該類中的層次信息。使用這些層次信息可以訓練一系列不同粒度的CNN模型。這些模型的內部特征表示有不同的興趣域,能夠提取覆蓋所有粒度的判別性特征。
多粒度CNN包含多個CNN,每個CNN都在給定的粒度進行分類。即多粒度CNN是由多個單粒度識別CNN組成。ROI通過自底向上的區域生成方法生成,與粒度相關。同時,ROI的選擇是跨粒度相關的,細粒度的ROI通常是由粗粒度的ROI采樣而來。之后,將ROI輸入到各個粒度的特征提取網絡提取其多粒度特征,最后將多粒度特征合并,產生最終的分類結果。
 
四、高階特征編碼
雙線性匯合(bilinear pooling)在細粒度圖像分析及其他領域的進展綜述
 【AAAI2020系列解讀 01】新角度看雙線性池化,冗余、突發性問題本質源于哪里?
Bilinear CNN Models for Fine-grained Visual Recognition—ICCV2015
源碼
 雙線性匯合(bilinear pooling)計算不同空間位置的外積,并對不同空間位置計算平均匯合以得到雙線性特征。外積捕獲了特征通道之間成對的相關關系,并且這是平移不變的。雙線性匯合提供了比線性模型更強的特征表示,并可以端到端地進行優化,取得了和使用部位(parts)信息相當或甚至更高的性能。
另一種對Bilinear CNN模型的解釋是,網絡A的作用是對物體/部件進行定位,即完成前面介紹算法的物體與局部區域檢測工作,而網絡B則是用來對網絡A檢測到的物體位置進行特征提取。兩個網絡相互協調作用,完成了細粒度圖像分類過程中兩個最重要的任務:物體、局部區域的檢測與特征提取。另外,值得一提的是,bilinear模型由于其優異的泛化性能,不僅在細粒度圖像分類上取得了優異效果,還被用于其他圖像分類任務,如行人重檢測(person Re-ID)。
 
 網絡架構很簡單,主要就是用外積(matrix outer product)來組合兩個CNN(A和B)的feature map (當然也可以不用CNN),bilinear layer如下:
 bilinear  ( l , I , f A , f B ) = f A ( l , I ) T f B ( l , I ) \left(l, I, f_{A}, f_{B}\right)=f_{A}(l, I)^{T} f_{B}(l, I) (l,I,fA?,fB?)=fA?(l,I)TfB?(l,I)
- 其中位置 l l l 涵蓋了位置和尺度, I I I 是圖像。
- fA和fB分別指兩個CNN特征提取器,將輸入圖像I與位置區域L映射為一個cXD 維的特征。f 的維度是(K,D),D是指channel。
- 如果A和B輸出的特征維度分別是(K,M)和(K,N),經過bilinear后維度變為(M,N)。
- 求和池化函數(sum pooling)的作用是將所有位置的Bilinear特征匯聚成一個特征。
由于特征的位置維度被池化掉了,得到的bilinear特征是orderless的。另外注意,外積導致特征的維度D 增大為原來的平方。
 最后將bilinear特征經過符號平方根變換,并增加l2標準化(elementwise normalization layer),然后輸入分類器,完成分類任務。
這里的兩個CNN可以共享部分參數,三種不同的方式如下圖:
 
后續研究方向
 后續雙向性匯合研究方向大致分為兩類:設計更好的雙線性匯合過程,以及精簡雙線性匯合。其中,對雙線性匯合過程的設計主要包括對匯合結果規范化過程的選擇及其高效實現,以及融合一階和二階信息。精簡雙線性匯合設計大致有三種思路:利用PCA降維、近似核計算、以及低秩雙線性分類器。
Low-rank Bilinear Pooling for Fine-Grained Classification-CVPR2017
這篇文章的目的是要降低Bilinear pooling模型的參數維度,同時提高模型的精度。論文與第一篇論文模型不同的是,這篇論文采用對稱的網絡模型,也就是兩個steam是相同的,那么只需要訓練一個CNN過程就好,大大的減少了計算的開支。同時特征的意義就變為在位置i上特征的相關性矩陣。最后論文采用了一個低秩的分類器進行分類。
Hierarchical Bilinear Pooling for Fine-Grained Visual Recognition
源碼:https://github.com/luyao777/HBP-pytorch
 基于Bilinear pooling的模型已經被實驗驗證了在細粒度認知的有效性,然而很多之前的方法忽略了層間局部特征的交互和細粒度特征的學習是相互關聯的同時也能強化彼此。
 以此為出發點,作者提出來一種跨層的bilinear pooling方法來捕獲層間局部特征關系,然后在這個基礎上提出了一種新的分層雙線性池框架來集成多個跨層雙線性特征,以提高它們的表示能力。
 和之前的定位局部來學習細粒度特征不同,作者將來自不同卷積層的激活視為對不同部件屬性的響應,而不是顯式地定位對象局部,利用跨層雙線性池捕獲局部特性的跨層間交互,這對于細粒度識別非常有用。
 
Higher-Order Integration of Hierarchical Convolutional Activations for Fine-Grained Visual Categorization ICCV2017
針對細粒度分類的難點,1. part annotation 和 detection 需要專業知識且很多part-based方法都是為了訓練精確的 part detector 而嚴重依賴于精確地 part annotation; 2. Parts 通常有很多尺寸,而深度計卷積中的每個點對應一個特定的感受野,因此單層卷積層在描述不同尺寸的 part 時能力有限;3. Part 與 part 之間的關系是復雜的,高階的。對于目標外形建模的關鍵在于發掘目標局部的共同外形。但缺陷是只能發掘很少 part 的一階關系。
本文針對以上問題,提出了基于融合高階的多等級的卷積特征(Hierarchical convolutional activations) 。如果把卷積特征作為局部描述子 ,那么多等級的卷及特征就可以是不同尺度的局部特描述子。在處理 part interaction 的問題時,作者通過核融合的方法,使用多項式描述子將不同層的特征綜合在一起。本文的創新點在于為融合不同層的的卷積響應開辟了新視角。
總結
在細粒度分類任務由于存在較大的類內差異和細微的內間差異,導致傳統的人工特征工程無法達到理想效果。深度學習的出現,為該任務帶來巨大的效果提升,在許多場景中達到實用的水平。本文綜述了目前常見的三類基于深度學習的細粒度圖像分類方法。
 基于定位-分類的方法借鑒了人類進行細粒度分類的過程,研究相對充分,是最主流的方法。早期,基于定位-分類的方法多采用強監督學習,需要大量的人工來標注圖像的關鍵區域。Part R-CNN[3]是較早采用區域定位技術的細粒度分類算法,其進步是明顯的. 從局部區域的檢測定位, 到特征的提取, 該算法均基于卷積神經網絡, 并針對細粒度圖像的特點進行改進優化, 以改進通用物體定位檢測算法在該任務上的不足, 達到了一個相對比較高的準確度. 其不足之處在于, 利用自底向上的區域產生方法, 會產生大量無關區域, 這會在很大程度上影響算法的速度. 另一方面, 該算法本身的創新性十分有限, 既然局部區域對于細粒度圖像而言是關鍵所在, 那么對其進行定位檢測則是必要的途徑. 只是引入現有的通用定位算法, 似乎并不能很好地解決該問題。在此基礎上,后續有很多改進算法,例如Pose Normalized CNN[4]通過姿態對齊操作,減小了類內差異。而part stacked CNN[5] 和mask-CNN[6]則利用FCN進行區域定位,提高了定位精度。
 近年來,由于工業領域的應用需要,基于定位-分類方法的研究逐漸向弱監督學習轉移,通過注意力機制、通道聚類等方法構建定位子網絡,實現區分性區域的發現。其中,兩級注意力(Two Level Attention)算法[7]是第一個嘗試不依賴額外的標注信息, 而僅僅使用類別標簽來完成細粒度圖像分類的工作,該方法通過聚類實現區域定位,準確度有限。此后,RNN、LSTM以及FCN等網絡被當做注意力機制引入弱監督方法中來,進一步提升定位的準確度。在定位子網絡的基礎上,MAMC[12]等網絡引入了空間約束,改善定位區域的辨識度。
 高階編碼方法通過將CNN特征進行高階綜合,提升特征的表達能力,其最主要的技術路線是雙線性模型[13],此外,Higher-Order Integration of Hierarchical Convolutional Activations[2]通過核融合方式為高階編碼提供了新的視角。
 Bilinear模型提供了比線性模型更強的特征表示,并可以端到端地進行優化,取得了和使用部位(parts)信息相當或甚至更高的性能,其缺點在于外積導致特征的維度 增大為原來的平方。
 后續雙向性匯合研究方向大致分為兩類:設計更好的雙線性匯合過程,以及精簡雙線性匯合。其中,對雙線性匯合過程的設計主要包括對匯合結果規范化過程的選擇及其高效實現,以及融合一階和二階信息。精簡雙線性匯合設計大致有三種思路:利用PCA降維、近似核計算、以及低秩雙線性分類器。
 網絡集成方法采用了分而治之的思想,主要方法是將細粒度數據集劃分為幾個相似的子集分別進行分類,或直接使用多個神經網絡來提高細粒度分類的性能。當某些類特別容易混淆時,采用該方法能取得不錯的效果,缺點是認為干預的因素較多,不能采用端到端的學習方式。
其它相關
or-wavelet:https://blog.csdn.net/qq_41332469/article/details/93197565
消除Aliasing!加州大學&英偉達提出深度學習下采樣新思路:自適應低通濾波器層
ECCV2020 | Cityscapes上83.7 mIoU,通過解耦的主體和邊緣監督改進語義分割
【圖像分類】細粒度圖像分類—-文末有細粒度分類的相關競賽介紹
總結
以上是生活随笔為你收集整理的细粒度图像分析_图像分类研究现状的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 24张架构图把数据治理核心内容讲透了
- 下一篇: 自定义搜索引擎_如何创建自己的自定义Go
