建筑设计会经常遇到出夜景效果图的时候,日夜景的效果转换,临摹勾勒、渲染出图、后期加工...工序繁多。除了对制作工具的熟练,更关键的是需依靠经验判断建筑明暗、光影和颜色等在白天和夜晚的不同状态。
近日,AI 建筑研究团队未来建筑实验室运用之前一项深度学习成果,做到 10 秒内完成日夜景转换,让建筑菜鸟也能快速拥有合格效果图。
第二步,再选择一张目标的夜景图 R (reference);第三步,基于深度学习的色彩算法将在两张图片上对具有相似语义结构(sementic structures)的部分进行颜色迁移,秒速生成一张新的图片 T(target)。它有着 S 的结构和内容,同时具有 R 的颜色风格(即R+S=T)。正值月圆时,研究团队特别推出中秋版 Demo。该版本在完成颜色迁移的基础上,更通过算法在夜景图中添上了一轮明月。等不及看完全文的朋(lǎn)友(rén),可以扫描以下二维码抢先体验:
Neural Color Transfer (下称 NCT)是基于语义信息的对应(correspondence)进行匹配和颜色的迁移,NCT 使用了卷积神经网络来对图片提取特征以便于后续的匹配。在匹配完成后,NCT 使用了一个线性模型,在满足局部和整体一致性的情况下进行优化。在匹配完成后,为了颜色迁移在局部变化和整体上的一致性,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对应的特征图 FLS 和 FLR,对 S 和 R 建立映射。又通过利用概率进行快速匹配的 PatchMatch 算法(https://gfx.cs.princeton.edu/pubs/Barnes_2009_PAR/) ,分别建立了 FLS 到 FLR 的映射 ϕLS→R 和 FLR 到 FLS 的映射 ϕLR→S。(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) 尽可能实现对细节的保留。前面也提到,VGG19 是一个泛用模型, 在某些情况下难以提取有效的语义信息,对于细部还原还有待提升。于是,针对 NCT 我们进行了两方面的改进:1. 特征标准化;2. 增加特征维度。图片 S 对应的特征图FLS形状为(高, 宽, 通道),某种意义上,FLS 的每个通道代表图片 S 的某一个特征。经过实际对比后发现,在每一个通道上像素值的变化范围出现巨大差异,例如有的通道像素点取值范围在 [-500, +100],有的只在 [-1, +1] 之间。这可能会导致的情况:特征图 FLS 的某一通道提取出一种很重要的语义信息,但由于其变化范围过小,从而在 PatchMatch 过程中对结果的影响很小,导致并未在原图 S 和 R 上建立有效映射。标准正态分布(Standard Normal Distribution)就是解决这个问题的方法之一,对于特征图的每一个通道进行如下操作:为了更好地建立 S 和 R 之间的映射,增加额外特征也是一种有效方法。聚类和语义分割都是补充图片特征的有效方法。S 为建筑日景图,R 为建筑夜景图,层级 L 为 1,聚类产生的簇的数量(number of clusters)为 3。用 FCLS 和 FCLR 代替原来的 FLS 和 FLR,且仅在 L = 1 时做一次迁移的效果如下:通过上面两组图的对比可以看到在加入聚类特征后,仅在最低的层级做一次颜色迁移的效果要比原来从高到低在 5 个层级上做迁移的效果还要好。- 语义分割(semantic segmentation)
语义分割模型的作用方式和聚类相似,但它使用了语义分割模型的输出替代了聚类图 CLS 和 CLR。我们使用的语义分割模型为基于 MIT 的 ADE20K 数据集训练的 PSPNet 模型(https://github.com/Vladkryvoruchko/PSPNet-Keras-tensorflow)。这种方法的优点在于可以采用训练好的、适用于特定应用场景的语义分割模型,给颜色迁移提供方向性的指导。越是针对某个垂直领域的应用场景就越需要一个专门针对该场景的语义分割模型。因为不管是在 ImageNet 数据集上训练的 VGG19 还是在 ADE20K 数据集上训练的 PSPNet 相对都是比较泛用的模型,很难满足专业需求。针对复杂办公场景还需进行更细致的采集和标注,积累到一定的数据量后再选择合适的语义分割模型进行训练,将其作为特征提取模型加入(或者取代) VGG19。目前,未来建筑实验室初步完成对建筑日夜景转换的研发,还将陆续研发和开放更多的应用场景。关于AI日夜景转换的完整研究文章,可在这里查看: https://blog.xkool.ai/?p=1253