作者未来建筑实验室

10秒搞定建筑日夜景转换,还自带中秋月光

建筑设计会经常遇到出夜景效果图的时候,日夜景的效果转换,临摹勾勒、渲染出图、后期加工...工序繁多。除了对制作工具的熟练,更关键的是需依靠经验判断建筑明暗、光影和颜色等在白天和夜晚的不同状态。

近日,AI 建筑研究团队未来建筑实验室运用之前一项深度学习成果,做到 10 秒内完成日夜景转换,让建筑菜鸟也能快速拥有合格效果图。


三步实现日夜景秒速转换
by 未来建筑实验室
第一步,选择一张日景图 S (source);
第二步,再选择一张目标的夜景图 R (reference);
第三步,基于深度学习的色彩算法将在两张图片上对具有相似语义结构(sementic structures)的部分进行颜色迁移,秒速生成一张新的图片 T(target)。它有着 S 的结构和内容,同时具有 R 的颜色风格(即R+S=T)。
中秋版Demo演示,by未来建筑实验室
正值月圆时,研究团队特别推出中秋版 Demo。该版本在完成颜色迁移的基础上,更通过算法在夜景图中添上了一轮明月。等不及看完全文的朋(lǎn)友(rén),可以扫描以下二维码抢先体验:


建筑颜色迁移黑科技简介:
Neural Color Transfer
Neural Color Transfer (下称 NCT)是基于语义信息的对应(correspondence)进行匹配和颜色的迁移,NCT 使用了卷积神经网络来对图片提取特征以便于后续的匹配。在匹配完成后,NCT 使用了一个线性模型,在满足局部和整体一致性的情况下进行优化。
by 未来建筑实验室

在匹配完成后,为了颜色迁移在局部变化和整体上的一致性,NCT 使用了一个线性模型在同时满足局部和整体的约束下进行优化。
输入的图片 S 和 R 共享很多语义上相关的(semantically-related)内容,同时在展示上又有很大的不同。
S 和 R 中都包含建筑,但分别为日景和夜景。要在两张存在很大色差的图片上建立语义的对应是一个非常棘手的问题,尤其是传统的特征提取算法是无法有效的提取出图片的语义信息。
因此使用预训练好的深度学习模型来提取特征成为解决这个问题的有效途径, 这也符合迁移学习(transfer learning)的思想:
Transfer learning is a research problem in machine learning that focuses on storing knowledge gained while solving one problem and applying it to a different but related problem.” 
(West, Jeremy; Ventura, Dan; Warnick, Sean (2007). "Spring Research Presentation: A Theoretical Foundation for Inductive Transfer")。


如何做到日夜景秒速转换?

NCT采用经典图片分类的多层卷积神经网络(CNN)模型VGG19。
VGG19 是在 ImageNet 上,1000 个分类的共计约 120 万张图片上预训练的(http://image-net.org/challenges/LSVRC/2014/browse-synsets)。这个模型有非常强的泛用性,被普遍应用于图片特征提取。
随着模型的层数由浅到深(下图从左到右),VGG19 可以抽取从图片的低级细节(对颜色敏感)到高级的语义信息(对颜色不敏感)。
图片分类的多层卷积神经网络(CNN)模型 VGG19 结构图:(https://www.mathworks.com/help/deeplearning/ref/vgg19.html)

对于 S 和 R 两张图片,分别提取 VGG19 在 relu1_1, relu2_1, relu3_1, relu4_1 和 relu5_1 五个层的输出作为这两张图片在 5 个层级(L = 1, 2, 3, 4, 5)的特征图。
当处于某个层级L时,可通过 VGG19 提取出图片S和R对应的特征图 FL和 FLR,对 S 和 R 建立映射。又通过利用概率进行快速匹配的 PatchMatch 算法(https://gfx.cs.princeton.edu/pubs/Barnes_2009_PAR/) ,分别建立了 FL到 FL的映射 ϕLS→R 和 FL到 FL的映射 ϕLR→S
PatchMatch 算法:
(http://vis.berkeley.edu/courses/cs294-69-fa11/wiki/images/1/18/05-PatchMatch.pdf)
但当 L>1 时,特征图的尺寸小于原图,将导致映射关系发生变化。重构的图片在形状、同语义像素等方面添加额外的约束后通过线性回归,可进行局部颜色迁移,以解决丢失部分原有一致性的问题。如尺寸还小于原图,将采用快速导向滤波 Fast Guided Filter(https://arxiv.org/pdf/1505.00996.pdf) 尽可能实现对细节的保留。
by 未来建筑实验室
如何做到更细节化的表现效果?
前面也提到,VGG19 是一个泛用模型, 在某些情况下难以提取有效的语义信息,对于细部还原还有待提升。于是,针对 NCT 我们进行了两方面的改进:1. 特征标准化;2. 增加特征维度。
1. 特征归一化(normalization)
图片 S 对应的特征图FLS形状为(高, 宽, 通道),某种意义上,FL的每个通道代表图片 S 的某一个特征。经过实际对比后发现,在每一个通道上像素值的变化范围出现巨大差异,例如有的通道像素点取值范围在 [-500, +100],有的只在 [-1, +1] 之间。
这可能会导致的情况:特征图 FL的某一通道提取出一种很重要的语义信息,但由于其变化范围过小,从而在 PatchMatch 过程中对结果的影响很小,导致并未在原图 S 和 R 上建立有效映射。
标准正态分布(Standard Normal Distribution)就是解决这个问题的方法之一,对于特征图的每一个通道进行如下操作:
z = (x - μ) / σ
x 为该通道每个像素的值
μ 是该通道所有像素的平均值
σ 为该通道所有像素值的标准差
2. 增加特征维度
为了更好地建立 S 和 R 之间的映射,增加额外特征也是一种有效方法。聚类和语义分割都是补充图片特征的有效方法。

  • 聚类
by未来建筑实验室
S 为建筑日景图,R 为建筑夜景图,层级 L 为 1,聚类产生的簇的数量(number of clusters)为 3。
用 FCL和 FCL代替原来的 FL和 FLR,且仅在 L = 1 时做一次迁移的效果如下:
vs
by未来建筑实验室

通过上面两组图的对比可以看到在加入聚类特征后,仅在最低的层级做一次颜色迁移的效果要比原来从高到低在 5 个层级上做迁移的效果还要好。
  • 语义分割(semantic segmentation)
语义分割模型的作用方式和聚类相似,但它使用了语义分割模型的输出替代了聚类图 CL和 CLR。我们使用的语义分割模型为基于 MIT 的 ADE20K 数据集训练的 PSPNet 模型(https://github.com/Vladkryvoruchko/PSPNet-Keras-tensorflow)。
这种方法的优点在于可以采用训练好的、适用于特定应用场景的语义分割模型,给颜色迁移提供方向性的指导。
越是针对某个垂直领域的应用场景就越需要一个专门针对该场景的语义分割模型。因为不管是在 ImageNet 数据集上训练的 VGG19 还是在 ADE20K 数据集上训练的 PSPNet 相对都是比较泛用的模型,很难满足专业需求。
针对复杂办公场景还需进行更细致的采集和标注,积累到一定的数据量后再选择合适的语义分割模型进行训练,将其作为特征提取模型加入(或者取代) VGG19。

中秋版Demo限时开放,快来体验!
目前,未来建筑实验室初步完成对建筑日夜景转换的研发,还将陆续研发和开放更多的应用场景。
AI日夜景转换-中秋版Demo
限时开放,快来扫码体验,
为建筑披上月色~

关于AI日夜景转换的完整研究文章,可在这里查看: https://blog.xkool.ai/?p=1253 
产业
1
相关数据
重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

推荐文章
暂无评论
暂无评论~