光流方法总结二

基于深度学习的无监督光流算法

UnFlow: Unsupervised Learning of Optical Flow with a Bidirectional Census Loss

论文:https://arxiv.org/pdf/1711.07837.pdf
无监督的主要思路:向前遍历光流向量再向后遍历应该回到同一个位置,根据亮度不变假设设计loss。
网络结构:输入为2帧,分别计算前向光流和方向光流。
在这里插入图片描述
存在遮挡问题:即在下一帧里观测不到对应pixel(比如人往前走,被其他物体挡住了)

判断有无遮挡的基本解决思路:前向后再反向,回不到原位置,则判断为被遮挡。具体如下式:
∣ w f ( x ) + w b ( x + w f ( x ) ) ∣ 2 < α 1 ( ∣ w f ( x ) ∣ 2 + ∣ w b ( x + w f ( x ) ) ∣ 2 ) + α 2 (1) |w^f(x) + w^b(x+w^f(x))|^2 < \alpha_1(|w^f(x)|^2+|w^b(x+w^f(x))|^2)+\alpha_2 \tag1 wf(x)+wb(x+wf(x))2<α1(wf(x)2+wb(x+wf(x))2)+α2(1)
其中 x x x表示坐标, w f ( x ) w^f(x) wf(x)表示根据前向光流进行warp操作。对应的 w b ( x ) w^b(x) wb(x)为根据反向光流进行操作。 α 1 , α 2 \alpha_1,\alpha_2 α1,α2为调节参数(调节误差允许范围),文中 α 1 = 0.01 , α 2 = 0.5 \alpha_1=0.01,\alpha_2=0.5 α1=0.01,α2=0.5

即在无遮挡情况下,左边那项和应该趋近于0。若不满足条件则认为存在遮挡,这部分则不计算loss。(因为loss根据亮度不变假设,若pixel被遮挡了,通过计算亮度恒定来设计loss就不合理了)。
根据式(1),得到有无遮挡的mask O x O_x Ox,当对应pixel被遮挡时,对应的 O = 1 O=1 O=1,否则 O = 0 O=0 O=0
在这里插入图片描述

loss:
总的loss:
在这里插入图片描述

  1. 亮度一致性loss E D E_D ED
    f D ( I 1 , I 2 ) f_D(I_1,I2) fD(I1,I2)为measures the photometric difference,如 f D ( I 1 , I 2 ) = I 1 ( x ) − I 2 ( x ) f_D(I_1,I2)=I_1(x)-I_2(x) fD(I1,I2)=I1(x)I2(x)
    ρ ( x ) = ∣ x 2 + ϵ ∣ γ \rho(x)=|x^2 +\epsilon|^\gamma ρ(x)=x2+ϵγ ( 1 − o x ) (1-o_x) (1ox)即只计算无遮挡的部分。后面一串则是根据亮度一致性计算loss, o x f λ p o_x^f\lambda_p oxfλp这一项是为了防止 o x o_x ox机智的全为1。
    在这里插入图片描述
  2. Smoothness loss E S E_S ES
    光流平滑loss,即防止相邻像素的光流值相差太大 s , r s,r s,r x x x的相邻坐标,包括4个方向(左右,上下,加2个对角方向)
    在这里插入图片描述
  3. forward-backward一致性损失 E C E_C EC
    和亮度一致性损失类似,只是直接作用于光流。而亮度一致性损失是计算灰度值的差值。
    在这里插入图片描述
    小结:总感觉估计遮挡部分会很难收敛,但实际效果还可以。后续的无监督论文也挺多遵照这个思路去估算遮挡部分。

DDFlow: Learning Optical Flow with Unlabeled Data Distillation

论文:https://arxiv.org/pdf/1902.09145.pdf
代码:https://github.com/ppliuboy/DDFlow
网络结构:
在这里插入图片描述
Main idea:其中Teacher Model和Student Model是2个结构相同的网络。Teacher Model为正常的2张图输入,训练⽅式也是Photometric Loss(亮度一致)。Student Model的输⼊为Teacher Model输⼊图的crop。即边缘部分像素在teacher中有输⼊,而在student中无。如上图中(x1,y1)。其在student model中的 I 2 I_2 I2输⼊⾥没有与之对应的像素。这部分可视为被遮挡部分。而在teacher model中同时存在。即可作为 guider。 这样子应该可以学习到一些被遮挡部分的光流。

SelFLow:Self-Supervised Learning of Optical Flow

https://cloud.tencent.com/developer/article/1458068
论⽂:http://openaccess.thecvf.com/content_CVPR_2019/papers/Liu_SelFlow_Self-Supervised_ Learning_of_Optical_Flow_CVPR_2019_paper.pdf
代码:https://github.com/ppliuboy/SelFlow
在这里插入图片描述
网络结构如上, − w t − > t − 1 -w_{t->t-1} wt>t1即对光流取反,因为光流为矢量,所以 − w t − > t − 1 -w_{t->t-1} wt>t1的光流能很好的辅助 w t − > t + 1 w_{t->t+1} wt>t+1去生成光流。

感觉和DDF挺像的,selFlow通过在图像中添加随机噪声(盖住某些区域),来达到遮挡的效果。也可以实现对有遮挡部分的光流预测。也是类似于一个能看到全景的网络(NOC-Model)去guide一个输入有部分被遮挡的网络(OCC-Model)。
NOC-Model类似于DDF中的teacher模型,利用亮度一致性loss训练出来的模型。
OCC-Model类似于DDF中的student模型,只是DDF中student的输入为crop出来的较小的图,而SelFlow是通过在图像中加入一些遮挡去盖住一部分区域。

小结:SelFlow效果优于DDF的原因应该就是

  1. SelFlow的模型复杂一些,基于PWC-Net。
  2. DDF制造的遮挡区域是在图像边缘部分,在训练时可能会有趋向。而SelFlow是在图中随机添加的(好像用了什么方法生成的遮挡区域,忘记了),就不会趋向于边缘。但是这种覆盖人为痕迹也挺明显的。

Learning Correspondence from the Cycle-consistency of Time

论文:https://arxiv.org/pdf/1903.07593.pdf
代码:https://github.com/xiaolonw/TimeCycle
知乎:https://zhuanlan.zhihu.com/p/61607755
提出一种学习视觉一致性的无监督方法。可运用于与视频相关的一致性跟踪。如视频实例分割,关键点,跟踪,光流等。

Main idea:与跟踪和光流中的无监督学习方法类似,通过Forward-Backward and Cycle Consistency。以跟踪为例,即反向跟踪后再前向跟踪后应该回到原来的位置。同样的思路可以应用于光流,视频实例分割等(学习pixel上的一致性)。(就是将光流无监督方法用到多个领域)

在这里插入图片描述
为了防止在cycle中,中间某些帧不合适(模糊,遮挡,或者object离开视野等)。设计了multiple cycles。即设计了多条路线。如左图中,除了到t-4帧才前向的 蓝色+灰色 的cycle之外,还有到t-2帧就开始前向的棕色cycle。右图则是跳帧cycle
在这里插入图片描述

小结:

光流数据很难获得,在有监督的光流方式中,基本都是用合成数据来进行训练,但合成数据和真实世界的分布还是差距比较大的。
无监督的光流训练方式基本就是UnFlow中的亮度一致性,也就是一个cycle,前向和反向之间的关系。但是如何处理遮挡部分也是一个问题。DDF和SelFlow则是通过不同的方式来解决如何去预测被遮挡区域(或离开画面区域)的光流。同时这种Cycle-consistency可以应用于视频中的其他任务的无监督训练。

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值