写在前面
新的一周又开始了,冲冲冲~
这一篇文章提出了新的范式,不知道未来会不会成为主流的能并行 ResNet、Transformer 的网络。本文源于 B 站大佬的一个视频分享,遂找来这篇文章精读下。
- 论文地址:Image as Set of Points
- 代码地址:https://github.com/ma-xu/Context-Cluster
- 收录于:ICLR 2023
一、Abstract
开头设问:图像是什么?怎么提取潜在特征?(大佬风格,i 了 i 了)
给出回答:卷积网络:将图像视为矩形框内有组织的像素,通过卷积操作在局部区域内提取特征;视觉 Transformer:将图像视为一组 patches 的序列,通过注意力机制在全局范围内提取特征。本文引入一种新的范式:上下文聚类:Context clusters (CoCs),将图像视为一个无组织的点集,通过简单的聚类算法来提取特征。具体来说,每个点包含原始特征(例如颜色)和位置信息(坐标)。一种简单的聚类算法用来将这些点分组并层次化的提取深度特征。本文提出的方法无卷积和注意力机制,仅仅依赖于聚类算法用于空间交互。实验效果很好。
二、引言
提取图像特征的方式取决于如何解释图像:简单介绍下卷积神经网络 (ConvNets) 的特点,Vision Transformers (ViTs) 的特点。
对最近的工作的介绍,包含了一些联合卷积+注意力的方法。再之后是一些 MLP 和 Graph Network。接下来介绍自己提出的聚类方法。
将整个图像视为一组点的集合并将所有的点分组到聚类中心。每个类聚合周围的点到聚类中心,然后自适应的将中心点发散到周围所有点上,称之为上下文聚类。
将每个像素视为 5 维的数据点 (颜色 RGB + 2D 坐标),从而将图像转化为点云的集合,于是可以采用点云分析的方法。接下来引入一种简单的聚类方法将点分组到类。想法来自于 SuperPixel,即相似的像素被分组到一起,但是基础特征不同。
文本提出上下文聚类 Context Clusters (CoCs),本质不同于 ConvNets 或 ViTs,但同样也借鉴了一些级联的表示。
贡献如下:
- 将图像视为点的集合,CoCs 表明了对不同的数据领域也有强力的泛化性,例如点云和 RGBD 图像。
- CoCs 提出的上下文聚类提供了良好的的可解释性(可视化层输出)。
- 在一些数据集上超过了 ConvNets 或者 ViTs。
三、相关工作
图像处理中的聚类
挖一下聚类的旧报纸堆,超像素分割、细粒度识别。目前并未有工作通过聚类表示一般的视觉特征,本文旨在弥补这一缺失,提供数学和视觉上的可行性。
ConvNet & ViTs
对 ConvNet 和 ViTs 的特点进行介绍,主要是卷积和注意力机制。不同于这两者,本文提出一种聚类算法的视觉表示,可以作为一个 backbone 来达到优良的可解释性。
最近的进展
CoAtNet、Mobile-Former、MLP-like models、Vision GNN (ViG)。
不同之处:本文直接应用聚类方法并展示了富有前景的泛化性和可解释性。
四、方法
4.1 上下文聚类流程
从图像到点集
对于一幅输入图像 I ∈ R 3 × w × h \bold{I}\in\mathbb{R}^{3\times w\times h} I∈R3×w×h,每个像素坐标为 I i , j = [ i w − 0.5 , j h − 0.5 ] \bold{I}_{i,j}=[\frac{i}{w}-0.5,\frac{j}{h}-0.5] Ii,j=[wi−0.5,hj−0.5],于是整体的点集为 P ∈ R 5 × n \bold{P}\in\mathbb{R}^{5\times n} P∈R5×n,其中 n = w × h n=w\times h n=w×h 为点的数量,每个点包含特征(颜色)及位置(坐标)信息,因此点集应该是无序且混乱的。一组点集可以被认为是一种统一的数据表示,因为大多数领域中的数据都被考虑是特征和位置信息的聚合。
采用图像点集的特征提取
如上图所示,采用类似 ResNet 的方式,利用上下文聚类块来提取级联的深度特征。对于一组点集
P
∈
R
5
×
n
\bold{P}\in\mathbb{R}^{5\times n}
P∈R5×n,首先需要减少点的数量来增加计算效率,之后采用一系列的上下文聚类块来提取特征:平等地在空间内选取一些锚框,拼接最近邻的
k
k
k 个点并通过线性投影来融合这些点,注意:如果所有点按照顺序排列且
k
k
k 是合适的集合,那么就通过卷积来实现,例如 ViT。
特定任务上的应用
分类任务:平均最后一个 block 的输出并用一个全连接层来分类。
检测和分割任务:通过位置重新对输出点排序来满足大多数检测和分割头的需要。
4.2 上下文聚类系统
上下文聚类
对于一组特征点集
P
∈
R
5
×
n
\bold{P}\in\mathbb{R}^{5\times n}
P∈R5×n,基于它们的相似性将其分到一些类,每个点都只属于一个类别。
首先将
P
\bold{P}
P 投影到
P
s
\bold{P}_{s}
Ps;然后根据传统的超像素分割方法 SLIC 平等地在空间内选出
c
c
c 个中心, 其特征根据周围
k
k
k 个点来平均;之后计算这
P
s
\bold{P}_{s}
Ps 和中心点集的 cosine 相似度矩阵
S
∈
R
c
×
n
\bold{S}\in\mathbb{R}^{c\times n}
S∈Rc×n;最后分配每个点到最相似的中心,从而生成
c
c
c 个聚类。需要注意的是每个类都有着不同数量的点,极端情况下,一些类可能有0个点。在这种情况下,这些类是冗余的。而为了优化方便,在这些点中添加一个极微小值可以解决这一问题且没啥影响。
特征聚合
基于点到聚类中心的相似性动态地聚合这些点。假设一个类中包含
m
m
m 个点,其和聚类中心的相似性为
s
∈
R
m
s\in\mathbb{R}^{m}
s∈Rm,将这些点映射到一个值域空间,得到
P
v
∈
R
m
×
d
′
\bold{P_v}\in\mathbb{R}^{m\times d^{\prime}}
Pv∈Rm×d′,其中
d
′
d^{\prime}
d′ 为值的维度。类似聚类中心,同样在值域空间提出一个中心
v
c
v_c
vc,特征聚合可表示为:
g
=
1
C
(
v
c
+
∑
i
=
1
m
sign
(
α
s
i
+
β
)
∗
v
i
)
,
s.t.,
C
=
1
+
∑
j
=
1
m
sig
(
α
s
i
+
β
)
g=\dfrac{1}{C}\left(v_c+\sum\limits_{i=1}^{m}\operatorname{sign}\left(\alpha s_i+\beta\right)*v_i\right),\quad\text{s.t.,}~~C=1+\sum\limits_{j=1}^{m}\text{sig}\left(\alpha s_{i}+\beta\right)
g=C1(vc+i=1∑msign(αsi+β)∗vi),s.t., C=1+j=1∑msig(αsi+β)其中
α
\alpha
α 和
β
\beta
β 为可学习的尺度来缩放和变换相似度,
sig
(
⋅
)
\text{sig}(\cdot)
sig(⋅) 为 sigmoid 函数来重新缩放相似度到
(
0
,
1
)
(0,1)
(0,1)。
v
i
v_i
vi 表示
p
v
p_v
pv 中的第
i
i
i 个点。这里不考虑 softmax 函数,因为这些点彼此之间不冲突。为了控制梯度,通过因子
C
C
C 来规一化聚合的特征。
特征分发
每个聚类中心点基于相似度而聚合的特征
g
g
g 之后自适应地分发到每个点,于是点和点彼此之间能够通信且共享来自类中所有点的特征。对于点
p
i
p_i
pi,通过下式来更新:
p
i
′
=
p
i
+
FC
(
sig
(
α
s
i
+
β
)
∗
g
)
)
p_i^{\prime}=p_i+\text{FC}\left(\text{sig}\left(\alpha s_i+\beta)*g\right)\right)
pi′=pi+FC(sig(αsi+β)∗g))
这表示同样的相似度处理程序以及用一个全连接层来匹配原始的特征维度(从值空间维度
d
′
d^{\prime}
d′ 到原始维度
d
d
d)。
多头计算
自注意力机制中的多头方法同样能够增强上下文聚类。采用 h h h 个头,设置值空间 p v \bold{p}_{v} pv 和相似度空间 P s \bold{P}_{s} Ps 为 d ′ d^{\prime} d′。多头的输出之后拼接到一起,送入一个全连接层。
4.3 架构初始化
一些 ConvNets 和 ViTs 上的东西,例如级联结构和元 Transformer 结构,仍然适用于上下文聚类。
在每个阶段减少点的数量分别到
16
,
4
,
4
,
4
16,4,4,4
16,4,4,4 倍。第一阶段考虑周围的
16
16
16 个邻居,剩下的阶段考虑周围
9
9
9 个最近的邻居。
计算效率:假设有
n
n
n 个
d
d
d 维度的点以及
c
c
c 类。计算特征相似性的时间复杂度为
O
(
n
c
d
)
\mathcal{O}(ncd)
O(ncd),这对于高分辨率的输入图像来说是不可接受的,例如
224
×
224
224\times224
224×224。为了规避这一问题,采用 Swim Transformer 中区域并行的策略,将点划分到
r
r
r 个局部区域。于是计算复杂度变为
O
(
n
r
c
r
d
)
\mathcal{O}(\frac{n}{r}\frac{c}{r}d)
O(rnrcd)。但这种策略会限制上下文聚类的感受野,使得局部区域无法通信。
4.4 讨论
固定或动态的聚类中心?
所有的传统聚类方法以及超像素技术迭代地更新聚类中心直至收敛,然而会导致过高的计算成本,推理时间也会增加。在上下文聚类中,为了推理效率,将聚类中心作为可选的部分,从而能够在精度和速度间权衡。
重叠或非重叠聚类?
将每个点单独划分到特定的中心,这不同于点云分析的设计理念。实际上本文有意依赖于这些传统的高性能聚类方法(非重叠聚类),但是重叠聚类不是关键部分且不会产生额外的计算负担。
五、实验
数据集:ImageNet-1K 图像分类、ScanObjectNN 点云分类、MS COCO 目标检测、ADE20k 实例分割。
5.1 在 ImageNet-1K 上的图像分类
数据增强:随机水平翻转,随机像素擦除、混合、裁剪、标签平滑;AdamW,310 epochs, 0.9 momentum, 权重衰减 0.05,初始学习率 0.001,cosine 计划,8块 A100(有钱任性)。128 bath_size, Exponential Moving Average (EMA)。
‡
\ddagger
‡ 表示另一种区域划分方法,四个阶段的点数分别为
[
49
,
49
,
1
,
1
]
[49,49,1,1]
[49,49,1,1]。
构件的消融
5.2 聚类的可视化
5.3 在 ScanObjectNn 上的 3D 点云分类
5.4 在 MS-COCO 上的目标检测和实例分割
5.5 在 ADE20K 上的语义分割
六、结论
提出一种新的特征提取算法用于视觉表示,上下文聚类。受益于点云分析和超像素算法,将图像视为无组织的点集,采用简单的聚类算法来提取特征。实验效果比 ConvNet 和 ViT 好,更重要的是表明了可解释性和泛化性。
主要限制在于精度和速度,后续如果有上下文聚类的设计理念可以应用于其他的类似检测和分割任务。
A 模型配置
B 详细的解释
C 更多的实验
更多的分割结果
更多的检测结果
所有头的聚类图
区域并行操作上的消融
迭代更新中心的消融
D 泛化性展望
写在后面文章来源:https://www.toymoban.com/news/detail-404644.html
这篇论文对比了 ConvNets 和 ViTs,从底层框架来说确实不同于上述两者。但是纵观深度学习大的方向,这种聚类的方法可能还是难以应用到多模态领域,反而在计算机视觉任务上应该值得探索一下。文章来源地址https://www.toymoban.com/news/detail-404644.html
到了这里,关于有可能代替Transformer吗?Image as Set of Points 论文阅读笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!