日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification

發布時間:2023/12/16 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

論文:https://arxiv.org/pdf/2002.04264.pdf
代碼:https://github.com/PRIS-CV/Mutual-Channel-Loss

1 總體思路

目標細粒度分類,由于子類別間的差異很小且類內差異很大,難度較普通圖像分類更大。圖1所示為細粒度圖像分類數據集CUB-200[1]中的兩個物種,加州鷗和北極鷗,從豎直方向的圖片對比可以看出,兩個不同物種長相非常相似,而從對比水平方向可知,同一物種由于姿態,背景以及拍攝角度的不同,存在較大的類內差異。 因此,要想順利的對兩個極為相似的物種進行細粒度分類,最重要的是在圖像中找到能夠區分這兩個物種的區分性的區域塊(discriminative part),并能夠對這些有區分性的區域塊的特征進行較好的表示。

圖1 (a) 加州鷗

圖1 (b) 北極鷗

由于深度卷積網絡能夠學習到非常魯棒的圖像特征表示,對圖像進行細粒度分類的方法,大多都是以深度卷積網絡為基礎的,這些方法大致可以分為以下四個方向:

  • 基于常規圖像分類網絡的微調方法;
  • 基于細粒度特征學習(fine-grained feature learning)的方法;
  • 基于目標塊的檢測(part detection)和對齊(alignment)的方法;
  • 基于視覺注意機制(visual attention)的方法

以上內容引用自:https://zhuanlan.zhihu.com/p/53611407

本文作者另辟蹊徑,沒有采用上述四種方法,而是從損失函數入手,保持網絡結構不變,設計了一種稱為MC-loss(multi-channel loss)的損失函數。

2 MC-loss

作者提出的整體識別結構如下圖所示,結合了交叉熵損失和MC-loss

圖2

總體損失為交叉熵損失和MC-loss的加權和:

上面公式中出現的F表示輸入圖像通過卷積網絡后提取的特征。對于一副輸入圖像,F∈RN×H×WF \in R^{N \times H \times W}FRN×H×W,N表示channel數量,H和W表示特征圖的高和寬。

在MC-loss中,作者定義N=c×ξN = c \times \xiN=c×ξccc表示數據集中的總類別數,ξ\xiξ表示用于表示每一個類的channel數,ξ\xiξ是一個超參數,但一般應大于2。

對于一個給定的目標類別iii,其特征可以表示為Fi∈Rξ×WH,i=0,1,?,c?1F_i \in R^{\xi \times WH},i = 0,1,\cdots,c-1Fi?Rξ×WH,i=0,1,?,c?1FiF_iFi?可以表示為:

獲取各類別的特征后,特征集F={F0,F1,?,Fc?1}F = \{F_0,F_1,\cdots,F_{c-1}\}F={F0?,F1?,?,Fc?1?}送入圖2所示的兩個分支分別計算兩項損失。交叉熵損失LCE(F)L_{CE}(F)LCE?(F)鼓勵網絡提取有助于全局目標類別判別的特征。LMC(F)L_{MC}(F)LMC?(F)則是關注不同的局部判別塊的特征。

MC-loss 由兩部分組成,分別為Ldis(F)L_{dis}(F)Ldis?(F)Ldiv(F)L_{div}(F)Ldiv?(F)

圖3

2.1 Ldis(F)L_{dis}(F)Ldis?(F)

Ldis(F)L_{dis}(F)Ldis?(F)中的dis表示 discriminality component。如上面所示,作者設計用ξ\xiξ個channel的特征表示一個類別,discriminality component要求這些特征關注某個特定的類別并且每個channel的特征要足夠有判別力

Ldis(F)L_{dis}(F)Ldis?(F)可以表示成:

GAP表示Global Average Pooling,全局平均池化;
CCMP表示Cross-Channel Max Pooling,跨channel最大池化;
CWA表示Channel-Wise Attention,給定每個channel的重要性。Mi=diag(Maski)M_i = diag(Mask_i)Mi?=diag(Maski?)Maski∈RξMask_i \in R^{\xi}Maski?Rξ是一個由0和1組成的mask,有?ξ2?\lceil \frac{\xi}{2} \rceil?2ξ??個1,?ξ2?\lfloor \frac{\xi}{2} \rfloor?2ξ??個0。

CWA:
CWA即使用Mask進行channel-attention,每次訓練迭代中有一部分的channel不參與,迫使每一個channel都去學習足夠有判別力的特征。相當于channel維度的dropout操作。CWA僅在訓練過程中存在,推理時不使用。

CCMP
CCMP表示跨通道的最大池化操作,即在WH個空間位置選取各channel的最大值,即選取每一個空間位置上各channel的最大激活值。當然也可以使用跨通道平均池化,但平均池化等價于對各channel的激活值進行平均,不利于細粒度分類。

GAP
GAP是在空間維度進行平均池化,得到各類的預測結果。

總體來說,discriminality component通過CWA迫使每個channel學習到的特征足夠有判別力,通過CCMP選取各channel的最大響應,然后通過GAP獲取各類別的預測結果。總體訓練目標是使得各類別的ξ\xiξ個channel學習得到的特征足夠有能力進行類別判斷

2.2 Ldiv(F)L_{div}(F)Ldiv?(F)

Ldiv(F)L_{div}(F)Ldiv?(F)表示diversity component,相當于計算各channel特征間的距離,從而得到所有channel的總體相似度。作者使用的方法相比于普遍使用的歐氏距離和KL散度計算量更小。

diversity component的目的是同一類別的ξ\xiξ個channel應該關注圖像的不同區域,而不應該是同一類別的所有channel都關注最有判別力的區域,相當于空間注意力機制。具體的實現為:

先對特征的每一位置進行softmax操作,將其變為預測的類別。然后選取一個類別的ξ\xiξ個channel中各空間位置的最大值,然后在空間位置上求和,得到各類別的預測概率在所有channel內的和。然后對各類別求均值,值越大表示模型對于所有類別,不同的channel都關注到了圖像的不同區域。

Ldiv(F)L_{div}(F)Ldiv?(F)的物理意義表示模型對于數據集的所有類別,不同的channel都關注到了圖像的不同區域,即取值越大越好

Ldiv(F)L_{div}(F)Ldiv?(F)的取值上限為ξ\xiξ,表示不同channel的特征注意到了圖像的不同區域。Ldiv(F)L_{div}(F)Ldiv?(F)的取值下限為1,表示不同channel的特征注意到了圖像的同一區域。如下圖所示:

2.3 總結MC-Loss

MC-Loss通過Ldis(F)L_{dis}(F)Ldis?(F)使得一個類別的ξ\xiξ個channel都盡可能學習關于該類別的有判別力的特征,如圖3(b)中一組ξ\xiξ個channel的特征都變成了同一顏色;通過Ldiv(F)L_{div}(F)Ldiv?(F)使得各個channel都關注圖像的不同空間位置,如圖3(b)中一組ξ\xiξ個channel的特征的不同位置都有了顏色加深的區域。總體實現了如下圖所示的結果:

3 實驗

數據集

參數設置
每一個類別對應的ξ\xiξ個通道是一個超參數,因為預訓練的網絡輸出的channel數是固定的,作者為了在預訓練網絡上進行微調,設置了不同的類別具有不同數量的超參數,如使用VGG16作為預訓練模型時,在CUB-200-2011數據集上,設置前88個類別各對應2個channel,后112個類別各對應3個channel。具體設置如下表所示:
訓練時設置超參數u=0.005,λ=10u = 0.005,\lambda = 10u=0.005,λ=10

對比其他算法
消融研究
消融研究中從頭訓練模型,每個類別設置同樣數量的channel數,設置超參數u=1.5,λ=10u = 1.5,\lambda = 10u=1.5,λ=10

ξ\xiξ的取值:
ξ=3\xi = 3ξ=3,分類效果和計算量都比較好。下面圖給出了設置ξ=6\xi = 6ξ=6時,學習到了過于冗余的特征。

對比其他損失函數
可視化

用Grad-CAM做可視化,第一行可以看出不同的channel學習到了目標的不同區域幫助進行細粒度分類。第二行相比第一行可以看出,如果去掉LdivL_{div}Ldiv?,那么不同的channel關注到的感興趣區域會比較接近。第三行標明如果去掉CWA,只有一個channel學習到了比較有判別力的特征,其余的兩個通道學習到的特征的判別能力都很有限。


MC-Loss-V2表示設置公式(6)為Ldivv2(F)=h(Fi)L_{div_v2}(F) = h(F_i)Ldivv?2?(F)=h(Fi?),上表的實驗結果表明MC-Loss-V2的效果不如MC-Loss。作者認為如果用公式(6)進行訓練,那么不同類別的channel組之間相互影響,但MC-Loss-V2只考慮了一個類別,其他的channel組的diversity會受到損失。

4 代碼分析

注意作者實現的CWA是通過在channel方向上應用最大池化實現的,具體為先對(N,C,H,W)的輸入進行ttanspose操作,轉化為(N,W,H,C)(N,W,H,C)(N,W,H,C),然后用于kernel大小為(1,ξ)(1,\xi)(1,ξ)的最大池化,實現在channel維度上的最大池化。代碼為:

def forward(self, input):input = input.transpose(3,1)input = F.max_pool2d(input, self.kernel_size, self.stride,self.padding, self.dilation, self.ceil_mode,self.return_indices)input = input.transpose(3,1).contiguous()return input

總結

以上是生活随笔為你收集整理的The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。