用以阅读关于对比学习与语义分割结合的相关论文的笔记,如有解读错误的地方,欢迎提出,另外有推荐文章也可进行分享。
文章一
论文标题:《Exploring Cross-Image Pixel Contrast for Semantic Segmentation》
论文地址:https://arxiv.org/abs/2101.11939
笔记部分:
1、Pixel-Wise Cross-Entropy Loss.
公式:
L
i
C
E
=
−
1
c
ˉ
⊤
log
(
softmax
(
y
)
)
\mathcal{L}_{i}^{\mathrm{CE}}=-\mathbf{1}_{\bar{c}}^{\top} \log (\operatorname{softmax}(\boldsymbol{y}))
LiCE=−1cˉ⊤log(softmax(y))
符号含义:
−
1
c
ˉ
⊤
-\mathbf{1}_{\bar{c}}^{\top}
−1cˉ⊤:像素的标签,具体形式为one-hot
公式解读:该公式为像素级别的交叉熵损失函数,式子中的y为对每个标签的预测概率,具体运算形式如下图。
其中-log图像在
x
∈
(
0
,
2
)
x\in(0,2)
x∈(0,2)的图像如下,当
x
=
1
x=1
x=1时,
y
=
0
y=0
y=0。
因此可以看出,如果需要将ixel-Wise Cross-Entropy Loss优化至最小,那么需要将损失函数中的y优化至最大。
2、Pixel-to-Pixel Contrast
公式:
L
i
N
C
E
=
1
∣
P
i
∣
∑
i
+
∈
P
i
−
log
exp
(
i
⋅
i
+
/
τ
)
exp
(
i
⋅
i
+
/
τ
)
+
∑
i
−
∈
N
i
exp
(
i
⋅
i
−
/
τ
)
\mathcal{L}_{i}^{\mathrm{NCE}}=\frac{1}{\left|\mathcal{P}_{i}\right|} \sum_{\boldsymbol{i}+\in \mathcal{P}_{i}}-\log \frac{\exp \left(\boldsymbol{i} \cdot \boldsymbol{i}^{+} / \tau\right)}{\exp \left(\boldsymbol{i} \cdot \boldsymbol{i}^{+} / \tau\right)+\sum_{\boldsymbol{i}^{-} \in \mathcal{N}_{i}} \exp \left(\boldsymbol{i} \cdot \boldsymbol{i}^{-} / \tau\right)}
LiNCE=∣Pi∣1∑i+∈Pi−logexp(i⋅i+/τ)+∑i−∈Niexp(i⋅i−/τ)exp(i⋅i+/τ)
符号含义:
i:像素的向量
i
+
i^{+}
i+:同一图片下正样本像素的向量
τ
\tau
τ:非负常数
∣
P
i
∣
|P_{i}|
∣Pi∣:在不同图片中抽取出的正样本向量内积
公式解读:前面说过,-log函数想得到最小,那么log里面的东西需要达到最大,因此对于
L
i
N
C
E
\mathcal{L}_{i}^{\mathrm{NCE}}
LiNCE,优化方向为增大分子
e
x
p
(
i
⋅
i
+
/
τ
)
exp(i\cdot i^{+}/\tau)
exp(i⋅i+/τ),减少分母
e
x
p
(
i
⋅
i
+
/
τ
)
+
∑
i
−
∈
N
i
e
x
p
(
i
⋅
i
−
/
τ
)
exp(i\cdot i^{+}/\tau)+ {\textstyle \sum_{i^{-}\in N_{i} }^{}} exp(i\cdot i^{-}/\tau)
exp(i⋅i+/τ)+∑i−∈Niexp(i⋅i−/τ)。但因为分母中有一部分与分子相同,那一部分是需要增大的,因此减少分母的优化方向不在这部分,而在负样本部分,即减少正样本像素与每个负样本的距离,即可达到优化损失函数的目的。这里就体现了对比学习的思想。
文章二
论文标题:《Contrastive Learning for Label Efficient Semantic Segmentation》
论文地址:https://arxiv.org/abs/2012.06985v4
笔记部分:
1、Within-image loss
公式:
−
1
N
I
N
I
∑
p
=
1
N
I
1
N
y
p
I
I
^
I
p
q
I
I
^
l
o
g
(
e
p
q
I
I
^
∑
k
=
1
N
I
^
e
p
q
I
I
^
)
-\frac{1}{N^{I}}{N^{I}}\sum_{p=1}^{N^{I}}\frac{1}{N_{y_{p}^{I} }^{\hat{I}}} \mathbb{I}_{pq}^{I\hat{I}}log(\frac{e_{pq}^{I\hat{I}}}{\sum_{k=1}^{N^{\hat{I}}}e_{pq}^{I\hat{I}}} )
−NI1NI∑p=1NINypII^1IpqII^log(∑k=1NI^epqII^epqII^)
符号含义:
I
^
\hat{I}
I^:失真后的图片
y
p
I
y_{p}^{I}
ypI:在图片I中,像素P的类别
N
c
I
N_{c}^{I}
NcI:在图片I中,类别c的数量
N
I
N^{I}
NI:图片I的像素
f
p
I
f_{p}^{I}
fpI:在图片I中,像素P的向量
I
\mathbb{I}
I:指示函数
e
p
k
A
B
=
e
x
p
(
f
p
A
⋅
f
k
B
/
τ
)
e^{AB}_{pk}=exp(f_{p}^{A}\cdot f_{k}^{B}/ \tau)
epkAB=exp(fpA⋅fkB/τ)
τ
\tau
τ:非负常数
公式解读:该损失函数用于图片内的对比学习,正样本使用的是同一图片经过失真处理后同一类别的向量,其优化的方向与交叉熵函数很相像,但有一点区别,这里使用了指示函数,即在训练过程中更多的考虑正样本影响。
2、Cross-image loss
公式:
−
1
N
I
N
I
∑
p
=
1
N
I
∑
q
=
1
N
I
^
I
p
q
I
I
^
N
y
p
I
I
^
+
N
y
p
I
J
^
l
o
g
(
e
p
q
I
I
^
∑
k
=
1
N
I
^
e
p
q
I
I
^
+
∑
k
=
1
N
J
^
I
p
q
I
J
^
e
p
q
I
J
^
)
−
1
N
I
N
I
∑
p
=
1
N
I
∑
q
=
1
N
J
^
I
p
q
I
J
^
N
y
p
I
I
^
+
N
y
p
I
J
^
l
o
g
(
e
p
q
I
I
^
∑
k
=
1
N
I
^
e
p
q
I
I
^
+
∑
k
=
1
N
J
^
I
p
q
I
J
^
e
p
q
I
J
^
)
-\frac{1}{N^{I}}{N^{I}}\sum_{p=1}^{N^{I}}\sum_{q=1}^{N^{\hat{I}}}\frac{\mathbb{I}_{pq}^{I\hat{I}}}{N_{y_{p}^{I} }^{\hat{I}}+N_{y_{p}^{I} }^{\hat{J}}} log(\frac{e_{pq}^{I\hat{I}}}{\sum_{k=1}^{N^{\hat{I}}}e_{pq}^{I\hat{I}} + \sum_{k=1}^{N^{\hat{J}}}\mathbb{I}_{pq}^{I\hat{J}} e_{pq}^{I\hat{J}}} )-\frac{1}{N^{I}}{N^{I}}\sum_{p=1}^{N^{I}}\sum_{q=1}^{N^{\hat{J}}}\frac{\mathbb{I}_{pq}^{I\hat{J}}}{N_{y_{p}^{I} }^{\hat{I}}+N_{y_{p}^{I} }^{\hat{J}}} log(\frac{e_{pq}^{I\hat{I}}}{\sum_{k=1}^{N^{\hat{I}}}e_{pq}^{I\hat{I}} + \sum_{k=1}^{N^{\hat{J}}}\mathbb{I}_{pq}^{I\hat{J}} e_{pq}^{I\hat{J}}} )
−NI1NI∑p=1NI∑q=1NI^NypII^+NypIJ^IpqII^log(∑k=1NI^epqII^+∑k=1NJ^IpqIJ^epqIJ^epqII^)−NI1NI∑p=1NI∑q=1NJ^NypII^+NypIJ^IpqIJ^log(∑k=1NI^epqII^+∑k=1NJ^IpqIJ^epqIJ^epqII^)
符号含义:
J:其他数据集的样本
公式解读:该损失函数为前面Within-image loss 的延申,在log里面优化中,增加考虑了不同图片的数据,但更多的还是考虑了正样本的影响,在文章中论文作者提到过当考虑其他图片的负样本时,效果不好。
文章三
论文标题:《Regional Semantic Contrast and Aggregation for Weakly Supervised Semantic Segmentation》
论文地址:https://arxiv.org/abs/2203.09653#
笔记部分:
1、Pseudo-Region Representation
这里使用了弱监督学习的方式获取像素向量。流程为对于输入的照片I,先通过 F = F F C N ( I ) ∈ R W × H × D F=\mathcal{F}_{FCN} (I)\in R^{W\times H\times D} F=FFCN(I)∈RW×H×D和 P = F C A M ( F ) ∈ R W × H × L P=\mathcal{F}_{CAM} (F)\in R^{W\times H\times L} P=FCAM(F)∈RW×H×L获得基本的embedding。之后使用掩码平均池化(Masked Average Pooling)的方法,得到像素i的向量 f l f_{l} fl。
2、Pseudo-Region Memory Bank
这里是构建出一个标签集,标签集包含了所有类别的向量,这里的类别向量训练时会有一个更新的过程,公式为 γ m l + ( 1 − γ ) f l ⟶ m l \gamma m_{l} + (1-\gamma )f_{l}\longrightarrow m_{l} γml+(1−γ)fl⟶ml,其中 γ 为参数 \gamma 为参数 γ为参数。
3、Regional Semantic Contrast (RSC)
这里定义了region-aware contrastive loss,公式如下:
L
l
N
C
E
(
f
l
,
y
l
)
=
1
∣
M
l
∣
∑
m
l
+
∈
M
l
−
log
e
sim
(
f
l
,
m
l
+
)
/
τ
e
sim
(
f
l
,
m
l
+
)
/
τ
+
∑
m
l
−
∈
M
\
M
l
e
sim
(
f
l
,
m
l
−
)
/
τ
\mathcal{L}_{l}^{\mathrm{NCE}}\left(\boldsymbol{f}_{l}, y_{l}\right)=\frac{1}{\left|\mathcal{M}_{l}\right|} \sum_{m_{l}^{+} \in \mathcal{M}_{l}}-\log \frac{e^{\operatorname{sim}\left(\boldsymbol{f}_{l}, \boldsymbol{m}_{l}^{+}\right) / \tau}}{e^{\operatorname{sim}\left(\boldsymbol{f}_{l}, \boldsymbol{m}_{l}^{+}\right) / \tau}+\sum_{m_{l}^{-} \in \mathcal{M} \backslash \mathcal{M}_{l}} e^{\operatorname{sim}\left(\boldsymbol{f}_{l}, \boldsymbol{m}_{l}^{-}\right) / \tau}}
LlNCE(fl,yl)=∣Ml∣1∑ml+∈Ml−logesim(fl,ml+)/τ+∑ml−∈M\Mlesim(fl,ml−)/τesim(fl,ml+)/τ
符号含义:
f
l
f_{l}
fl:像素的向量
y
l
y_{l}
yl:标签初步向量
m
l
m_{l}
ml:标签集里的向量
公式解读:与前面的Pixel-to-Pixel Contrast基本一致。但有以下调整:
L
l
R
M
−
N
C
E
=
ω
L
l
N
C
E
(
f
^
l
,
y
l
)
+
(
1
−
ω
)
L
l
N
C
E
(
f
^
l
,
y
l
−
)
\mathcal{L}_{l}^{\mathrm{RM}-\mathrm{NCE}}=\omega \mathcal{L}_{l}^{\mathrm{NCE}}\left(\hat{\boldsymbol{f}}_{l}, y_{l}\right)+(1-\omega) \mathcal{L}_{l}^{\mathrm{NCE}}\left(\hat{\boldsymbol{f}}_{l}, y_{l^{-}}\right)
LlRM−NCE=ωLlNCE(f^l,yl)+(1−ω)LlNCE(f^l,yl−)
其中
w
∈
B
(
β
,
β
)
w\in B (\beta,\beta)
w∈B(β,β)
公式解读:这里的调整与对比学习没有联系,更多的是因为这篇文章与弱监督学习相关,文章提到,训练的标签是有噪音的,即可能是不准确的,所以在计算损失函数时,不能只考虑与现有正样本的,还需要考虑负样本里潜在的正样本(即被标错的正样本)。因此这里计算了与负样本的损失函数,并与前面的正样本加权求和。其中这里的权重服从
β
\beta
β分布,使用
β
\beta
β分布分布的原因在于标签标错的概率是未知的,是缺乏大量先验知识的,因此这里使用该分布就行估计概率,其中参数的设定作者参考了其他论文的参数。
4、剩余部分
剩余部分不再涉及对比学习,因此简单叙述。在通过对比学习对Memory Bank里正负样本集的向量,之后在使用k-means进行聚类,每个类别都聚成K个向量,并于前面的样本向量F进行矩阵相乘等操作,得到蕴含整体数据集信息的向量,最后通过class activation maps进行预测,得到最后结果。