Deep Learning Based Registration文章阅读(十二)
这次的文章是CVPR2021关于光流的一篇文章《AutoFlow: Learning a Better Training Set for Optical Flow》。光流的学习可以分为有监督和无监督两类,对于有监督的学习,通常需要flow field的ground truth。真实世界中通常很难获得这样的ground truth,所以一个目前常用的训练方法是用合成数据。现在最常用的合成数据是Flying Chairs和FlyingThing3D,目前的策略是依次用Flying Chairs和FlyThings3D训练,然后在target dataset上fine tune可以达到最好的效果,也是目前有监督光流学习的标准做法。
Motivation
合成数据泛化到真实数据往往存在gap,所以这篇文章通过引入一种learnable的aug的方式,针对不同的target dataset来对合成数据进行可学习参数的aug或者叫渲染,来减轻合成数据和真实target dataset之间的gap。
Datasets
训练:
FlyingChairs
FlyingThings3D
HD1K
Auto-Flow
Sintel
KITTI
测试:
Sintel
KITTI
加渲染的图像数据集:
Davis
OpenImages
Sintel
Aug
这篇文章的关键是怎么给合成数据加渲染.。总体pipline如下图所示:
对于Sintel或者KITTI的训练数据当作background,然后取加渲染的图像数据集中的某个数据集的图当作foreground,background/foreground的random的flow也是通过学习到的参数来生成的。对于background只生成透视变换参数,对于foreground有仿射或者透视变化矩阵参数,再加上2*2 grid为控制点的deformable flow参数。foreground的region也是有不同的策略:可以是下图中的smooth或者带有holes的多边形,边的数据也是在一定范围内random,也可以是用OpenImages中的instance来做foreground
最终前景的motion visulization如下图:
除了motion,还可以是加blur (gaussian/box filter)和fog
最终生成的training set data如下图:
Framework
这篇文章采用的框架是PWC-Net和RAFT
Loss
先通过PBT+CMA-ES找渲染最优参数(笔者对于这两个算法没有了解)
然后用上述渲染参数来min loss
Auto-Flow的Loss是Sinel final的EPE (end-point error)或者AE (angular error),实验结果来看EPE对large motion效果更好。
Results