【本文首发于CSDN个人博客,转载请注明出处。In case of infringement, please contact to delete.】
论文是NeurIPS 2022的《Class-Aware Adversarial Transformers for Medical Image Segmentation》。该文提出CASTformer模型(一种简单而有效的对抗transformer),用于 2D 医学图像分割。论文原文链接
下面是我的逻辑和理解,论文中提到的简单内容会略过,若有错误请指出。
p.s. 欢迎【关注&点赞&收藏】
一些小问题
首先解决一些阅读过程中的小问题。
- 什么是class-aware?与L1 和 L2 正则化的区别在哪里?
L1 和 L2 正则化通过向损失函数添加惩罚项来帮助降低模型的复杂性。 这个惩罚项通过减少模型中权重的大小来鼓励模型学习数据中更简单的模式。 通过减小权重的大小,L1 和 L2 正则化有助于防止过度拟合并提高模型的泛化性能。
类感知正则化在特征学习过程中优化类内方差和类间距离,以提高分割性能。 通过在特征学习过程中优化类内方差和类间距离,类感知正则化有助于更好地学习具有语义结构的对象的判别区域,并生成更准确的分割标签图。
- 为什么CNN的缺点是缺乏long-range dependencies?
CNN 旨在通过将卷积滤波器应用于输入图像的小区域来学习局部特征。 这种设计使它们对许多图像处理任务都高效且有效。 然而,这种设计也使得 CNN 难以对图像中像素之间的远程依赖关系进行建模。 另一方面,Transformer 旨在模拟序列中元素之间的远程依赖关系。 他们通过使用允许序列中的每个元素关注序列中的所有其他元素的自注意力机制来做到这一点。 这使得 Transformer 在对图像和其他类型数据的远程依赖建模方面比 CNN 更有效。
- low scale/high-scale是什么意思?
尺度是指卷积层中使用的过滤器的大小。 不同大小的过滤器可以捕获不同尺度的特征。 例如,大小为 3x3 的过滤器可以捕获局部特征,例如边和角,而大小为 5x5 的过滤器可以捕获更大的特征,例如曲线和圆。 通过使用多个尺寸的过滤器,模型可以捕获多个尺度的特征并提高其识别图像中物体的能力。
推导过程
步骤总括
- multi-scale (通过不同尺度的分辨率Resolution学习)
- pyramid结构+transformer:
a) 全局spatial信息
b) 局部context信息 - 将segmentation作为预测任务:
standard patch token -> perform be sub-optimal -> propose CAT(a progressive sampling strategy). 通过迭代更新得到更有效的feature representation。 - GAN:
input + predicted segmentation mask
公式推导
encoder
CNN - 40 layers Conv: 实现多种分辨率的feature map,共4层,即multi-resolution。
x ∈ R H × W × 3 \mathbf{x}\in R^{H \times W \times 3} x∈RH×W×3, F 1 ∈ R H 2 × W 2 × C 1 F_1 \in R^{\frac{H}{2}\times\frac{W}{2}\times C_1} F1∈R2H×2W×C1, patch size P = 16 × 16 × 3 P=16\times 16\times 3 P=16×16×3 【此处有个小疑问,见存疑1】。
CAT
task: get the seq of token
I
M
,
i
∈
R
C
×
(
n
×
n
)
I_{M,i}\in R^{C\times (n \times n)}
IM,i∈RC×(n×n), aim at
F
i
F_i
Fi,有4个。
更新过程:
S
t
+
1
=
S
t
+
O
t
S_{t+1}=S_t+O_t
St+1=St+Ot,
O
t
O_t
Ot的意义是预测offset。
此处涉及图片坐标系设置(position):x轴:
τ
h
=
H
n
\tau_h=\frac{H}{n}
τh=nH,y轴:
τ
w
=
W
n
\tau_w=\frac{W}{n}
τw=nW。
初始坐标为:
S
1
i
=
[
β
i
y
τ
h
+
τ
h
2
,
β
i
x
τ
w
+
τ
w
2
]
S_1^i=[\beta_i^y \tau_h+\frac{\tau_h}{2},\beta_i^x \tau_w+\frac{\tau_w}{2}]
S1i=[βiyτh+2τh,βixτw+2τw]。
分割方式为:
β
i
y
=
⌊
i
n
⌋
\beta_i^y=\lfloor\frac{i}{n}\rfloor
βiy=⌊ni⌋【存疑2】,
β
i
x
=
i
−
β
i
y
n
\beta_i^x=i-\beta_i^yn
βix=i−βiyn 。
能够得到:
I
t
′
=
F
i
(
s
t
)
I_t'=F_i(s_t)
It′=Fi(st),(开始的时候为:
I
1
′
=
F
i
(
s
1
)
I_1'=F_i(s_1)
I1′=Fi(s1) )。
根据双线性插值的采样函数,得到
I
t
′
I_t'
It′。每个时刻都会有一个init sample点,会根据
s
t
+
1
s_{t+1}
st+1更新。
然后进行几个坐标嵌入计算(position embedding):
S
t
=
W
t
s
t
S_t=W_ts_t
St=Wtst,其中
W
t
W_t
Wt是可以通过学习更新的;
V
t
=
I
t
′
⨁
S
t
⨁
I
t
−
1
V_t = I_t'\bigoplus S_t \bigoplus I_{t-1}
Vt=It′⨁St⨁It−1;
I
t
=
t
r
a
n
s
f
o
r
m
e
r
(
V
t
−
1
)
I_t=transformer(V_{t-1})
It=transformer(Vt−1);
offset:
o
t
=
O
t
(
I
t
)
o_t=O_t(I_t)
ot=Ot(It),其中
O
t
O_t
Ot是可以学习的线性mapping。
总结
按我的理解重新画了一下流程图的思路:
存疑
- 为什么不是 F 1 ∈ R H × W × 3 C F_1 \in R^{H \times W \times 3C} F1∈RH×W×3C ? 才能在patch size P = 16 × 16 × 3 P=16\times 16\times 3 P=16×16×3得到分割后 F 1 F_1 F1的 patch size H W 1 6 2 × C 1 \frac{HW}{16^2}\times C_1 162HW×C1吗?
- 为什么不是 β i y = ⌊ n i ⌋ \beta_i^y=\lfloor\frac{n}{i}\rfloor βiy=⌊in⌋?
参考
生成对抗网络(GAN)
ResNet详解
双线性插值
[CV-图像分类]ViT模型----An Image Is Worth 16X16 Words: Transformers for Image Recognition at Scale
强推:【CV知识点汇总与解析】| 技术发展篇 (超详细!!!)
强推: 深度学习面试 刷题必备(CV版)