光流的 TVL1 算法

计算科学 优化
2021-11-30 13:23:47

这有点远,但我希望有人可能有一些见解(不确定比这里更好的论坛,但愿意接受建议)。我已经实现了论文An Improvement Algorithm for TV-L1 Optical Flow中的光流算法。我试图坚持与文章解释的完全相同的参数(他们有非常详细的实现说明),但我无法重现他们的结果。

根据我的分析(稍后我会展示图像),该算法似乎适用于小图像,因此在从粗到细的金字塔中,您可以看到针对每个图像的小规模版本精确计算了流. 然后,当图像被放大超过某个点时,优化似乎会收敛到某个较差的局部最小值。为了证实这种怀疑,我在金字塔级别之间使用 0.9 的比例因子(而不是文章使用的 0.5)重新运行了算法,结果得到了很大改善 - 似乎使用足够小的上/下比例因子,我们避免了糟糕的局部最小值。以下是流量(Middlebury 后院场景,比例因子依次为 0.5、0.7、0.9):

0.5 0.7 0.9

这些是每个缩放因子的逐次迭代序列(在这里我们看到即使是 0.5 在小图像上也能很好地工作):

0.5:http: //youtu.be/EHTO7lJeMrA
0.7:http: //youtu.be/-PlTU3VioWg
0.9:http: //youtu.be/lK5EP865u0E

我已经摆弄了算法的所有其他参数,它们对这种现象没有任何重大影响。如果有人感兴趣,我可以上传我的 Matlab 代码。所以我的问题是:

有人对这种现象有其他解释吗?我无法重现他们的结果这一事实让我非常困扰。

2个回答

事实证明,我没有在上采样时将对偶变量乘以 4,这使其与原始变量不同步(因为上采样添加了零行/列和模糊,因此为了保持值完整性,我们需要乘以新的比率零整数到旧条目)。如此琐碎,却又如此令人沮丧。

在我看来,您可能没有像他们那样重视正则化(TV 和/或 L1)。这将给出您所看到的那种结果。一个好的经验法则是,每个级别的最大光流应该是 1 左右(以当前比例为单位)。

从阅读他们的文章来看,他们似乎正在将图像重新缩放到 [-1,1] 区间。这相当于使用了另一个正则化权重,所以也许你错过了这一步?我希望它对你有帮助。