前言
这里是我第一次看完论文之后的疑虑。。。可跳过
本篇文章中使用到了光流,光流是什么?
颜色表示不同的运动方向,深浅就表示运动的快慢
不知道大家会不会跟我有一样的疑惑。
首先,论文中的flow map 是如何得到的?光流是通过什么估计的?
生成器的loss中有对《生成的光流图,真实的光流图》进行对比,除此之外还有,《将预测光流warp到当前真实的图像帧预测下一帧图像,真实的下一帧的图像》进行对比。两帧之间真实的光流图是通过flownet2.0得到的,真实的下一帧图像也是已知的,因此我们可以最小化这个loss来估计光流。
跟flow net 2.0得到flow map区别是什么?
我们预测的光流是要去逼近flownet 2.0 得到的光流的。
文中说,hallucinated image,optical flow,occlusion mask,这三种图获取都是通过(前L帧生成的图像, 前L帧的分割图+当前需要预测的第L帧分割图 )这个输入得到.
那么,输出的这三种图像,是通过什么样的方式训练得到的呢?
重点部分介绍
本文作者之前做过了pix to pix HD图像的工作,这个工作可以看作为之前工作的延伸,可以理解为他将视频分为一帧一帧图像,然后简化视频生成任务为一帧一帧图像的生成,但是考虑到视频生成时,我们需要抱证每一帧图像之间的连贯性,这里的连贯性可以从作者给的视频中看出来(车道中白色基线的连贯)。
既然考虑到了每一帧之间的连续性,那么作者为此建立一个(考虑了之前帧的信息)的生成器模型。除此之外考虑到了在视频连续帧之间是包含了大量冗余的,如果我们能够获取到两帧之间的光流信息,就可以warp当前帧来获取下一帧的信息。当然,在上下帧之间没有出现遮挡的情况,对于光流的预测是准确的。后面会提到如何解决这个问题。
重点是损失函数,让我们看看他是如何设计损失函数的
那么对于生成器loss呢,最小化 在分割图条件下的《生成的图像帧,真实的图像帧》之间的距离和 在光流条件下的《生成的连续K个图像帧,真实的连续K个图像帧》之间的距离,还有最小化生成的flow的loss。L_{W}包含最小化 《真实光流,预测光流》之间的距离和《将预测光流warp当前真实的图像上从而预测下一帧图像,真实的下一帧的图像》之间的距离相加。
在上下帧之间出现遮挡的情况,对于光流的预测是不准确的。如何解决这个问题?
首先,根据分割的ground truth 将建筑、路面之类作为背景,将人,车之类作为前景,对生成器做一个较强的先验。因为人或者车在图像中所占面积小,并且会有较大的移动,所以光流的预测是不准确的,前景生成器必须要生成这些。对于背景区域,光流是很容易预测的,因此背景区域可以通过之前的warp操作获得,也就是我们的W网络,所以,这里的背景生成器仅仅需要去预测遮挡区域即可。
这个先验的意义是,以一些小的视觉伪影为代价来获取的更好的视觉效果。
看代码喽