人工智能「 建筑师 」之 由手绘生成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 模型。

(0)

相关推荐