Press "Enter" to skip to content

ECCV 2022 | 港中文MMLab:基于Transformer的光流

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

©PaperWeekly 原创 · 作者 | Zhaoyang Huang

 

单位 | 香港中文大学MMLab

 

研究方向 | 视觉关联性学习

 

Transformer 今年在图像领域展现出了很好地性能,相比于 CNN,它们的优势之一是基于注意力机制的长程建模能力。本文解读港中文 MMLab 在 ECCV 2022 上发表的论文《FlowFormer: A Transformer Architecture for Optical Flow》。这项工作提出了 FlowFormer 算法将 Transformer 结构结合进光流估计的框架中,显着提升了光流估计的性能。

 

只在 FlyingChairs+FlyingThings 上训练后,FlowFormer 在 Sintel Training 的 clean 与 final 两个子集中分别取得了 0.64 与 1.50 AEPE。与之前发表的最好结果(1.29 和 2.74)相比,误差下降了 50.4% 和 45.3%,体现了其卓越的泛化性。在公开的 Sintel benchmark(test)上,FlowFormer 在clean 和 final 两个子集中取得了 1.159 和 2.088 AEPE,降低了此前发表的最优误差(1.388 和 2.47)达 16.5% 和 15.5%。

 

论文标题:

 

FlowFormer: A Transformer Architecture for Optical Flow

 

收录会议:

 

ECCV 2022

 

论文主页:

 

https:// drinkingcoder.github.io /publication/flowformer/

 

1. 论文介绍

 

光流的目标是估计源图像中每个像素在目标图像的对应位置,在许多下游任务,如动作识别、视频修复、视频超分等任务中提供重要输入。本文首先简要介绍 RAFT。RAFT 先使用一个孪生 CNN 从一对 H x W 图像中抽取视觉特征,为所有像素对计算特征相似性形成一个 H x W x H x W 的 4D cost volume,然后使用一个卷积循环神经网络(Conv-GRU)从这个 cost volume 中获取特征,不断优化光流估计。

 

FlowFormer 基于 RAFT 的思想,探索了使用 Transformer 对其进行全方位改进,包含了以下重要模块:1)Alternate-Group Transformer (AGT)层,将 4D cost volume 投影至隐空间编码为cost memory;2) Recurrent Transformer Decoder,使用 dynamic positional cost query 循环的从 cost memory 中提取信息来优化光流估计;3)首次验证了使用 ImageNet 预训练的 Transformer 来编码图像特征可以提升光流估计性能。

 

光流估计中我们一般假设两幅图像中相应位置的外表不变,因此传统算法中光流被建模为优化问题,即在一些正则项约束下寻找两张图像中的对应位置使得对应位置的视觉相似性最大化。这种思想在深度学习时代也是针对光流估计的网络架构基本原则之一,表现为计算两张图像的视觉相似性(costs),学习编码 costs 并从中解码出光流向量。这在光流学习的标杆架构 PWC-Net 和 RAFT 中都得到了充分体现。

 

相比于 CNN,Transformer 破除了局部偏差(locality bias)并能进行长程建模。PerceiverIO 开创性的使用纯 Transformer 来学习光流估计,它直接对图像像素 tokenization 并用一个通用的输入-输出映射来学习光流估计。由于它没有用任何针对光流的信息,如视觉相似性,因此其需要大量的参数参数和训练数据来学习(约 80 倍的 RAFT 训练数据量)。因此我们提出一个问题:我们能否同时获益于 Transformer 的长程建模能力并从视觉相似性信息中估计光流?针对这个问题,该论文提出了 FlowFormer。

 

2. 算法细节

 

AGT Cost Encoder:一种最简单的使用 Transformer 来编码 4D cost volume 的方法是直接将其转化为 cost token 后使用标准的 Transformer,如将每个 3 x 3 x 3 x 3 的 cost 通过 mlp 提取为 token,但是由于该策略在 4D cost volume 上会产生上千个 2D token,因此其占用的显存和算力都是不可接受的。

 

该论文观察到,对每个像素而言,光流估计的信息来源是当前像素与目标图像中所有像素的相似性,即 H x W 的 cost map。因此将每个像素的 cost map 投到同一个隐空间中形成 K 个 token,即从 H x W x H x W 的 4D cost volume 转化成H x W x K 个 token,其中每个 token 维度为 D。在此基础上我们使用轮换分组(alternate-group)Transformer 对这些 token 进行编码。

 

具体来说,FlowFormer 进行两种分组:第一种有 H x W 组,每组 K 个 token,这样每组对应一个原图中的像素而组内 token 编码了该像素对应的 cost map 信息;第二种有 K 组,每组 H x W 个 token,这样每组对应一种隐空间特征而组内 token 编码了所有原图像素的该特征。

 

AGT 轮流使用这两种分组,对组内的 token 使用 Transformer 编码,这样信息可以在所有 token 之间进行传播但算力相比同时对所有 token 使用 Transformer 又大幅下降。我们使用了三层 AGT,最终得到 H x W x K 个 token,并将其作为编码后的 cost memory。

 

Recurrent Transformer Decoder with Dynamic Positional Cost Query:FlowFormer 迭代的使用当前估计的光流从 H x W x K cost memory 中来提取信息优化光流估计:

 

1. 根据当前的光流估计生成 Query(Dynamic Positional Cost Query),具体来说,给定一个源图像素的位置 \mathbf{x} 与当前估计的光流 f(\mathbf{x}) ,我们可以计算得到该像素对应到目标图的 \mathbf{p}=\mathbf{x}+f(\mathbf{x}) 位置以及该位置的 99 的局部 cost;

 

2. 根据 cost memory 生成 Key ( K_{\mathbf{x}} ) 和 Value ( V_{\mathbf{x}} );

 

3. 使用注意力机制提取信息 c_{\mathbf{x}} 。

 

然后从得到的信息估计 f(x) 来优化光流估计: f(\mathbf{x})=f(\mathbf{x})+\Delta f(\mathbf{x}) 。该论文参考 RAFT 的机制使用循环卷积神经网络不断迭代优化光流估计。

 

4. 使用预训练的 Transformer 来提取图像特征:在目前的 Transformer 架构中,Twins-SVT 对图像尺寸的变化敏感性较低,相比于经典的 ViT 需要的算力较小,因此 FlowFormer 使用 Twins-SVT Large 的前两个阶段来提取图像特征,并使用 ImageNet 预训练的参数来初始化网络。

 

3. 实验效果

 

该论文在 Sintel 和 KITTI 两个数据集上评测 FlowFormer。Sintel 有两个子集:clean 子集与 Final 子集的内容相同,但是 Final 子集中的图像存在运动模糊往往更为困难。

 

泛化性:在 FlyingChairs 于 FlyingThings(C+T)上训练,在 Sintel 与 KITTI 的训练集上计算光流误差,这种方法能评测光流模型的泛化性。如上表所示,FlowFormer 在 Sintel 训练集 clean 与 final 两个子集上的误差分别是 0.64 和 1.50,在 KITTI-15 训练集的 F1-epe 与 F1-all 分别达到了 4.09 和 14.72。与 GMA 相比,FlowFormer 在 Sintel 训练集两个子集上分别减少了 50.4% 与 45.3% 的误差,在 KITTI-15 F1-all 上减少了 13.9%,充分展示了 FlowFormer 优异的繁华性能。

 

Sintel Benchmark 上的精度分析:在 FlyingChairs、FlyingThings、Sintel 训练集这三个数据集上训练,在 Sintel 测试集上评测。FlowFormer 将误差降到了 1.16 和 2.09,下降比率达到了 16.5% 和 15.5%。

 

KITTI-15 Benchmark 上的精度分析:在 FlyingChairs、FlyingThings、Sintel 训练集、KITTI-15 训练集、HD1K 这五个数据集上训练,在 KITTI-15 测试集上评测。FlowFormer 排名第二,比S-Flow稍差(-0.85%),但是在 Sintel Benchmark 上 S-Flow 远差于 FlowFormer(在 clean 好 final 两个子集上误差大了 31.6% 和 22.5%)。S-Flow 根据修正后的 cost map 来计算坐标期望值作为光流估计。在 KITTI 中图像内容大多是刚体,因此对应的光流更简单,这更适合这种基于 cost map 的坐标期望,但是这不适用于非刚体场景,如Sintel数据集。

 

5. 可视化结果

 

对比 Sintel 上 FlowFormer 与 GMA 的光流估计可视化结果(下图所示),FlowFormer 大量减少了物体边界上光流估计的溢出效应(红色箭头所指)并产生了更清晰的细节(蓝色箭头所指)。

 

视频序列的可视化对比与结果。

 

YouTube链接:

 

https://www. youtube.com/watch? v=wPnkbrvqUOk&list=PL6liSIqFR4BU-QdZjL7eW1vPbPnEchXmj&ab_channel=ZhaoyangHuang

 

bilibili链接:

 

https://www. bilibili.com/video/BV1q B4y1i7qu?spm_id_from=333.337.search-card.all.click

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。