论文标题:UPFlow: Upsampling Pyramid for Unsupervised Optical Flow Learning
收录会议:CVPR2021
论文单位:旷视研究院
论文链接:https://arxiv.org/pdf/2012.00...
视频解读
视频导航
- (00:00-04:33) motivation:当我们使用有监督学习的方法来完成光流估计任务时,能达到较小的一个误差,但是用于训练模型的ground-truth是非常昂贵的,因此发展无监督学习的方法来实现光流估计任务是有很大意义,并且在实现的同时发现光流会有重影的现象。
- (04:34-8:44) contribution:旷视研究院基于这一出发点提出了基于无监督学习的UPflow,并且针对光流中出现重影的现象提出了自引导上采样模块和定义金字塔蒸馏损失来解决这一问题。
- (8:45-10:04) evaluation:模型在MPISintel, KITTI 2012 和 KITTI 2015数据集上与其他模型的比较上,EPE误差都是最小或是之一。
- 个人总结:光流估计任务在视觉上已经发展了很多年了,在深度学习成为主流方法之前,LK算法是主流的处理方法,在深度学习发展至今,基于深度学习的光流估计算法得到了更好的结果,从而又引发出希望通过无监督学习方法来减低成本,这篇文章在实现无监督学习方法的基础上,设计了自引导上采样模块和考虑到金字塔处理图像时精度的损失,我认为是很具灵性的部分。
文字解读
1. 旷视研究院提出了一种叫UPFlow的,基于无监督学习方法的光流估计,而且采用了金字塔网络作为光流估计的主要方法。
2. 我们首先介绍一下光流估计的概念,光流,顾名思义是光的流动,在计算机视觉中,定义为图像中对象的移动,具体是指视频图像一帧中,代表同一物体和像素点移动到下一帧的移动量,我们可以在右图中看到,汽车在行驶,其中红色的标点是该像素在下一帧的移动方向,把物体的光流标记出来就是光流估计。
3. 在深度学习出现之前,LK算法是实现光流估计的主流算法,在深度学习出现之后,实现光流估计的方法可以分为有监督学习法和无监督学习法;在以往的论文当中,有监督学习法实现了最好的性能,误差较小,但是它的缺点在,用于训练模型的标签ground-truth的获取是需要大量人力物力的,并且有监督学习在综合数据集上的泛化能力不够好。无监督学习的方法因为它不需要昂贵的标签,而是用两帧图像之间的光度损失来训练模型,因而有了一定的研究价值。
4. 接下来我们介绍一下图像金字塔结构。在我们进行图像处理的时候,会经常对源图像的尺寸进行放大或者缩小的变换,进而转换为我们指定尺寸的目标图像,图像金字塔则是图像多尺度调整表达的一种重要的方式,可以通过高斯法和拉普拉斯的方法获得,如图所示,最底下的图片是输入的原图,然后往上卷积取样获得更小尺度的图像,一般层数会是5层。采用金字塔结构来进行光流估计,由于原图像各个尺寸的图像都用来估计,因此全局和局部的光流变化都可以更好地捕获。
5. 目前金字塔网络会存在两个问题,一个金字塔自下而上的问题,由于进行光流估计的时候需要在尺寸小的特征图上采样,具体的原理会在后面提及,常用的双边插值上采样会导致得到的光流估计图像的交叉边缘区域产生模糊,在图中可以看到用该论文的方法效果比其他的网络要好。
6. 第二个问题是自上而下。在取得最佳效果的无监督方法中,只在网络的最终输出上计算损失,金字塔层里没有计算损失,粗层次上的估计误差会累积并破坏细层次上的估计。
7. 针对这两个问题,本论文提出了相应的方法。在看本篇论文的处理方法前,我们先介绍一下整个光流估计的实现过程。这个过程可以分为两个部分。第一是进行卷积取样得到图像金字塔,可以看到是将当前帧的图像和它的下一帧图像做取样,得到F4到F0。第二部分是解码和上采样,解码模块与UFlow的解码器模块相同,得到各尺度的光流估计,从公式中可以看到解码器有三个输入,分别是当前帧和下一帧的特征图,和上采样得到的光流估计,最终的光流估计结果则是从图中最后一步得出。
8. 接下来解释一下为何双插值上采样会产生模糊,图中的左图是双插值算法的原理,橘色点和蓝色点代表是两个流向,中间缺少的领域在没有语义指导的情况下双线性插值会在该区域产生混合插值结果。为了避免这种现象,提出了一种自引导上样模块,通过插补流改变插补源点。如图右所示,先通过插补一个点,然后用学习到的插补流将结果带到未知的位置。
9. 右边的这个图则是自引导上采样模块的具体实现方式,首先解码器得到上一层的光流估计,然后通过双线性插值得到一个高分辨率的初始光流,然后使用5个卷积层的稠密块,输入为两帧的特征图,输出为一个具有3通道的张量图,前两个通道为插值流,最后一个通道为Mask,由于双线性插值只在边缘区域出现模糊,Mask保证只在边缘插值,然后插入流对初始流进行插值处理,最后加上Mask强制只处理边缘区域。
10. 第一张图是原始图像,下面是它的真实光流估计,然后是插入流和mask,然后和双线性插值上采样对比,自引导上采样模块的效果确实是比双线性插值好,这是这篇论文解决的第一个问题的方法。
11. 第二个问题是金字塔网络中,中间层的损失没有纳入的问题。首先,常规无监督光流估计的损失定义为假设当前帧和下一帧亮度恒定的情况下的光度损失,其中MT是Mask,即有遮挡的情况下将不计入损失。为了提高性能,还添加了一些以前有效的无监督组件,包括平滑损失、正则化损失、census loss、和warping loss等。为简单起见,省略了部分内容。
12. 由于在低分辨率下光度一致性难以保证,也沿用光度损失并不合理,因此中间层实际使用以最终输出作为伪标签对中间输出增加监督损失,在公式中我们知道,金字塔蒸馏损失定义为每一层的光流估计与最终层光流估计下采样后的差,并乘上mask的下采样,从损失中排除遮挡区域。因此最终的误差为无监督光流误差和金字塔蒸馏误差相加。
13. 最后是这个模型在数据集中的表现,用了EPE标准平均端点误差作为评价标准,错误率为辅助评价标准,可以看到,红色标的模型它在这三个数据集上的表现都是最优的,对比的模型包括了有监督的方法和无监督的方法。
14. 最后进行了一个烧蚀实验,即通过加减不同的组件,评估该组件的影响。这个图中打上勾的表示使用了该组件,可以看到当所有组件都加入到模型中,效果是最好的。
15. 这是对SGU,自引导上采样模块的烧蚀实验,与上线性、JBU等上采样方法比较,SGU实现的EPE也是最低的。
16. 最后是金字塔蒸馏损失的烧蚀实验,金字塔蒸馏损失的EPE也是最低的。
首发:旷视研究院
作者:罗堃铭
专栏文章推荐
欢迎关注旷视研究院极术社区专栏,定期更新最新旷视研究院成果
加入旷视:career@megvii.com