Mutual-Channel Loss 论文解读

论文标题: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} ,由 判别性组件多样性组件 组成。

网络结构

在这里插入图片描述
通过观察网络结构图,可以看出来:该网络仅仅是在常规的图像分类网络结构下,加入了一个互通道损失 L M C L_{MC} Feature channels 是之前 Conv.layers 的最后一个卷积层输出的特征图, L C E L_{CE} 使得网络专注于全局判别性区域, L M C L_{MC} 则使得网络专注于局部判别性区域。
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})

邀请主角登场 – MC-LOSS在这里插入图片描述

(a)图左侧通道的判别性组件,(a)图右侧通道的多样性组件。(b)图表示使用了 L M C L_{MC} 前后的特征图变化,可以看出,使用 L M C L_{MC} 之后,得到了了判别性区域,且不同特征图的判别性区域各不相同。
假设,(a)图中的输出特征图 F {\rm F} N N 通道,总共 c c 个类别, ξ ξ 表示每个类别中特征图的个数。那么: N = c x ξ N = c\,{\sf x}\,ξ .

判别性组件的构成:
  1. CWA: Channel-Wise Attention,通道注意力机制。与其他论文中(如SE-Net)的通道注意力机制有所差别,虽然也是通道加权,但是本论文的权值只有0和1。所以,本文的CWA有点类似于Dropout随机失活,不过Dropout是在空间域,CWA是在通道域。比如,有10个类别(c=10),共有40通道的特征图(N=40),此时每个类别4个通道的特征图(ξ=4)。 经过失活概率为0.5的CWA之后,虽然输出也是 N N 通道,但是其中有 N / 2 N/2 通道的特征图中所有的值都归为0了。并且失活与类别也有关,相应的,每个类别中通道失活概率也为0.5,也就是说每个类别有2个通道(ξ/2)失活了。
    CWA的作用: 强制让每个通道努力学到充足的判别性信息。因为每次迭代的时候,原先每个类别特征图有一半(ξ/2)都置零了,为了能够进行分类,那剩下的特征图的任务就更大,更需要去学习判别性信息。
  2. CCMP: Cross-Channel Max Pooling,跨通道的最大池化。将每个类别中所有通道的最大响应值全部放在一张特征图上。原则上,越具有判别性的点,响应越大。关于CCMP的具体实现,可以参考我的另一篇博客:cross channel pooling 的原理与代码实现
    CCMP的作用: 通道降维,得到c通道的特征图。
  3. GAP: GlobalAveragePooling,全局平均池化,应用非常广泛,能够将(b, c, w*h)的特征图池化为(b, c, 1)的特征图。
    GAP的作用: 空间降维。
  4. Softmax: 打分,用于分类。

     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}}

     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}})

判别性组件的功能: CWA和CCMP的协作,使得网络能够专注于各种类别的判别性区域。

多样性组件的构成:

虽然判别性组件能够专注于各种类别的判别性区域,但是,仍然无法保证大部分判别性区域都被定位了,于是引入了多样性组件。

  1. Softmax: 正则化。
  2. CCMP: 和上文中的CCMP一样的作用,得到c个通道的特征图。
  3. Sum: 将每个特征图上所有元素求和,每个通道只有一个元素。
  4. Average: 将所有通道的值求平均。

     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 }}

     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)

L d i v ( F ) L_{div}(\mathbf{F}) 越大越好。 L d i v ( F ) L_{div}(\mathbf{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}) .

实验

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

猜你喜欢

转载自blog.csdn.net/weixin_41735859/article/details/106129263