论文阅读-Object-Centric Learning with Slot Attention

2024-12-10发布于论文随笔 | 最后更新于2024-12-16 17:12:00

attention compositional

NeurlIPS 原文链接:Object-Centric Learning with Slot Attention

基本介绍

本文动机主要是为了提取复杂场景中的object-centric特征,并且使这种特征和输入的具体类别无关。提出了名为 Slot Attention 的模块,该模块的输入是基本感知表示(例如CNN的输出),输出的是任务相关的抽象表示,这种抽象表示称为 slots ,每个输出的slot中都包含了输入的任一object。

主要贡献:

  1. 易于集成的Slot Attention模块
  2. 将该模块应用于无监督的object discovery任务,逼近SOTA方法,但使用了更少的显存,训练速度也更快
  3. 将该模块应用于有监督的object property prediction任务,在任务中无需借助对象分割,attention会自己学到highlight个体对象的属性

Slot Attention模块

\(D_{inputs}\) 维的输入向量有 \(N\) 个, \(D_{slots}\) 维的输出向量(即slot)有 \(K\) 个,输出的每一个向量都能描述一个object或entity。用可学习的 \(\mu\in\mathbb{R}^{D_{slots}}\)\(\sigma\in\mathbb{R}^{D_{slots}}\) 定义的高斯分布初始化slots

从输入向量集 \(\mathrm{inputs}\in\mathbb{R}^{N\times D_{inputs}}\) 到输出slots集 \(\mathrm{slots}\in\mathbb{R}^{K\times D_{slots}}\) 的计算过程如下伪代码所示

slot attention module伪代码

slot attention module流程图

attention部分使用点乘,并在slots维度上进行softmax的归一化,其中的线性投影 \(k,q,v\) 会将维度投影到一个共用的维度 \(D\)

$$ \begin{aligned} M&=\frac{1}{\sqrt{D}}k\left(\mathrm{inputs}\right)\cdot q\left(\mathrm{slots}\right)^T\\ M&\in\mathbb{R}^{N\times K}\\ \mathrm{attn}_{i,j}&=\frac{\exp{\left(M_{i,j}\right)}}{\sum_l{\exp{\left(M_{i,l}\right)}}} \end{aligned} $$

使用attention对输入向量进行加权求和,确保所有输入向量都被聚合。

$$ \begin{aligned} W_{i,j}&=\frac{\mathrm{attn}_{i,j}}{\sum_{l=1}^N{\mathrm{attn}_{l,j}}}\\ \mathrm{updates}&=W^T\cdot v\left(\mathrm{inputs}\right)\\ \mathrm{updates}&\in\mathbb{R}^{K\times D} \end{aligned} $$

指出Slot Attention的两个特性,这使其适用于对集合的处理和表示:

  1. 对输入变量顺序的不变性,即改变各输入变量的顺序不会影响输出变量
  2. 对slots顺序的一致性,在初始化后调整slots的顺序相当于调整最终输出slots的顺序

下游任务测试

slot在两个下游任务中的应用

Object Discovery

在Object Discovery任务中,在一个场景下,需要捕捉每个物体的一些属性,以便区分不同的物体。在Encoder中,由于slot attention对于输入变量顺序具有不变性,可以较好的与物体进行绑定,免受具体输入顺序的干扰;在Decoder中,每个slot可以与例如图片的某个区域或部分绑定,能更好地“重构”图片。

使用了CLEVR、Multi-dSprites和Tetrominoes数据集进行测试,结果如下:

Object Discovery实验结果

右侧为调整迭代次数 \(T\) 与输出slot数量 \(K\) 的影响,仅在CLEVR6上以 \(T=3,K=7\) 训练,测试时使用不同的迭代次数,以及在CLEVR10上将 \(K\) 调整为了11

在CLEVR6上训练时,Slot Attention能以64的batch size、16GB的RAM在单张V100上进行,而IODINE在相同配置下需要4张V100;本文的模型8xV100并行训练24小时的效果约为IODINE训练7天的效果

Set Prediction

在Set Prediction任务中,预测的输出结果是一个无序的集合,认为模型最终的输出不应该对元素排序敏感。另外,一个集合中的元素数量可以变化,这也要求模型能适应包含不同数量元素的预测目标。

在本文的实验中,当分类属性相同且位置属性偏差在阈值(distance threshold)内时,视为预测正确。下图展示了实验的结果:

Set Prediction实验结果

在左侧图中,训练和测试时都令 \(T=3\) ;中间图中,训练时令 \(T=3\) ,在测试时使用不同的 \(T\) ;右侧图中,训练时使用CLEVR6并令 \(K=6\) ,测试时使用不同的 \(K\)

在此任务中,训练时没有给入任何的分割信息,但是最终得到的各个slot确有分割的效果。也就是说,在训练聚类的过程中,各个object的信息自然地分别聚合到了各个slot中。

slot自动聚合了各个不同object的信息