论文标题:The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification
来源:IEEE TIP 2020
针对目标:细粒度图像分类
下载地址:https://arxiv.org/abs/2002.04264
github地址:https://github.com/PRIS-CV/Mutual-Channel-Loss
首先,说说这篇论文的优点:简单,高效,易于实现。这篇论文相比于SOTA的其余方法,代码量少,只是在常用的网络结构上加入了一个辅助结构。并且,该辅助结构没有引入额外的网络参数,只包含正则化,池化等操作,就达到了SOTA的效果。
创新点: 在细粒度图像分类任务中引入了互通道损失 L M C L_{MC} LMC,由 判别性组件 和 多样性组件 组成。
通过观察网络结构图,可以看出来:该网络仅仅是在常规的图像分类网络结构下,加入了一个互通道损失 L M C L_{MC} LMC。Feature channels 是之前 Conv.layers 的最后一个卷积层输出的特征图, L C E L_{CE} LCE 使得网络专注于全局判别性区域, L M C L_{MC} LMC 则使得网络专注于局部判别性区域。
L o s s ( F ) = L C E ( F ) + μ x L M C ( F ) Loss({\rm F}) = L_{CE}({\rm F}) + μ\,{\sf x}\,L_{MC}({\rm F}) Loss(F)=LCE(F)+μxLMC(F)
(a)图左侧通道的判别性组件,(a)图右侧通道的多样性组件。(b)图表示使用了 L M C L_{MC} LMC 前后的特征图变化,可以看出,使用 L M C L_{MC} LMC 之后,得到了了判别性区域,且不同特征图的判别性区域各不相同。
假设,(a)图中的输出特征图 F {\rm F} F 为 N N N通道,总共 c c c 个类别, ξ ξ ξ 表示每个类别中特征图的个数。那么: N = c x ξ N = c\,{\sf x}\,ξ N=cxξ。有意思的是,每个类别有 ξ ξ ξ个特征图专门负责,该策略由判别性组件实现。
g ( F i ) = 1 W H ∑ k = 1 W H ⏟ G A P max j = 1 , 2 , ⋯ , ξ ⏟ C C M P [ M i ⋅ F i , j , k ] ⏟ C W A g\left(\mathbf{F}_{i}\right)=\underbrace{\frac{1}{W H} \sum_{k=1}^{W H}}_{\mathrm{GAP}} \underbrace{\max _{j=1,2, \cdots, \xi}}_{\mathrm{CCMP}} \underbrace{\left[M_{i} \cdot \mathbf{F}_{i, j, k}\right]}_{\mathrm{CWA}} g(Fi)=GAP WH1k=1∑WHCCMP j=1,2,⋯,ξmaxCWA [Mi⋅Fi,j,k]
L d i s ( F ) = L C E ( y , [ e g ( F 0 ) , e g ( F 1 ) , ⋯ , e g ( F c − 1 ) ] T ∑ i = 0 c − 1 e g ( F i ) ⏟ Softmax ) L_{d i s}(\mathbf{F})=L_{C E}(\boldsymbol{y}, \underbrace{\frac{\left[e^{g\left(\mathbf{F}_{0}\right)}, e^{g\left(\mathbf{F}_{1}\right)}, \cdots, e^{g\left(\mathbf{F}_{c-1}\right)}\right]^{\mathrm{T}}}{\sum_{i=0}^{c-1} e^{g\left(\mathbf{F}_{i}\right)}}}_{\text {Softmax}}) Ldis(F)=LCE(y,Softmax ∑i=0c−1eg(Fi)[eg(F0),eg(F1),⋯,eg(Fc−1)]T)
判别性组件的功能: CWA和CCMP的协作,使得网络能够专注于各种类别的判别性区域。CCMP+GAP+softmax得到的特征向量与类别标签进行比对得到损失函数的这一过程,由于没有任何卷积操作,为了使得softmax打分结果接近标签one-hot值,属于某个类别的 ξ ξ ξ个特征图便会有更大的响应。这一过程就解释了如何实现每个类别有 ξ ξ ξ个特征图专门负责。
虽然判别性组件能够专注于各种类别的判别性区域,但是,仍然无法保证大部分判别性区域都被定位了,于是引入了多样性组件。
h ( F i ) = ∑ k = 1 W H max j = 1 , 2 , ⋯ , ξ ⏟ C C M P [ e F i , j , k ∑ k ′ = 1 W H e F i , j , k ′ ] ⏟ Softmax h\left(\mathbf{F}_{i}\right)=\sum_{k=1}^{W H} \underbrace{\max _{j=1,2, \cdots, \xi}}_{\text{C C M P}} \underbrace{\left[\frac{e^{\mathbf{F}_{i, j, k}}}{\sum_{k^{\prime}=1}^{W H} e^{\mathbf{F}_{i, j, k^{\prime}}}}\right]}_{\text {Softmax }} h(Fi)=∑k=1WHC C M P j=1,2,⋯,ξmaxSoftmax [∑k′=1WHeFi,j,k′eFi,j,k]
L d i v ( F ) = 1 c ∑ i = 0 c − 1 h ( F i ) L_{d i v}(\mathbf{F})=\frac{1}{c} \sum_{i=0}^{c-1} h\left(\mathbf{F}_{i}\right) Ldiv(F)=c1∑i=0c−1h(Fi)
L d i v ( F ) L_{div}(\mathbf{F}) Ldiv(F)越大越好。 L d i v ( F ) L_{div}(\mathbf{F}) Ldiv(F)越大,每个类别中 ξ ξ ξ个通道的特征图,专注的区域越分散。
如上图,假设输入特征图经过softmax之后,得到极端情况,每张图上,只有一个点为1(红色点),其余全为0(橙色点)。再经过CCMP和Sum后计算结果。当判别性区域越分散,累加值越高(ξ)。当每个特征图上,判别性区域都一样时,那么CCMP之后的特征图,只有一个点为1,于是Sum之后,累加值最小(1)。另外,多样性组件的存在是以判别性组件的存在为前提,若没有判别性组件,那么多样性组件将毫无意义。
MC-LOSS: L M C ( F ) = L d i s ( F ) − λ x L d i v ( F ) L_{MC}({\rm F}) = L_{dis}({\rm F}) - λ\,{\sf x}\,L_{div}({\rm F}) LMC(F)=Ldis(F)−λxLdiv(F).
1.与SOTA模型比较(加入预训练模型):
2.与其他分类损失函数比较(未加入预训练模型):
在未加入预训练模型使用VGG16作为主干网络复现时,MC-Loss(ξ=3)的方法下,鸟类数据集准确率达到了67.33(原文65.98),车辆数据集准确率达到了90.34(原文90.85)。
特征图可视化效果:
1.属于某一类的特征图(文中每ξ个特征图负责一个类别),前三列表示三个特征图,最后一列为前三列叠加效果。
2.不属于某一类的特征图
特征图注意力区域可视化的方法可以参考:特征图可视化为类激活图(CAM)
参考链接:
https://blog.csdn.net/u013347145/article/details/105568990
https://zhuanlan.zhihu.com/p/106922799