题题外话:

这篇博文是在两年多以前开始写的,所以中间有一些认知上的误差,比如当前工作归类到了CG领域,但实际上它还是一篇纯CV的文章,只是类似于CG是一种纯应用类的方法。因为最近在学CG相关的知识,有了比较明确的理解,这里特殊说明一下。

题外话:

一直声称对CG有兴趣的我,第一次认真地读了一篇CG领域的文章,本文用于记录读论文的心得(碎碎念)。直观的感受是,CG和CV的差异在本文中的体现主要在于CG较CV而言,更偏上层应用,端到端的模型在其中只是一个步骤,好奇CG会不会也被端到端的模式侵袭。不过这篇关于照片中天空替换的算法Sky is Not the Limit: Semantic-Aware Sky Replacement已经是16年的SIGGRAPH了,比较久远。

摘要

作为照片中普遍出现的背景——天空,通常不会让摄影师过多地关注。通常由专业后期经复杂的手法对其进行矫正(俗称PS)。本文中,作者提出了一个自动替换背景的算法,可以生成真实的、具有多种场景的天空。该算法的关键idea是使用视觉的语义信息来辅助整个处理过程,其中包括天空部分的分割、恰当天空素材的搜索、以及天空替换。

1. 首先,作者训练了一个深度卷积网络,用其来处理照片的场景切分,相当于为分割天空区域提供视觉的先验信息。

2. 然后,为了找到合适的替换素材,作者提出了一个数据驱动的天空搜索框架,搜索基于输入图像的语义信息分布和布局来进行。

3. 最终,为了得到合成自然的替换天空图,作者使用了一个表观迁移的方法将原图剩下部分和替换的天空部分进行局部和语义上的匹配。

本文提出的算法可以自动生成观感较好的合成图像,并且给出了很多实验结果。(感兴趣的童鞋们可以去读原文)

算法概览

输入一张图I,旨在自动地生成具有同样前景不同的天空背景的图片集。本文将该任务拆分为三个子任务:

1)天空分割,将图片I中的天空区域 I^{sky} 和 前景区域 I^{fg} 区分开;

2)天空搜索,从图片集中检索到匹配输入图片语义信息的素材图 R;

3)天空替换,将图片原有的天空区域 I^{sky} 替换为新的天空 R^{sky}。同时,前景区域 I^{fg} 的颜色分布会自动调整,以适应拼接的天空背景,使得合成的图像一致且自然。

图片的语义信息从何而来?作者训练了一个全卷积神经网络(FCN),具体细节可移步我的上一篇博客FCN,使用该模型来对图像进行场景分解。为了得到较好的FCN模型,作者从LMSun数据集中随机选择了15,000张户外场景的图像作为该模型的训练数据。其余的训练细节类似于FCN原文。

基于FCN得到的粗糙的场景分解的结果,作者使用了一个online refinement在线完善的操作以得到一个更加精确的天空分割区域。(没忍住瞄了一眼,果然是基于CRF :)FCN模型的输出可以很好地描述输入的图像的场景布局,因而可作为后续天空搜索及天空替换的预处理。

整体方法的框图如下图所示。 输入一张图像,分别传入两个分支。其一(图中下方的分支)是基于FCN网络得到输入图像的场景切分(scene parsing)结果以及对应到每个语义标签的语义分割图(图中所示灰度图)。另一个分支(图中上方的分支)是一个由粗糙到精修的(coarse-to-fine)天空分割过程,将输入图像中的天空部分扣出,如图中红色蒙版(mask)标注所示。为了找到合适的匹配的天空图像,作者提出了一个图像搜索方法,该方法基于相似的语义信息布局(layout)结合下方分支得到的语义分割图对图像进行搜索。基于搜索到的天空图像,进行图像的前景和天空合成。最终,合成的图像还会根据搜索到的天空图像进行对应的风格迁移,输出合成效果自然的替换了天空的图像。

天空分割

基于FCN得到的场景切分结果,本文提出了一个准确的天空分割算法,以辅助天空替换并且很好地减少了视觉上的合成误差。无论输入的图像的表观特性和场景布局如何变化,由FCN得到的场景切分结果可以准确地将天空区域定位。然而,FCN的输出结果分辨率比较低,其分割图的边缘处会比较粗糙,且造成不必要的细节损失。在天空替换的要求下,FCN的结果不能直接使用。

为了得到一个准确的天空分割图,作者使用了经典的CRF方程来对分割结果进行修缮。其能量方程定义如下:

其中U_c代表颜色项,U_t代表纹理项,用于评估每个像素是否为天空;U_f是位置项,主要依赖于FCN的输出;V是一个相对项,对于相邻的x_i和x_j,两个像素对应的特性应尽可能接近,差异大的像素对之间则是分割边缘处。其中λ_1/2/3都设为1,λ_4设为100,从而保证得到平滑准确的分割边缘。

通过使用以上精修策略,天空分割的结果以IoU为评价指标,从87.6%提升到88.7%。在这里我省略了很多的细节,如有必要大家可以查看论文原文。

实验结果

当当当,又到了最关键的上效果环节~直接上一组图,更多实验细节大家可以直接去原文查看。

使用不同的搜索天空图像的算法合成的结果对比。

最后总结一下这个算法,整体的方法将整个天空替换的过程考虑周到, 包括分割由粗粒度到细致的处理,以及搜索匹配天空的图像的算法,最后合成图像的风格迁移。

前文提到过这个算法很具有应用性质,那么有一个疑惑是在落地过程中,不知道多个步骤会不会带来计算负载耗时超长的问题。欢迎大家评论区指正和讨论!

后记:

这篇博文时隔两年九个月总算写完发出,没想到在学生时代一直期待要学习的图形类任务,在过去半年里我真的有机会开始好好学习。虽然时至今日还有很多知识都掌握的不完全,每天的时间管理也仍需加强,希望可以空出一些时间并配合好合适的规划,将待办事项一项项打勾。

世间际遇真是奇妙呀,也许一切自有其安排,别着急,慢慢来吧~ *^____________________^*

CG | Sky is Not the Limit: Semantic-Aware Sky Replacement 基于语义信息的天空替换算法相关推荐

  1. 论文阅读:Semantic Aware Attention Based Deep Object Co-segmentation(ACCV2018)

    协同分割论文:Semantic Aware Attention Based Deep Object Co-segmentation(ACCV2018) 论文原文     code 目录 1.简介 2. ...

  2. The Sky Is NOT The Limit 苍穹无限

    标题引用Captain Scott Kelly的半句名言,并乱译一下.别去百度了,参加Qonnection2016才可能听到. 芳菲四月,草长莺飞.掰着手指数了数,做数据分析已6年有余,非专业的也10 ...

  3. RITnet: Real-time Semantic Segmentation of the Eye for Gaze Tracking

    RITnet眼睛注视跟踪的实时语义分割 本文的主要贡献如下 1 提出了RITnet,一种语义分割结构,模型大小只有0.98MB,在2019年OpenEDS语义分割挑战赛上获得最先进的结果.该模型在NV ...

  4. MYSQL实现ORDER BY LIMIT的方法以及优先队列(堆排序)

    一.MYSQL中的LIMIT和ORACLE中的分页 在MYSQL官方文档中描述limit是在结果集中返回你需要的数据,它可以尽快的返回需要的行而不用管剩下的行, 在ORACLE中也有相关的语法比如 1 ...

  5. 在keil 4中添加stc系列芯片的方法--【sky原创】

    在keil 4中添加stc系列芯片的方法:  1.从官网下载uv3.cdb的文件 网址是:http://www.stcmcu.com/ 2.下载好后把uv3.cdb文件改成STC.cdb: 3. 然后 ...

  6. ksy是谁_sky为什么叫人皇:sky是谁及资料

    sky为什么叫人皇?那么,sky是谁呢?据悉,有关注电竞圈的朋友应该也是知道李晓峰这号人物的,他的英文叫SKY,别称便是人皇,足以见得,只要说人皇必然就会想到李晓峰或者说就是在讲他此人下面相关信息介绍 ...

  7. 3DMark Sky Driver

    Futuremark今天宣布,3DMark Sky Diver测试场景已经正式发布,现有用户可以免费更新. 3DMark的十几年历史上,这是第一次为某个版本增加全新的测试场景.升级后的3DMark版本 ...

  8. 体验高空跳伞,3DMark Sky Drive场景测试

    Futuremark去年发布的新3DMark测试包含3个场景,包括DX9级别的Ice Storm,DX10级别的Cloud Gate与DX11级别的Fire Strike,现在的独显与核显都提供了对D ...

  9. 语义激光SLAM论文阅读 Semantic Lidar_based SLAM paper Research

    语义激光SLAM论文阅读 Suma: Efficient Surfel-Based SLAM using 3D Laser Range Data in Urban Environments 主要工作 ...

最新文章

  1. aws lambda使用_使用AWS Lambda安排Slack消息
  2. arch linux 下 安装搭建python机器学习环境
  3. mysql实现汉字转拼音
  4. 【Qt】窗口组件和窗口类型
  5. windows获取硬件设备的guid_Windows编程技术:提权技术(下)
  6. 将数据从 SQL Server 导入 Azure Storage Table
  7. java mybatis 返回map_mybatis返回map集合的格式是什么?mybatis返回map集合实例
  8. Spring-jdbc-JdbcTemplate
  9. java实现邮件发送, 抄送及多附件发送
  10. oracle--merge
  11. 计算机 考 二级结构工程师,下半年河北省结构工程师二级专业结构:计算机软件的组成及功能考试试题.doc...
  12. 计算机一级考试 文字录入,计算机一年级《文字录入》期末考试题(理论)B
  13. C++编程笔记(QT)
  14. Chrome对应webdriver版本
  15. 测试用例设计方法_等价类划分法(游戏向)
  16. HGAME2020 签到题ProPlus
  17. Problem D: 求三角形面积-gyy
  18. 蚂蚁金融加入以色列区块链隐私解决方案公司A轮融资
  19. ubuntu云输入法ibus cloud pinyin
  20. 钉钉考勤接口调用与OA系统数据对接

热门文章

  1. mui如何实现扫码功能
  2. 检查方程的计算机,计算器解方程
  3. kafka的消息丢失和重复消费解决办法
  4. 踏足Flutter 安装开发环境
  5. PS图片做羽化效果banner
  6. xps15java_2018戴尔XPS 15值得买吗?2018全新戴尔XPS 15磁悬浮键盘笔记本上手评测
  7. steam上java编程游戏
  8. 【BP预测】基于鸟群算法优化BP神经网络实现数据预测附Matlab代码
  9. 亏损扩大近十倍、裁撤总裁职位,宣布996的有赞如何enjoy?
  10. PDF在转Excel免费的!在线工具!轻松搞定