文章目录
创新点
计算视频的多帧的每个像素的关于query图像的每个像素的空间注意力,以此来决定像素是否属于前景物体不用限制帧的数量,还能简单的将他们加到memory中,探索丰富的参考信息
这个参考信息来自哪呢?是之前的memory吗?
attention中的Q K就是对输入的卷积,V就是输入本身
方法
先用编码器编码前面的带有mask的帧,
Memory Network
输入:
前面的带有mask的帧
输出:
记忆的信息嵌入到key(输入)和value(输出)特征向量
作用
将要被分割的帧作为query,memory随着新预测的mask动态更新,这对于解决外观更改,遮挡很有好处,每个在query中的帧都需要访问memory帧中不同时空位置的信息,所以做成了4D。
做预测的时候使用时空memory 读取操作来定位并阅读4Dmemory中的相关信息,算是一个时空注意力算法,对每个query像素计算when and where来决定像素是否属于前景物体。
4D能解决吗?跟时空有什么关系呢?时间通道、位置通道?
为什么能计算看下面STM
Space-Time Memory Networks
关注一下如何做到时间上的attention,之前non-local在空间和通道上做的attention
首先,memory和query帧都会经过编码器,来生成key和value,key的作用是“寻址”,即找对应的value,计算query和memory帧的key特征之间的相似度,就能找到决定when and where恢复的相关memory value来自哪里。
key、value功能:
- key用来学习视觉的语义,来匹配外观的多样性
- value用来储存生成mask估计的细节。
query和memory的value的功能:
- query的value储存用来解码mask的详细的外表信息
- memory的value用来编码视觉的语义,还有每个特征属于前景or背景的mask信息
然后将key和value都放入读取模块,这样,两个key特征在时空间上稠密匹配,得到相关的匹配分数,然后这个匹配分数用来寻址memory帧中的value特征图,并且和找到的value特征下相结合,得到读取模块的输出,在进入解码器,就能得到最终的mask
匹配应该就是计算的distance,根据得分判断是不是都来自同个物体,然后分数再对value起作用
所有的memory帧都会独立嵌入到key和value中,然后沿着时间差的维度堆叠到一起,T表示帧数
这样会有更多的参考信息,确实好一些
Space-time Memory Read
通过执行non-local操作来比较query和memory的key特征的相似性,然后让memory的value与soft的相似性加权求和,求完之后再和query的value结合
感觉跟non-local就是一样的,就是多了个时间维度,也就是始终的T
相似性就是一个query的key对应T个memory的key,这样的话就是多对应的attention,每个memory的帧都计算了,就是感知相似度,对,然后softmax就可以取value中对应的特征,作者的说法value中是视觉的语义编码,决定特征的前后景,如此说,就是一些能判定mask的信息,而这些又经过softmax结合被挑选,和query的value中的外表信息结合的话,就能确定哪些外表可以被分为前景
yi=[viQ,Z1∀j∑f(kiQ,kjM)vjM]
Z=∀j∑f(kiQ,kjM)
f(kiQ,kjM)=exp(kiQ×kjM)
作者也说可以看成是non-local的拓展,但是作者的使用动机不同,non-local是自注意力,而这个是query和memory,不同的特征之间的关联
我没有考虑到使用的对象不同
Decoder
用了自己之前的文章中的微调模块来做Decoder:
通过若干个这样的模块来逐步上采样,残差块的输入一直是query的encoder生成的特征图,不过要调整到相应的大小,另一端的输入是上一个微调模块的输出,最终的mask是通过最后一个卷积层加softmax生成的(就是个分类咯),过滤器都是3×3,除了最后一次是2通道,其他的都是256通道,最后生成的mask是输入图片大小的1/4。
训练
用ResNet50做backbone,使用res作为基础特征来计算key和value特征图
Two-stage Training
- 在别的图像数据集上做了同样的预训练
- 相同的数据增强
- 训练的时候取多个帧,还从中切掉了一些,用循环学习的方法能从0个切到25个
循环学习就是同样的数据,每次输入切到一部分帧,重复输入多次吧,应该是这样
推理
每N帧保存一个新的memory帧,N设为5
这样的话也会越存越多吧,最后就变满了,有没有什么方法能砍掉不重要的memory帧?
虽然参考变多了,能一定程度解决误差累积,但是速度会越来越慢吧
看图又像是共5帧
实验结果
DAVIS−2017
DAVIS−2016
DAVIS−2017 +YV表示在youtubevos上做了预训练
效果图,这些帧都是有遮挡或是消失又重现的情况
对比情况
总结
STM是个较理想的模型,比起之前的使用前一帧更好,利用了更多的信息,最重要的还是第一帧的先验,但是通过memory将这个优势放大了,就能更精准
KirutoCode 发布了58 篇原创文章 · 获赞 2 · 访问量 7609 私信 关注