偷天换日,逼真的天空置换算法
责编 | 晋兆雨
来源 | Jack Cui
头图 | CSDN付费下载于视觉中国
前言
天空,是摄像中的一个关键元素。
游戏的天空,我们可以随意调节,可以是晴空万里,也可以是风雨交加。
现实的天空,我们也可以使用算法进行调整,算法效果逼真(效果如下):
万里星空、皓月千里、电闪雷鸣,各种天气特效,算法一键生成。
甚至,可以生成电影特效中才有的,移动城堡,天空之城。
这么好玩的 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 安装依赖库即可,很简单。
第二步,下载训练好的模型权重文件。
下载地址(需翻墙):
https://drive.google.com/file/d/1COMROzwR4R_7mym6DL9LXhHQlJmJaV0J/view
第三步,配置文件修改。
在 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
更多精彩推荐
11.11大促来袭,京东如何保障云安全?
算力至上?四大AI芯片大对决
牛!发出中国第一封电子邮件,注册登记域名CN,中国互联网之父传奇
2021年,很可能是以太坊的“高光之年”
SQL分页查询方案的性能对比
偷天换日,逼真的天空置换算法相关推荐
- 运动估计算法的程序实现_偷天换日,逼真的天空置换算法
点赞再看,养成习惯,微信公众号搜索[JackCui-AI]关注这个爱发技术干货的程序员.本文 GitHub https://github.com/Jack-Cherish/PythonPark已收录, ...
- 先进先出置换算法(FIFO)
最简单的页面置换算法是先入先出(FIFO)法.这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存.理由是:最早调入内存的页,其不再被使用的可能性比刚调入内 ...
- 最佳置换算法(OPT)
这是一种理想情况下的页面置换算法,但实际上是不可能实现的.该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页),而其他页面则可能要到10.100或 ...
- 三十七、页面置换算法
一.知识总览 请求分页存储管理与基本分页存储管理的主要区别: 在程序执行的过程中,当所访问的信息不再内存中时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序. 若内存空间不够,由操作系统负责 ...
- 页面置换算法简单对比----《operating system concepts》《操作系统原理》
置换策略 当请求调页程序要调进一个页面,但是该作业分配所得的主内存块已经全部用完,则必须淘汰改作业在贮存中的一个页面.置换算法就是决定选择哪一个页面进行淘汰的规则. 如置换算法不够好,就会导致刚淘汰的 ...
- 【操作系统】考研の页面置换算法例子(看不懂你来打我~!)
文章目录 1 缺页率 2 页面置换算法 1 缺页率 缺页率=缺页次数/缺页次数+访问成功次数 2 页面置换算法 根据页面走向,使用先进先出页面淘汰算法时,页面置换情况见下表. 物理块数为3时: 走向 ...
- linux页面置换的存储,3.4.4 第二次机会页面置换算法
3.4.4 第二次机会页面置换算法 FIFO算法可能会把经常使用的页面置换出去,为了避免这一问题,对该算法做一个简单的修改:检查最老页面的R位.如果R位是0,那么这个页面既老又没有被使用,可以立刻 ...
- linux存储--页面置换算法(十一)
选择调出页面的算法就称为页面置换算法.好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出. 常见的置换算法有以下四种 1. 最佳置换算法(OP ...
- 页面置换算法 - FIFO、LFU、LRU
缓存算法(页面置换算法)-FIFO. LFU. LRU 在前一篇文章中通过leetcode的一道题目了解了LRU算法的具体设计思路,下面继续来探讨一下另外两种常见的Cache算法:FIFO. LFU ...
最新文章
- 粤嵌——电子相册代码实现
- HashTable已经被淘汰了,不要在代码中再使用它
- 201124阶段二sqlite3 API
- mini-css-extract-plugin简介
- python加载csv文件去重_用python读写和处理csv文件
- 求教一个WEBSERVER与C的通信问题
- java静态方法没有this,super与this无法用在static方法中
- 计算机术语 谢谢,计算机术语中的TPS是什么意思
- OneNote的同步问题
- App推广渠道如何统计的解决方案
- 对你快速了解恶意软件以及病毒和反病毒
- Spring Cache key生成策略, 不要想当然认为是全类名+方法+参数
- 高考作弊,5G背锅,还是屏蔽器背锅
- AlphaZero登上Science封面:从小白开始制霸多个游戏
- 基于贪婪的高效Lidar-SLAM特征选择(ICRA2021)
- 龚本灿c语言程序设计,c语言程序设计初步-求索学堂.ppt
- 如何查看笔记本的语言编码_在编码笔记本电脑中寻找什么
- WebDay14 Linux高级+Nginx
- esp8266模拟车模航模接收机控制电调驱动电机
- 电话资源导入微信/QQ通讯录操作方法