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),并能够对这些有区分性的区域块的特征进行较好的表示。
由于深度卷积网络能够学习到非常鲁棒的图像特征表示,对图像进行细粒度分类的方法,大多都是以深度卷积网络为基础的,这些方法大致可以分为以下四个方向:
- 基于常规图像分类网络的微调方法;
- 基于细粒度特征学习(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:
总体损失为交叉熵损失和MC-loss的加权和:
上面公式中出现的F表示输入图像通过卷积网络后提取的特征。对于一副输入图像, F ∈ R N × H × W F \in R^{N \times H \times W} F∈RN×H×W,N表示channel数量,H和W表示特征图的高和宽。
在MC-loss中,作者定义 N = c × ξ N = c \times \xi N=c×ξ, c c c表示数据集中的总类别数, ξ \xi ξ表示用于表示每一个类的channel数, ξ \xi ξ是一个超参数,但一般应大于2。
对于一个给定的目标类别
i
i
i,其特征可以表示为
F
i
∈
R
ξ
×
W
H
,
i
=
0
,
1
,
⋯
,
c
−
1
F_i \in R^{\xi \times WH},i = 0,1,\cdots,c-1
Fi∈Rξ×WH,i=0,1,⋯,c−1。
F
i
F_i
Fi可以表示为:
获取各类别的特征后,特征集
F
=
{
F
0
,
F
1
,
⋯
,
F
c
−
1
}
F = \{F_0,F_1,\cdots,F_{c-1}\}
F={F0,F1,⋯,Fc−1}送入图2所示的两个分支分别计算两项损失。交叉熵损失
L
C
E
(
F
)
L_{CE}(F)
LCE(F)鼓励网络提取有助于全局目标类别判别的特征。
L
M
C
(
F
)
L_{MC}(F)
LMC(F)则是关注不同的局部判别块的特征。
MC-loss 由两部分组成,分别为
L
d
i
s
(
F
)
L_{dis}(F)
Ldis(F)和
L
d
i
v
(
F
)
L_{div}(F)
Ldiv(F):
2.1 L d i s ( F ) L_{dis}(F) Ldis(F)
L d i s ( F ) L_{dis}(F) Ldis(F)中的dis表示 discriminality component。如上面所示,作者设计用 ξ \xi ξ个channel的特征表示一个类别,discriminality component要求这些特征关注某个特定的类别并且每个channel的特征要足够有判别力。
L
d
i
s
(
F
)
L_{dis}(F)
Ldis(F)可以表示成:
GAP表示Global Average Pooling,全局平均池化;
CCMP表示Cross-Channel Max Pooling,跨channel最大池化;
CWA表示Channel-Wise Attention,给定每个channel的重要性。
M
i
=
d
i
a
g
(
M
a
s
k
i
)
M_i = diag(Mask_i)
Mi=diag(Maski),
M
a
s
k
i
∈
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 L d i v ( F ) L_{div}(F) Ldiv(F)
L d i v ( F ) L_{div}(F) Ldiv(F)表示diversity component,相当于计算各channel特征间的距离,从而得到所有channel的总体相似度。作者使用的方法相比于普遍使用的欧氏距离和KL散度计算量更小。
diversity component的目的是同一类别的 ξ \xi ξ个channel应该关注图像的不同区域,而不应该是同一类别的所有channel都关注最有判别力的区域,相当于空间注意力机制。具体的实现为:
先对特征的每一位置进行softmax操作,将其变为预测的类别。然后选取一个类别的
ξ
\xi
ξ个channel中各空间位置的最大值,然后在空间位置上求和,得到各类别的预测概率在所有channel内的和。然后对各类别求均值,值越大表示模型对于所有类别,不同的channel都关注到了图像的不同区域。
L d i v ( F ) L_{div}(F) Ldiv(F)的物理意义表示模型对于数据集的所有类别,不同的channel都关注到了图像的不同区域,即取值越大越好。
L d i v ( F ) L_{div}(F) Ldiv(F)的取值上限为 ξ \xi ξ,表示不同channel的特征注意到了图像的不同区域。 L d i v ( F ) L_{div}(F) Ldiv(F)的取值下限为1,表示不同channel的特征注意到了图像的同一区域。如下图所示:
2.3 总结MC-Loss
MC-Loss通过 L d i s ( F ) L_{dis}(F) Ldis(F)使得一个类别的 ξ \xi ξ个channel都尽可能学习关于该类别的有判别力的特征,如图3(b)中一组 ξ \xi ξ个channel的特征都变成了同一颜色;通过 L d i v ( F ) L_{div}(F) Ldiv(F)使得各个channel都关注图像的不同空间位置,如图3(b)中一组 ξ \xi ξ个channel的特征的不同位置都有了颜色加深的区域。总体实现了如下图所示的结果: