【论文速览】ICLR23 - 将图像视为一组点集 Image as Set of Points


在这里插入图片描述

收录于ICLR2023 (oral, notable top 5%),代码地址:https://github.com/ma-xu/Context-Cluster

研究背景

目前计算机视觉领域最主流的backbone主要为卷积神经网络和视觉Transformer,以及基于它们进行改进的各项工作。本文提出了一种全新的视觉backbone架构,整个过程不包含任何卷积和自注意力操作,采用聚类的方式进行信息交互、提取特征。

该论文作者认为提取特征的方式取决于我们如何去分析一幅图像,比如卷积神经网络将图像视为有组织(organized)的像素矩阵,通过卷积以滑动窗口的形式提取局部特征;而视觉Transformer(ViTs)将图像视为一组图像块(patches)序列,通过全局的自注意力操作提取特征。除此之外,还有一些其他的架构,比如MLP以及GNN等。
在这里插入图片描述

CNN这种处理方式引入了非常重要的视觉偏置归纳,比如局部、平移不变性;ViT抛弃了这种偏置归纳,仍取得了不错的性能

该论文提出一种全新的图像分析视角,其受到"点云分析任务"的启发,将图像视为一组无序(unorganized)的点,通过简化聚类算法进行特征提取,提出了Context Cluster模型(CoC)。

在这里插入图片描述

上图展示了本文的核心思想,找到每个点属于的簇,在簇中进行聚合+分发,从而进行信息交互

CoC模型有两个主要优点:一是在不同数据域上展示了出色的泛化能力,其次是提供了较好的可解释性。并且,CoC在几个基准测试中也达到了与CNN和ViTs相匹配甚至更好的性能表现。

解决思路

CoC的整体结构如下所示,同样采用了金字塔结构,共4个阶段(Stage)。每个阶段先通过Points Reducer减少点的数量,然后再通过COC Block提取深度特征。
在这里插入图片描述

这种设计也主要是有利于下游任务的应用,比如检测与分割,可以直接套用在现有架构中

从图像到点集:对于输入图像首先要将其转换为点的集合,根据每个像素点的RGB值以及坐标位置,转换为一个5维的点,其中坐标以数学公式: [ i w − 0.5 , j h − 0.5 ] [\frac{i}{w}-0.5,\frac{j}{h}-0.5] [wi0.5,hj0.5]其中i,j是像素点的位置。从而将每幅图像转换为一个n*5的点集合。

在这里插入图片描述

上图展示了Context Cluster模块的主要结构,通过聚类提取进行特征点间的交互,然后用MLP进行通道间的交互.

从点集中提取特征:给定一个点集合,为了提升计算效率,先采用Points Reducer来减少点的数量:通过在空间中平均地选择一些anchor,选择距离最近的k个点进行拼接+融合,具体过程如下所示:
在这里插入图片描述

上图展示了"点集减少的过程",选择anchor最近的4个点进行拼接融合(concate + fc),而这个过程可以通过"卷积操作"去实现.

接下来进行聚类学习,先将所有特征点聚到对应的簇中,然后在每个簇内进行聚合(aggregated)分发(dispatched)

  • 特征聚类:在空间中均匀地选择c个中心,由最近的k个点平均得到每个中心的特征。通过计算每个特征点与中心的相似度进行聚类分配(通过线性投影将点集P投影到Ps空间中计算相似度),下图展示了一个聚类示例:
    在这里插入图片描述

上图展示了"聚类中心"与"聚类结果",上图展示了9个聚类中心,每个中心由最近的9个特征点的平均组成。值得注意的是,每个簇类中点的数量都不一致,在极端情况下可能某些簇中一个点都没有。此外,与传统聚类算法不一样的是,采用的是固定的中心,而不是迭代优化。这主要考虑到效率的问题。

  • 特征聚合:对于每个簇,根据相似度进行动态聚合,聚合后的特征如下所示:
    在这里插入图片描述
    其中si表示第i个特征点与中心的相似度,sig(·)表示sigmoid函数,它将相似度映射到(0,1),vi表示簇类中第i个特征点,α和β是可学习的缩放与偏移系数。

整个过程也会先通过线性投影到一个新的value空间Pv

  • 特征分发:得到聚合特征后,会根据相似度进行动态的特征分发,对于簇类中每个点:
    在这里插入图片描述

FC的作用是用于匹配特征维度

最后CoC Block也参考了self-attention的设计采用了多头机制。具体地说,分为h个head分别进行特征聚合与分发。

局部区域划分
可以看到,当有n个d维特征点和c个特征中心时,计算相似度时间复杂度会达到 O ( n c d ) O(ncd) O(ncd)。当图像分辨率比较高的时候显然是不可接受的,所以CoC参考了Swin的设计,采用局部区域划分的方式,将图像划分为r个区域,时间复杂度降到数学公式: O ( r n r c r d ) O(r\frac{n}{r}\frac{c}{r}d) O(rrnrcd).

这种划分方式会将时间复杂度降低为原来的r倍,但是限制了上下文交流(感受野)

最终网络架构
在这里插入图片描述
上表展示了CoC模型的不同架构下的具体配置,对于Point Reducer的设计:k_neighbors表示对于anchor需要选择的最近邻个数[拼接融合生成新特征];donwsample_r表示下采样倍率[减少点个数];对于CoC Block的设计:regions表示划分的局部区域个数;local_centers表示每个区域内的中心点个数。

部分实验效果

在这里插入图片描述
上表展示了不同架构模型的分类性能比较(ImageNet-1k),可以看到综合参数量、计算量、推理时间、Top-1准确率的评估,CoC的表现还是很不错的。

作者并没有和主流的SOTA方法进行比较,主要是评估这种范式的可行性

在这里插入图片描述

上图展示了不同架构模型在不同阶段的可视化图(自注意力激活图 / CAM / 聚类图)

此外,作者还展示了CoC在3D点云分类、目标检测、实例分割、语义分割任务上的性能,感兴趣参照原文。

思考

该论文提出了一种全新的图像分析范式,即将图像视为一组点集,同时设计了一种新的模型架构Context Clusters,采用聚类的方式进行特征提取。该方法相比于CNN和ViT,拥有更好的可解释性,并且具备处理不同数据域的能力,如下所示,CoC可以有效地处理离散数据、遮挡图像、不规则图像等。

在这里插入图片描述

从CoC模型的设计不难看出,其参考了很多经典模型,比如采用金字塔结构构造多个不同分辨率的stage,其次采用局部划分来降低时间复杂度等。此外,CoC模型在很多地方都引入了局部性,例如Point Reduction过程中,通过局部聚合的方式合并点集,在聚类模块中也采用局部划分来进行局部特征的聚合与分发,这种方式类似于Swin为ViT引入window机制,在减少计算量的同时也引入了一定的视觉偏置归纳。

个人认为,这种CoC的方式类似于一种特殊的局部注意力机制,先将图像分成不同的区域,在各区域间进行特征交互,先融合再分配;同时也类似于一种特殊的可变形卷积操作,不局限于固定尺寸的局部空间。

参考资料

[1] ICLR 2023 oral|一种除了卷积和ViT以外的新视觉框架-Image as Set of Points
[2] 把图片视为点集,简单聚类算法实现强悍视觉架构

猜你喜欢

转载自blog.csdn.net/qq_36560894/article/details/129861560