Iterative Updates

这段话给iterative updates以定性,输入一个初始化的流场,逐步地更新这个流场。
具体来讲:输入->流场、相关性金字塔和隐藏状态
输出->更新的 Δ f \Delta f Δf

具体步骤

1.初始化

顾名思义,将第一次输入的流场初始化为 f 0 = 0 f_{0} = 0 f0​=0

2.inputs

def forward(self, net, inp,corr, flow, upsample=True):motion_features = self.encoder(flow, corr)  #首先通过flow 和 相关 估计一个motion的特征torch.Size([8, 128, 40, 40])inp = torch.cat([inp, motion_features], dim=1)#net也属于上下文信息 是gru的隐藏状态net = self.gru(net, inp)delta_flow = self.flow_head(net)  #输出二通道光流# scale mask to balence gradients# mask = .25 * self.mask(net)  #用来做特殊的插值return net, delta_flow

这一部分我认为看代码理解会更加清晰,最开始输入的很明显只有 f 0 f_{0} f0​和 c o r r e l a t i o n p y r a m i d correlation pyramid correlationpyramid,输出一个隐藏状态 n e t net net和更新的 Δ f \Delta f Δf

GRU

那么具体的GRU在做什么事情呢?

首先, i n p inp inp实际上就是上下文信息,我们知道上下文信息储存了特征信息,将特征信息 i n p inp inp和运动信息 m o t i o n f e a t u r e s motion features motionfeatures concat到一起就得到了一个新的信息。(我认为这一部分其实非常玄学,很难去解释,如果有小伙伴有更好的理解欢迎交流)

然后,这样一个新的信息 i n p inp inp和原始的上下文特征 n e t net net输入到GRU中输出一个新的 n e t net net,如果要定性理解GRU,我认为也没什么东西,就是一个比较特殊的卷积层(有"记忆"的)。

最后, n e t net net输入到flow的预测头中,输出 Δ f \Delta f Δf。在这一部分,我相信小伙伴都非常好奇,输出是2通道的一个图,为什么它是 Δ f \Delta f Δf而不是 f f f。我的理解是,这跟最后loss的反馈直接相关!如果我定义最终输出的是一个 f f f(这是我可以定义的,因为我要与 f f f的ground truth无限接近),那么我过程中的 f f f是通过 f k f_{k} fk​ + 一个预测头的输出而来的,这直接限制了预测头的输出不可以是 f f f。(这一部分如果有小伙伴有更好的理解欢迎交流)

4.光流预测

f k + 1 = f k + Δ f f_{k+1} = f{k} + \Delta f fk+1​=fk+Δf

三分钟理解RAFT光流网络中的Iterative Updates相关推荐

  1. 两分钟理解RAFT光流中的相关层

    RAFT: Recurrent All-Pairs Field Transforms for Optical Flow是ECCV 2020的Best paper,在看文章时对这个4D相关层感到非常困惑 ...

  2. 三分钟理解零序电流保护向量图

    三分钟理解零序电流保护向量图 --ujslili 1.正向故障 疑问? 2.反方向故障: 3.接线方式 4.零序电流保护的评价 优点: 1)灵敏度高--几乎不受负荷电流影响--影响零序电流的就只有变压 ...

  3. AUTOSAR从入门到精通100讲(三十八)-通信网络中的⽐特和帧同步技术

    使⽤位和帧同步技术是为了确保从通信的⼀个发送器传输的信号可以被接收器正确解码.为了实现这⼀⽬标,必须将某些定时信息传递给接收器,例如通信数据的开始和结束位置.本⽂介绍了各种位和帧同步技术以及相应的底层 ...

  4. 三分钟理解Python函数式编程与闭包

    函数式编程 函数式编程这个概念我们可能或多或少都听说过,刚听说的时候不明觉厉,觉得这是一个非常黑科技的概念.但是实际上它的含义很朴实,但是延伸出来许多丰富的用法. 在早期编程语言还不是很多的时候,我们 ...

  5. 三分钟理解三种基本进程状态

    进程的三种基本状态 进程在生命周期内可能有多种状态,不过一般而言,每一个进程都至少有三种基本状态 就绪(Ready)状态 进程已处于准备运行的状态,获得除CPU以外所有必要的资源.如果获得CPU,则立 ...

  6. 五分钟理解yield在python中的简单用法,让你不再迷惑

    很多同学无论是在学习python还是使用python的过程中,都会遇到yield关键字,这个让人头大的问题,今天,就给大家分享一下我自学yield的心路历程 基本概念: (1)在 Python 中,使 ...

  7. 三分钟让你掌握JavaScript中值传递和引用传递的区别

    值传递:传递的是实际参数的一个副本.基本数据类型Undefined,Null,Boolean,Number.String都是值传递. 引用传递:传递的是实际参数的地址.引用数据类型Object,Arr ...

  8. 三分钟理解辗转相除法

    今天下午偶然看到辗转相除法, 以前不能够理解原理, 现在能够想明白了. 比如求gcd(1211, 341) #include <iostream> #include <string& ...

  9. 用三分钟理解c语言sizeof

    一.概念 sizeof是单目操作符,同++等操作符一样.作用是以字节形式输出操作对象所在储存大小. 二.用法 a.操作数据类型 如sizeof(int),输出int类型在内存中所占的字节长度,具体取决 ...

最新文章

  1. 【Live555】live555源码详解(二):BasicHashTable、DelayQueue、HandlerSet
  2. 2020大部分知名公司Java面试题答案(一)
  3. 基于全局场景背景图和关系优化的全景3D场景理解(ICCV 2021)
  4. javascript 重写alert、confirm、prompt 等提示宽框
  5. 文巾解题 1190. 反转每对括号间的子串
  6. Linux(CentOs6.4)安装Git
  7. 房价在手,天下我有 --反手就撸一个爬虫(终)
  8. 群签名和环签名的区别_环签名方案的研究
  9. python初学者怎么找工作_学python找工作好找吗
  10. 类似抖音的短视频app开发难度大吗?短视频源码让你事半功倍
  11. 离散数学(五):命题逻辑的推理理论
  12. java教学视频平台系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  13. ×××全功能邮件系统(3)
  14. gps84转换gcj02公式_WGS84-GCJ-02坐标转化
  15. 多重重要性采样(MIS)与光线追踪技术
  16. 2012年第19周限时免费应用点评
  17. 墨迹天气3.0引导动画
  18. php生成红包,PHP 生成微信红包代码简单,php生成红包代码
  19. linux终端安装playonlinux,Ubuntu安装PlayOnLinux的步骤
  20. flutter 项目实践2

热门文章

  1. 计算机二进制八进制等怎么表示,八进制用什么字母表示(进制转换计算器)
  2. 音频服务器运行失败怎么办,音频服务错误1068怎么解决 音频服务未运行win10解决方法...
  3. 整体式转向梯形优化设计MATLAB程序
  4. 精准营销:剖析广告点击率预估系统
  5. mac 菜单栏图标删除_如何重新排列和删除Mac的菜单栏图标
  6. 柯西不等式证明(cauchy不等式)
  7. 全球及中国高频干式嵌体行业竞争态势及未来发展规划报告2022-2028年
  8. SourceInsight快速看代码的小技巧
  9. 如何使用Tensorboard一张图显示多条曲线
  10. 必读!!只需10分钟,NAS变身赚钱神器!