UnFlow损失函数

UnFlow损失函数

  • 前言
    • UnFlow损失函数
    • 参考

前言

UnFlow: Unsupervised Learning of Optical Flow with a Bidirectional Census Loss
论文:https://arxiv.org/pdf/1711.07837.pdf
源码:https://github.com/simonmeister/UnFlow
无监督的主要思路:向前遍历光流向量再向后遍历应该回到同一个位置,根据亮度不变假设设计loss。
网络结构:输入为2帧,分别计算前向光流和方向光流。
UnFlow损失函数_第1张图片

UnFlow损失函数

I 1 , I 2 : P → R 3 I_{1}, I_{2}: P \rightarrow \mathbb{R}^{3} I1,I2:PR3是两个时间上连续的帧。我们的目标是估算从 I 1 I_{1} I1 I 2 I_{2} I2 的光流 w f = ( u f , v f ) T \mathbf{w}^{f}=\left(u^{f}, v^{f}\right)^{T} wf=(uf,vf)T。由于我们的遮挡检测还需要反向光流 w b = ( u b , v b ) T \mathbf{w}^{b}=\left(u^{b}, v^{b}\right)^{T} wb=(ub,vb)T,因此我们通过使所有损失项对称(即,计算两个流方向的损失项)来联合估计双向流。

我们的无监督损失是基于这样的观察:第一帧中的像素应与第二帧中的像素相似,该像素由flow映射到第二帧中。
存在遮挡问题,因此定义被遮挡的区域,在损失函数中进行遮挡检测)然而,由于第二帧中的对应像素不可见,因此对于被遮挡的像素,该观察不成立。因此,我们将遮挡像素从亮度一致性损失中屏蔽出来,以避免学习填充遮挡像素的不正确变形。我们的遮挡检测基于前后一致性假设。也就是说,对于非遮挡像素,前向流应该与第二帧中对应像素处的后向流相反。当这两个流之间的不匹配太大时,我们将像素标记为被遮挡。因此,对于正向的遮挡,我们将 o x f o_{\mathbf{x}}^{f} oxf 的遮挡标志定义为1,只要约束
在这里插入图片描述
违反,否则为0。对于反向,我们通过交换 w f \mathbf{w}^{f} wf w b \mathbf{w}^{b} wb,用相同的方式定义 o x b o_{\mathbf{x}}^{b} oxb。在我们所有的实验中,我们设置 α 1 = 0.01 \alpha_{1}=0.01 α1=0.01 α 2 = 0.5 \alpha_{2}=0.5 α2=0.5

在定义了遮挡区域之后,损失函数由三部分组成:亮度一致性损失 E D E_{D} ED,光流平滑性损失 E S E_{S} ES,前向-后向一致性损失 E C E_{C} EC

  1. 亮度一致性损失 E D E_{D} ED
    该项的作用是使两张图像尽可能对齐,差异变小。
    UnFlow损失函数_第2张图片
    ​其中, f D ( I 1 ( x ) , I 2 ( x ′ ) ) f_{D}\left(I_{1}(\mathbf{x}), I_{2}\left(\mathbf{x}^{\prime}\right)\right) fD(I1(x),I2(x)) 测量两个假定对应像素 x \mathbf{x} x x ′ \mathbf{x}^{\prime} x 之间的光度差, ρ ( x ) = ( x 2 + ϵ 2 ) γ \rho(x)=\left(x^{2}+\epsilon^{2}\right)^{\gamma} ρ(x)=(x2+ϵ2)γ 是稳健的广义Charbonnier惩罚函数, γ = 0.45 \gamma=0.45 γ=0.45。我们为所有被遮挡的像素添加一个常数惩罚 λ p \lambda_{p} λp,以避免所有像素都被遮挡的平凡解,并为所有未被遮挡的像素惩罚光度差。
    由于亮度恒定性对现实情况中常见的照明变化不是不变性的,因此我们改用三元普查变换( the ternary census transform)。普查变换可以补偿加性和乘性照明变化以及伽马变化,从而为真实图像提供更可靠的恒定性假设。

  2. 光流平滑性损失 E S E_{S} ES
    该项的作用是在流场上使用二阶平滑约束,以鼓励相邻流的共线性,防止相邻像素的光流值相差太大。
    UnFlow损失函数_第3张图片
    其中 N ( x ) N(\mathrm{x}) N(x) 由水平、垂直和 x \mathbf{x} x 周围的两个对角线邻域组成(总共4个)。对于向量参数,我们假设 ρ ( ⋅ ) \rho(\cdot) ρ() 计算每个分量原始广义Charbonnier惩罚的平均值。请注意,对于被遮挡的像素位置,除了遮挡惩罚之外,该项是唯一有效的。

  3. 前向-后向一致性损失 E C E_{C} EC
    该项的作用是使前向光流和后向光流保持可逆性。
    对于非遮挡像素,我们添加了前后一致性惩罚:
    UnFlow损失函数_第4张图片

最终损失是单个损失项的加权和:
在这里插入图片描述

在计算损失时,因为在网络中采用了金字塔结构,所以我们对每层都计算损失并加权
在这里插入图片描述

UnFlow损失函数_第5张图片
在细化网络的不同阶段预测的流场的损失设置(对于最终的最高分辨率估计,i=4)。各个估计的尺度以输入图像分辨率的一部分给出,并且损失权重随着估计的分辨率而减小。随着分辨率的降低,我们对普查变换使用较小的块大小。

参考

1.光流方法总结二
2.关键点匹配

你可能感兴趣的:(光流估计,无监督光流估计)