论文阅读-Object-Centric Learning with Slot Attention
2024-12-10发布于论文随笔 | 最后更新于2024-12-16 17:12:00
NeurlIPS 原文链接:Object-Centric Learning with Slot Attention
基本介绍
本文动机主要是为了提取复杂场景中的object-centric特征,并且使这种特征和输入的具体类别无关。提出了名为 Slot Attention 的模块,该模块的输入是基本感知表示(例如CNN的输出),输出的是任务相关的抽象表示,这种抽象表示称为 slots ,每个输出的slot中都包含了输入的任一object。
主要贡献:
- 易于集成的Slot Attention模块
- 将该模块应用于无监督的object discovery任务,逼近SOTA方法,但使用了更少的显存,训练速度也更快
- 将该模块应用于有监督的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}}\) 的计算过程如下伪代码所示
attention部分使用点乘,并在slots维度上进行softmax的归一化,其中的线性投影 \(k,q,v\) 会将维度投影到一个共用的维度 \(D\) 。
使用attention对输入向量进行加权求和,确保所有输入向量都被聚合。
指出Slot Attention的两个特性,这使其适用于对集合的处理和表示:
- 对输入变量顺序的不变性,即改变各输入变量的顺序不会影响输出变量
- 对slots顺序的一致性,在初始化后调整slots的顺序相当于调整最终输出slots的顺序
下游任务测试
Object Discovery
在Object Discovery任务中,在一个场景下,需要捕捉每个物体的一些属性,以便区分不同的物体。在Encoder中,由于slot attention对于输入变量顺序具有不变性,可以较好的与物体进行绑定,免受具体输入顺序的干扰;在Decoder中,每个slot可以与例如图片的某个区域或部分绑定,能更好地“重构”图片。
使用了CLEVR、Multi-dSprites和Tetrominoes数据集进行测试,结果如下:
右侧为调整迭代次数 \(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)内时,视为预测正确。下图展示了实验的结果:
在左侧图中,训练和测试时都令 \(T=3\) ;中间图中,训练时令 \(T=3\) ,在测试时使用不同的 \(T\) ;右侧图中,训练时使用CLEVR6并令 \(K=6\) ,测试时使用不同的 \(K\) 。
在此任务中,训练时没有给入任何的分割信息,但是最终得到的各个slot确有分割的效果。也就是说,在训练聚类的过程中,各个object的信息自然地分别聚合到了各个slot中。