论文链接:https://arxiv.org/pdf/2303.01494.pdf
项目链接:https://github.com/ma-xu/Context-Cluster
ICLR 2023 oral, 这篇文章提供了一种图像特征抽取的新视角。
-
动机和贡献
The way we extract features depends a lot on how we interpret an image.
- 对于ConvNets而言,图像被认为是以矩形存储的有组织的像素点,通过在local region中的卷积操作辅以滑动窗操作实现特征的抽取。其优势在于局部性和平移不变性带来的归纳偏置。
- ViTs 则将图像看成patches的序列,通过global-range self-attention操作自适应的从patches之间融合信息,其抛弃了ConvNets的归纳偏置,因此理论上能够获得可喜的结果。
尽管CNN和ViTs在视觉领域影响非常大,但他们并非唯二的选择。
- MLP-based 框架证明纯基于MLP的设计同样能够得到相似的性能;
- 另外,图网络也被证明是提取图像特征的有效提取器。
本文则希望能够抛开CNN或者ViTs这种潜意识的固有选择,从一种更新的角度去看待图像,从而找到一种新的特征提取方式。具体而言,作者将图像视作一堆类似点云的点的集合,从而去掉了rectange shape和sequence这种归纳偏置,且能够更好的融合不同模态的数据,比如Fig10中给出的非标准rectangle图像。在确定了看待图像的方式之后,作者提出了一种基于简单****聚类算法****的特征提取方式。
本文方法相对于CNN和ViTs的优势:
- 通过将图像视作点集, CoCs(Context Clusters) 能够具有在不同数据域内更强大的泛化能力,比如点云,RGBD图像等;
- 上下文信息的聚类能够提供更好的解释性,通过可视化每一层被聚在一起的点可以更好的理解该层的作用。
- 虽然文章出发点并不是寻找一个最优的特征提取器,但本文给出的模型依然在不同任务中取得了和SOTA可比的性能。
2. 方法阐述
Pipeline 套用了CNN和ViTs的层次化结构,划分成不同的stage,每个stage开始是一层降分辨率的操作,然后堆叠若干从Context Cluster Blocks用于特征交互。Context Cluster Block 结构和MetaFormer一致,决定了其下限不会差,如Figure2所示,显示特征交互层,然后是MLP进行channel的融合,另外同样的skip connections操作。
2.1 From Image to Set of Points
将图像上的每个点使用5维向量表示[r,g,b,x, y], 其中x,y是以图像中心点为远点归一化之后的坐标。每个点的特征既包含了表观特征也包含了位置信息, 从而这些points 可以是无序的。当然,更复杂有效的位置编码方式肯定能改善性能,但不是本文的重点,因此没有进一步探讨。
2.2 Feature Extraction with Image Set Points
为了搭建层次结构,每个stage的第一层是points的缩减层。具体而言在整张图像平面均匀的选择anchors,然后其k近邻的点的特征cat在一起,经过线性层编码得到新的空间。这里如果points 是以rectangele排列的话,本质上就是Conv操作。当然其泛化性体现在针对于非rectangle排列的拓扑结构同样适用。
2.3 Context Cluster block
2.3.1 Context Clustering
对于输入的n个points,通过特征的余弦相似度将每个点划分到不重叠的group中。具体而言,首先将特征P线性投影到新空间 , 然后在空间中均匀的划分出c个中心点,中心点的特征则由其个最近邻点的特征平均得到。然后计算每个点与中心点的余弦相似度, 由于每个点的特征包含位置信息,因此相似度矩阵隐式的包含了局部约束。值得注意的是这里的cluster和CNN以及ViT中的locality相比更自由,划分之后每个cluster包含不同的points数目,甚至有些cluster没有任何point,这些cluster则是冗余类别。
2.3.2 Feature Aggregating
同一个cluster的points的特征用于更新中心点的特征。假设某一cluster包含了 个points, 中心点和每个点的特征相似度是,首先将point的特征做一次映射(类似于ViTs中的V),另外这里的中心点特征也是同样空间的特征, 于是中心点更新后的特征为
其中是sigmoid函数,是可学习变量。某种程度上可以类似于self attention中的,文章这里解释了下为什么使用sigmoid,且没有使用softmax的原因是同一个cluster一般被认为相似度非常大,不存在冲突,因此sigmoid能够保证是正值,从每个point中取一部分特征,而softmax的话其稀疏性主要用于从存在冲突的多个point中选一部分。的引入类似于skip connection,主要是为了数值稳定性以及强化locality。
2.3.3 Feature Dispatching
整个context cluster block类似于squeeze-expand 结构,相同cluster中的points 经过2.3.2 聚合到center point之后,再分配到每一个point上,这里可以理解成按比例分配个不同的point。同样也是使用了skip connection结构。
2.3.4 Multi-Head Computing
类似于self-attention结构,multi-head同样可以引入到context cluster计算中。在空间内将特征划分n个head,然后经过feature aggregationg和feature dispatching之后,再经过FC层进行channel上的融合。
2.4 Task-Specific Application
对于分类问题,从最后一个stage的最后一个block的输出,经过FC层进行分类。
对于下游密集预测任务,比如检测和分割,需要在每个stage的最后一层block的输出上rearange 输出points,然后送到不同的任务头中。
2.5 Architecture parameters
k_neighbors: 用于下采样而选择的近邻点个数
downsampler_r: 下采样率
regions:为了降低计算量,类似于Swin-Transformer,划分window的数目
local_centers: 每个regions中划分的类别数
mlp_r: 每个block的mlp中特征放大率
2.6 Discussion
- Fixed or Dynamic centers for clusters?
Dynamic centers性能会更好,但需要多次iteration,时间消耗太大,因此fixed centers是accuracy和speed比较好的折衷。 - Overlap or non-overlap clustering?
Although it might produce higher performance, overlapped clustering is not essential to our approach and could result in extra computing burdens
3. 实验分析
3.1 图像分类
数据增强:随机水平翻转、随机擦除、mixup, cutmix, label smoothing
优化策略:AdamW, momentum=0.9, wd=0.05, lr=0.001, bs=1024, cosine schedular, EMA
训练长度:310 epochs
3.1.1 分类指标
Table 2给出了分类任务上的消融实验,可以发现multi-head 有0.9的提升,context cluster 提升比较显著(这里猜测不使用CoC应该是不适用cluster这种方式划分group?)最后如果去掉position info., 所有的像素点都是纯无序的,训练不收敛。
Table 9 对比了是否划分region(window)对分类指标的影响,发现如果global的话,指标会有提升,但显存和训练时间都会显著增大。
3.1.2 可视化分析
- CoCs 在最后一个stage上能够看到goose以及背景的草都被聚成对应的类,前面stage结果更加精细。
- CoCs在第一个stage的输出就能够得到很强的语义信息,而CNN这种一般只是边线信息;
- CoCs不单单考虑到局部信息,比如图中黄色区域并不是连在一起的,也会被划分到相同cluster中。再次验证了文章的设计哲学:只是希望相似的点被聚类而非限制感受野
3.2 3D点云分类
3.3 目标检测和实例分割
pretrain:ImageNet分类任务的ckpt
训练策略:1x scheduler
4. 总结
文章感觉不足在于没有做细致的时间分析,且文章强调了该方法适合处理irrectangle 图像,却没有给出这方面的分析实验。
一些思路:
- 聚类的思想确实能够更直观的给出每一层学到的状态,这个操作也可以用在ViT的划分窗口中。
- 聚类是否能解决BEV中的拖尾现象
- 这个思路可以用于超分图像
- 也可以尝试用于图像恢复