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损失函数
设 I 1 , I 2 : P → R 3 I_{1}, I_{2}: P \rightarrow \mathbb{R}^{3} I1,I2:P→R3是两个时间上连续的帧。我们的目标是估算从 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。
-
亮度一致性损失 E D E_{D} ED
该项的作用是使两张图像尽可能对齐,差异变小。
其中, 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)。普查变换可以补偿加性和乘性照明变化以及伽马变化,从而为真实图像提供更可靠的恒定性假设。 -
光流平滑性损失 E S E_{S} ES
该项的作用是在流场上使用二阶平滑约束,以鼓励相邻流的共线性,防止相邻像素的光流值相差太大。
其中 N ( x ) N(\mathrm{x}) N(x) 由水平、垂直和 x \mathbf{x} x 周围的两个对角线邻域组成(总共4个)。对于向量参数,我们假设 ρ ( ⋅ ) \rho(\cdot) ρ(⋅) 计算每个分量原始广义Charbonnier惩罚的平均值。请注意,对于被遮挡的像素位置,除了遮挡惩罚之外,该项是唯一有效的。 -
前向-后向一致性损失 E C E_{C} EC
该项的作用是使前向光流和后向光流保持可逆性。
对于非遮挡像素,我们添加了前后一致性惩罚:
最终损失是单个损失项的加权和:
在计算损失时,因为在网络中采用了金字塔结构,所以我们对每层都计算损失并加权
在细化网络的不同阶段预测的流场的损失设置(对于最终的最高分辨率估计,i=4)。各个估计的尺度以输入图像分辨率的一部分给出,并且损失权重随着估计的分辨率而减小。随着分辨率的降低,我们对普查变换使用较小的块大小。