RAFT: Recurrent All Pairs Field Transforms for Optical Flow
ECCV
Zachary Teed and Jia Deng
论文:/pdf/.12039.pdf
代码:/princeton-vl/RAFT
论文框架:
RAFT 网络包含三个部分:
(1)Feature Encoder:提取对应每个像素的特征
(2)Correlation Layer:对所有特征求内积矩阵,大小为 W×H×W×H
(3)Update Operator:使用 GRU 循环神经网络更新光流,通过迭代获得更好结果
光流更新GRU:
其中,GRU之中全连接层由卷积代替
输入当前光流 fk,经过两层卷积与经过一层卷积的 Correlation 叠加,最后再与 Context 直接叠加组成 GRU 输入的特征。
特征提取对两帧进行处理,共享权重,得到两个256通道的特征图进行点乘计算,得到相关性
H * W * D * D * H * W = H * W * H * W
CNN的架构由6个残差层组成,就像ResNet的层一样,每隔一层分辨率就降低一半,同时通道数量也在增加。
视觉相似度计算为所有特征图对的内积。因此,我们将得到一个称为相关体积的四维张量,它提供了关于大小像素位移的关键信息。
Upsampling
由于输出的光流是 1/8 尺度下的,因此为了得到原始分辨率尺度,Upsampling 部分在粗分辨率上通过周围共计 3x3 的网格预测进行差值,在这一部分使用了两个卷积操作并经过一个 softmax 得到一个 H/8×W/8×(8×8×9)H/8×W/8×(8×8×9) 尺度的 mask。最终原始分辨率的光流就通过这一 mask 进行加权获得。网络输出就是得到一个 H \times W \times 2H×W×2 的结果,其中2代表x、y坐标偏移。该层通过一个 PyTorch 中的 unfold 操作即可实现。
Correlation Lookup
给定一个光流场(flow field)
损失函数为L1
Flow Prediction
GRU 的输出经过两个卷积操作就变成了最终的光流,输出光流是 1/8 尺度的,在实际预测中会经过下述 Upsampling 操作转换成原始大小。
如果觉得《【PaperRead】RAFT-论文笔记》对你有帮助,请点赞、收藏,并留下你的观点哦!