ICCV 2019 | Adobe 无需大量数据训练,内部学习机制实现更好的视频修补
什么是内部学习?即网络在训练过程中完全不使用外部数据,对某一视频修补的过程就是一个仅利用该视频数据从头开始训练的过程。
该文作者信息:
作者来自斯坦福大学、Adobe研究院、萨里大学。
何为视频修补?
视频修补是指在视频中每帧存在目标mask的前提下,对mask遮掩区域进行修补的技术。
下图展示了两种之前的方法和该文方法在同一段视频中给出的结果。
我们可以很明显的看出,视频中存在的目标被遮挡后,该文提出的算法能较好的保留目标,而且在mask遮挡区域能很好的保留直线目标。
Deep Image Prior(DIP)
首先我们要先理解DIP是什么。
DIP 来自论文:
https://sites.skoltech.ru/app/data/uploads/sites/25/2018/04/deep_image_prior.pdf
DIP 是说,当我们用卷积神经网络从噪声图像学习如何映射到一幅被破坏的(比如污损的)图像时,网络首先会学习如何从噪声图像重建一幅好的图像,而后再学习如何破坏(污损)这幅图像。
深度卷积网络先天就拥有一种能力:首先建模图像符合自然规律的部分。
DIP 进行图像修补的过程是:学习“正常图像块+白噪声”到正常图像的映射,然后对有污损的图像块进行变换,即得到修补后的图像。
算法思想
该文作者是在DIP基础上加入了对视频修补更多的Loss约束,使得仅使用视频内部数据训练的模型,可以得到在时序上连贯的视频修补效果。
最主要的改进是,不仅建模了图像重建误差(表观),还建模相邻帧光流相关误差。
下图展示了作者的算法思想:
作者使用经典的编码器-解码器生成网络,对于视频每一帧,随机生成一个与其对应的大小一致的噪声图,网络训练时最小化视频帧重建误差、相邻帧的光流预测误差,和图像光流卷曲后的表观误差、感知误差。
损失函数如下:
其中
Lr图像生成损失Image Generation Loss,代表视频帧重建误差,Mi为Mask,故此重建误差是不考虑被破坏区域的。
Lf 光流生成损失 Flow Generation Los ,代表使用视频帧计算得来的光流和预测的光流的误差,同样不考虑被破坏区域,并且包含光流的前后向检查(Oi,j)。
Lc 连贯性损失 Consistency Loss,代表生成的光流将图像卷曲后和对应图像相比的误差。
Lp 感知损失,作者使用VGG 16网络特定层提取特征,衡量重建后图像和视频帧提取的特征之间的误差。
以上即是作者的创新点,其实想想也很简单,就是如何将光流信息合理加入到生成模型的多任务训练中。
网络训练完成后,每幅噪声图像对应的生成图像,即修补后的视频帧。
实验结果
作者收集并整理了多个数据集,下图为对于该数据集中某四帧,原始的DIP、作者实现的DIP-vid、DIP-Vid-3DCN和本文提出的算法DIP-vid-Flow视频修补视觉效果的比较:
可见,本文提出的算法对于被遮挡的物体处理的最自然、干净,不会出现不正常的扭曲。
下图为作者对修补视频中的两帧,单看某一行的重建结果:
可见本文提出的考虑光流的图像修补方法DIP-Vid-Flow,可使结果更加平滑自然。
下图为对某些特定图案纹理的修补结果:
发现本文提出的方法能更好保存那些具有直线特征的图案和建筑。
下表为使用客观评价指标对算法的评价:
可见,该文算法比大部分之前算法要好,且在复杂运动的视频中表现更好。
最后,让我们看看作者制作的视频Demo:
结论:
该文在DIP基础上引入光流建模视频修补,取得了更好的视觉效果。值得一提的是,这种内部学习机制,在低级图像处理领域,应该还可以有更多应用。
论文地址:
https://arxiv.org/pdf/1909.07957.pdf
项目地址:
https://cs.stanford.edu/~haotianz/publications/video_inpainting/#
作者称代码将开源。
图像视频修补恢复交流群