人工智能「 建筑师 」之 由手绘生成3D模型
这是论文《 Interactive Sketching of Urban Procedural Models 》的解读,主要以解读实现思路为主。
*
使用流程:
根据用户勾画的草图,系统自动生成3D的建筑模型。
a)用户简单勾画建筑物某个组件的轮廓
b)基于深度学习,系统找到匹配预定义的组件集(论文称为 Snippet Grammar )
c)用户从匹配到的组件集中挑选合适的组件 (系统转化为 Snippet Grammar 的形式)
d)系统合成用户的选项(组装 Snippet Grammar ),生成建筑 3D 模型
*
基于参数的描述性语言:
论文提出的 Snippet Grammar ,是基于参数的描述性语言,非常容易转化为机器学习训练所需要的数据形式。按照建筑物的构成划分为 Building mass 、Roof 、Window 、Ledge 等几类组件集,Snippet Grammar 则描述了 3D 模型所属的组件集及其参数集合。
例如,建筑物 3D 模型的描述:
<!— 某个Building mass的3D模型 —>
<param building_height=“20” />
<rule name=“Start”>
<extrude height=“building_height” />
<comp>
<top name=“TopFace” />
<!- -roof - - >
<side name=“Facade” />
<!- - facade - - >
<bottom name=“Base” />
</comp>
</rule>
<!— 某个Roof的3D模型—>
<param roof_slope=“50” />
<rule name=“TopFace”>
<roofGable slope=“roof_slope” />
</rule>
Snippet Grammar 非常像 HTML 标签语言,也类似于 RDF/RDFS ,资源描述框架( RDF )是用于描述网络资源的 W3C 标准,比如网页的标题、作者、修改日期、内容以及版权信息。
我们可以把设计的规则转化为 Snippet Grammar,然后再转化为图片与 Gi 作为 CNNs 的输入数据。
*
实现思路:
1 分类标签
图为分类标签示例
按照建筑物的构成划分为 Building mass、Roof、Window、Ledge 等几类组件集;
2 3D 模型参数化
每一个建筑物组件 3D 模型使用 Snippet Grammar 描述;
3 生成训练数据
每一类组件集参数随机变化形成许多的 3D 模型;把生成的每一个 3D 模型对应的图片(草图),及 Snippet Grammar 保存下来。
4 训练数据处理
共2组训练数据,分别为:
(草图,分类标签),用于判断草图属于哪一个标签(分类问题);
(草图, Snippet Grammar ) ,定义为 Gi = { α, τ, η, ρ } ,用于估计草图的参数组合;
5 CNNs训练标签分类模型:
使用(草图,分类标签) 作为输入,基于 CNNs 训练分类模型,建立(草图,分类标签)之间的映射关系。相当于告诉机器哪张图属于建筑物的哪个组件(属于 window 还是 roof 等)。
6 CNNs训练各个标签下的参数分类模型:
图为building mass的示例
使用(草图,Gi )作为输入,建立某一标签下草图对应的参数之间的映射关系。相当于,告诉机器,在 building mass 标签(或其他标签)下,这张草图属于那一组参数。
7 应用:
当用户输入新的草图图片时,模型判断属于哪个分类标签,并返回最可能的 Gi 集合给用户,最后再根据用户选择的Gi 对应的 Snippet Grammar ,生成 3D 模型。