参考代码:SkyAR
1. 概述
这篇文章提供了一套自动替换天空的方法,无需使用诸如惯性传感器的辅助信息,只需要提供视频数据便可以完成天空分割和背景替换融合,最后的得到的效果质量还挺好。
文章的整体pipeline大体可以分为以下3个部分:
- 1)sky matting:参考matting的思路将天空从背景中分离出来,得到高质量的天空alpha预测结果。并且基于matting的分割相比传统分割能够带来软化的过度,从而使得matting之后的结果在融合之后显得更加自然;
- 2)motion estimator:文章通过光流和关键点计算得到天空在平移/旋转/缩放自由度上的仿射变换矩阵,从而不使用惯性传感器便得到其运动信息;
- 3)skybox:得到运动信息之后需要在对应的位置上截取背景图像,之后通过文章给出的recolor和relight方法进行融合;
文章的方法在视觉上还是挺震撼的,下面是其部分效果图:
文章的方法的运行速度与各分量耗时:
2. 方法设计
2.1 整体pipline
文章的整体pipeline见下图所示:
2.2 Sky Matting
文章的matting方法是用ResNet-50作为backbone,之后再此基础上构建一个U型的编解码网络结构,并且将其中的传统卷积替换为了coordinate convolution从而关联坐标位置信息更加适应天空的分布特性(天空一般在图片的上部,在y轴上做归一化),进而得到了更好的matting效果。下面展示了该类型卷积对于最后结果的影响:
其网络结构见表1所示:
对于matting的监督,文章使用的是L2范数,文章将损失函数定义为:
L f ( I l ) = E I l ∈ D l { 1 N l ∣ ∣ f ( I l ) − A l ^ ∣ ∣ 2 2 } L_f(I_l)=E_{I_l\in D_l}\{\frac{1}{N_l}||f(I_l)-\hat{A_l}||_2^2\} Lf(Il)=EIl∈Dl{
Nl1∣∣