The Devil is in the Channels: Mutual-Channel Loss for Fine-Grained Image Classification(MC-Loss)
2020,TIP
文章目录
摘要
本文展示了可以在不需要复杂的网络设计或训练机制的情况下训练微妙的细节,只需要一个损失即可。主要技巧在于如何尽早深入研究单个特征通道,而不是从整合特征图开始。
所提出的损失函数称为互通道损失MC-Loss,由两个特定于通道的组件组成:判别性组件和多样性组件。判别性组件通过一个通道注意力机制迫使属于同一类的所有特征通道具有判别性。多样性组件在通道上施加了约束,在空间上互斥。最终结果是一组特征通道,每个通道都反映特定类别的不同局部判别区域。
代码:https://github.com/dongliangchang/Mutual-Channel-Loss
1 引言
检测区域方法类的部件:显示检测部分、确保学习到的特征具有区分性。
本文没有引入显式检测部分的网络组件,而是只用一个损失同时实现判别特征学习和部件定位。优势:
- 不引入任何额外的网络参数,使网络更容易训练
- 原则上可以应用于任何网络架构
关键在于如何尽早深入研究特征通道,而不是直接在特征图上学习细粒度的部分级特征。
核心思想:假设有固定数量的特征通道来表示每个类,直接在通道上施加损失,使得属于同一类的所有特征通道都是判别性的(每个都有助于与其他类别区分)、互斥的(每个通道与不同的局部相关)。最终结果是一组类对齐的特征通道,每个通道都区分相互不同的局部部分,如下图:

MC-Loss:
- 判别性组件。在融合之前,迫使与一个类对应的特征通道具有判别性 。引入一个通道注意力机制,在训练过程中,固定比例的通道被随机屏蔽,迫使剩余通道对给定的类别具有辨别力。再应用跨通道最大池化来融合特征通道并生成最终的特征图,该图现在是类对齐的并且具有最佳判别性
- 多样性组件。使每个通道都将关注相互不同的部分。要求属于同一类的通道峰值的空间距离最大化。这可以通过再次应用跨通道最大池化,然后要求最大空间求和来实现。
3 MC-Loss
整体训练框架:
特征图分成组,每个组与一个类别对应,每个组有 ξ \xi ξ个通道,共 c c c个组( c c c也是类别数目, ξ \xi ξ是超参数)。
每个通道表示成
F
i
∈
R
W
H
\mathcal{F}_i\in R^{WH}
Fi∈RWH(reshape),每个组的通道表示成
F
i
∈
R
ξ
×
W
H
\mathbf{F}_i\in R^{\xi \times WH}
Fi∈Rξ×WH:
F
i
=
{
F
i
×
ξ
+
1
,
F
i
×
ξ
+
2
,
.
.
.
,
F
i
×
ξ
+
ξ
}
\mathbf{F}_i=\{\mathcal{F}_{i\times\xi+1},\mathcal{F}_{i\times\xi+2},...,\mathcal{F}_{i\times\xi+\xi}\}
Fi={Fi×ξ+1,Fi×ξ+2,...,Fi×ξ+ξ}
特征图也就是
F
=
{
F
0
,
F
1
,
.
.
.
,
F
c
−
1
}
\mathbf{F}=\{\mathbf{F}_0,\mathbf{F}_1,...,\mathbf{F}_{c-1}\}
F={F0,F1,...,Fc−1}。通过交叉熵损失和MC-Loss。
L
o
s
s
(
F
)
=
L
C
E
(
F
)
+
μ
×
L
M
C
(
F
)
L
M
C
(
F
)
=
L
d
i
s
(
F
)
−
λ
×
L
d
i
v
(
F
)
Loss(\mathbf F)=L_{CE}(\mathbf F) + \mu \times L_{MC}(\mathbf F)\\ L_{MC}(\mathbf F)=L_{dis}(F)-\lambda\times L_{div}(\mathbf F)
Loss(F)=LCE(F)+μ×LMC(F)LMC(F)=Ldis(F)−λ×Ldiv(F)
3.1 判别性组件
目的:迫使特征通道类对齐(和特定类相关),每个通道有足够的判别能力。
L
d
i
s
=
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
)
⏟
s
o
f
t
m
a
x
)
L_{dis}=L_{CE}(y,\underbrace{\frac{[e^{g(\mathbf F_0)},e^{g(\mathbf F_1)},...,e^{g(\mathbf F_{c-1})}]^T}{\sum^{c-1}_{i=0}e^{g(\mathbf F_i)}}}_{softmax})
Ldis=LCE(y,softmax
∑i=0c−1eg(Fi)[eg(F0),eg(F1),...,eg(Fc−1)]T)
y
y
y是真实类别。其中的
g
g
g是:
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(\mathbf F_i)=\underbrace{\frac{1}{WH}\sum^{WH}_{k=1}}_{GAP} \underbrace{\max_{j=1,2,...,\xi}}_{CCMP} \underbrace{[M_i\cdot \mathbf F_{i,j,k}]}_{CWA}
g(Fi)=GAP
WH1k=1∑WHCCMP
j=1,2,...,ξmaxCWA
[Mi⋅Fi,j,k]
- GAP:全局均值池化。 c × W H → c × 1 c\times WH\to c\times 1 c×WH→c×1
- CCMP:跨通道最大池化。 c × ( ξ , W H ) → c × ( 1 , W H ) c\times(\xi,WH)\to c\times(1,WH) c×(ξ,WH)→c×(1,WH)。得到 c c c个特定于类的向量。
- CWA:通道注意力。 c × ( ξ , W H ) → c × ( ξ , W H ) c\times(\xi,WH)\to c\times(\xi,WH) c×(ξ,WH)→c×(ξ,WH)
Mask是一个零一掩模,随机选择一半 ⌊ ξ 2 ⌋ \lfloor\frac{\xi}{2}\rfloor ⌊2ξ⌋的零。 M i = d i a g ( M a s k i ) M_i=diag(\mathbf{Mask}_i) Mi=diag(Maski),对角矩阵。(假设 M i M_i Mi对角线都是1,那就是单位矩阵了,对 F i \mathbf F_i Fi没有影响了。0对应的行(通道)被消除了。原理上特别像dropout)

3.2 多样性组件

目的:特征通道的近似距离测量,用于计算所有通道的总相似度。一个类的不同特征通道应该关注图像的不同区域,而不是所有通道都关注最具辨别力的区域。它通过使每个组的特征通道多样化来减少冗余信息,并有助于发现图像中每个类别的不同判别区域。 此操作可以解释为通道解耦,以便从图像的不同显着区域捕获细节。
L
d
i
v
(
F
)
=
1
c
∑
i
=
0
c
−
1
h
(
F
i
)
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
′
]
⏟
S
o
f
t
m
a
x
L_{div}(F)=\frac{1}{c}\sum^{c-1}_{i=0}h(\mathbf F_i)\\ h(\mathbf F_i)=\sum^{WH}_{k=1} \underbrace{\max_{j=1,2,...,\xi}}_{CCMP} \underbrace{[\frac{e^{\mathbf F_{i,j,k}}}{\sum^{WH}_{k'=1}e^{\mathbf F_{i,j,k'}}}]}_{Softmax}
Ldiv(F)=c1i=0∑c−1h(Fi)h(Fi)=k=1∑WHCCMP
j=1,2,...,ξmaxSoftmax
[∑k′=1WHeFi,j,k′eFi,j,k]
函数softmax是空间维度的归一化,这里的CCMP与判别组件中的作用相同。
多样性组件不能单独用于分类,它充当判别器的正则化项,隐式发现图像中不同的原始区域的损失。
4 实验
特殊情况:假设每个类有 ξ \xi ξ个通道,但是特征图的总的通道数不一样,怎么办呢?
解决方案: ξ \xi ξ不均匀。例如,前88个类,每个类分配2 个通道,其余类用3个特征通道。
SOTA比较

CUB数据集上每个类只有两个通道,但是数据集中的鸟有丰富的区别性区域,很难再通道数目不够的情况下获得鲁棒性的描述。
消融
