偷天换日,逼真的天空置换算法 - 知乎

2020/10/29 12:51
阅读数 68
点赞再看,养成习惯,微信公众号搜索【JackCui-AI】关注这个爱发技术干货的程序员。本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,有一线大厂面试完整考点、资料以及我的系列文章。

一、前言

天空,是摄像中的一个关键元素。

游戏的天空,我们可以随意调节,可以是晴空万里,也可以是风雨交加。

现实的天空,我们也可以使用算法进行调整,算法效果逼真(效果如下):

知乎视频www.zhihu.com图标

万里星空、皓月千里、电闪雷鸣,各种天气特效,算法一键生成。

甚至,可以生成电影特效中才有的,移动城堡,天空之城。

这么好玩的 AI 算法,你想学吗?

老规矩,今天,继续手把手教学。

算法原理、环境搭建、效果实现,一条龙服务,尽在下文!

二、SkyAR

SkyAR 是一种用于视频中天空置换与协调的视觉方法,该方法能够在风格可控的视频中自动生成逼真的天空背景。

该算法是一种完全基于视觉的解决方案,它的好处就是可以处理非静态图像,同时不受拍摄设备的限制,也不需要用户交互,可以处理在线或离线视频。

使用单卡 NVIDIA Titan XP GPU,SkyAR 处理 640 x 320 的视频,可以达到 24 fps 的实时处理速度。

算法主要由三个核心组成:

  • 天空抠图网络(Sky Matting Network):就是一种 Matting 图像分隔,用于检测视频帧中天空区域的视频,可以精确地获得天空蒙版。
  • 运动估计(Motion Estimation):恢复天空运动的运动估计器,使生成的天空与摄像机的运动同步。
  • 图像融合(Image Blending):将用户指定的天空模板混合到视频帧中。除此之外,还用于重置和着色,使混合结果在其颜色和动态范围内更具视觉逼真感。

完整框架如下图:



天空抠图网络:用来检测视频帧中的天空区域。与以往将此过程定义为二元像素级分类(前景 vs 天空)问题的方法不同,该研究设计了一种基于深度学习的由粗到细的预测 pipeline,以产生更精确的检测结果和更悦目的混合效果。



运动估计:用于恢复天空的移动。虚拟摄像机捕获的天空视频需要在真实摄像机的运动下进行渲染和同步。该研究假设天空以及天空中的物体(例如,太阳、云等)位于无穷远,并用 Affine 矩阵建模它们相对于前景的运动。



图像融合:在预测天空蒙版时,输出像素值越高,表示像素属于天空背景的概率越高。在常规方法中,通常利用图像遮罩方程,将新合成的视频帧与背景进行线性组合,以作为它们的像素级组合权重。

但由于前景色和背景色可能具有不同的色调和强度,因此直接进行上述方法可能会导致不切实际的结果。 因此,研究人员应用重新着色和重新照明技术将颜色和强度从背景转移到前景。

更详细的内容,可以直接看 paper:

论文地址:https://arxiv.org/abs/2010.11800

三、效果测试

Github 项目地址:https://github.com/jiupinjia/SkyAR

第一步,安装依赖库。

根据 Requirements.txt 安装依赖库即可,很简单。



第二步,下载训练好的模型权重文件。

下载地址(需翻墙):点击查看

第三步,配置文件修改。

在 config 目录下,有一些配置文件,可以根据自己的情况更改视频和天空模版。

{
  "net_G": "coord_resnet50",
  "ckptdir": "./checkpoints_G_coord_resnet50",

  "input_mode": "video",
  "datadir": "./test_videos/canyon.mp4",
  "skybox": "galaxy.jpg",

  "in_size_w": 384,
  "in_size_h": 384,
  "out_size_w": 845,
  "out_size_h": 480,

  "skybox_cernter_crop": 0.5,
  "auto_light_matching": false,
  "relighting_factor": 0.6,
  "recoloring_factor": 0.5,
  "halo_effect": true,

  "output_dir": "./eval_output",
  "save_jpgs": false
}

ckptdir 为权重文件的解压后的目录,datadir 为输入视频的目录,skybox 为使用的天空模版。

生成效果保存到 output_dir 目录中。

修改好配置文件,使用指令直接运行:

python skymagic.py --path .\config\config-canyon-galaxy.json

--path 指定使用的配置文件。

运行效果:



处理速度很快,一会儿就处理完了。

更多效果展示:



我将程序进行了打包,东西都已配置完成,可以直接使用。

下载地址(提取码:jack):

https://pan.baidu.com/s/1sjwSRmqswFaOXb7xbHKNVA

四、最后

好玩的 AI 算法有很多,关注我带你玩转各种好玩的算法,我是 Jack Cui,我们下期见!

文章持续更新,可以微信公众号搜索【JackCui-AI】第一时间阅读,本文 GitHub https://github.com/Jack-Cherish/PythonPark 已经收录,有大厂面试完整考点,欢迎Star。
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部