目录
一、相关工作
输入文本->语义场景图->子场景->子场景增强->增强的子场景与当前场景语义对齐->(拼接)新场景
总体框架: (1)三维场景数据库(知识库) (2)自然语言处理将语言命令转化为场景相关的描述 (3)语言驱动进行场景编辑
核心(SSG):语义场景图
二、场景语义表示
语义场景图是一个无向图,具有带标签的边和两种节点类型:对象节点和关系节点。对象节点表示场景中的对象,并可标注每个对象的属性列表(如 "古董"、"木制")。关系节点表示两个或多个对象之间关系的具体实例(如 "左侧"、"两侧"、"周围")。每条边连接一个对象节点和一个关系节点,并标注对象和关系之间的连接类型。
例如,句子 "圆形餐桌周围摆放着三把椅子,桌子上面有一个花瓶 "的语义场景图。
三、3D场景处理
数据库准备:SUNCG(2984个三维场景)、SceneSynth、SceneNN(88个真实世界建模场景),对于数据库的每个场景建立一个语义场景图,并且学习一个编码对象共现和相对分布的关系模型。
语义场景图:
空间关系列表,定义其中一个物体我们将其中一个物体定义为锚点物体,另一个物体定义为活动物体,并记录活动物体在锚点框架中的相对位置和方向。
关系模型:成对关系排列模型
其中 Oact 是活动对象,Oanchor 是锚对象,r 是它们之间的关系。P(x, y, z, θ ) 是活动对象和锚对象之间的相对位置 [x, y, z] 和方向 θ 的概率分布。
群体关系发生模型:
其中 C(om i , r ) 是用 oi 的 m 个实例观察到的关系 r 注释的场景数量。C(s, r ) 是用 r 注释的场景总数。
对象对的共现概率:
其中 C(om i , on j , r ) 是两个对象的观察计数,其中指定的实例编号共同出现在具有关系 r 的组中。
群体关系的排列模型表示为加权成对排列得分的总和:
其中 O 是组中的对象集; ω 是对应的成对模型 A(oi , oj , r ) 的权重,如果对中的一个对象是锚点,则等于 1;否则 ω 设置为 O(oi , oj , r ),即组中对象实例 oi 和 oj 的共现概率。
关系模型相似性:
其中 Ao 是 A(Oact, Oanchor, r ) 的缩写,Ao' 的定义类似; k(-,-, r ) 是关系 r 的对象对的节点内核:
这里 δcat(o, o′) 是一个狄拉克 delta 函数,如果 objecto 和 o′ 属于同一类别,则返回 1,否则返回 0。kgeo(o, o′, r ) 编码其几何特征的相似性,包括地板高程、边界框高度和体积。
四、自然语言处理
1、文本解析:斯坦福CoreNLP框架(词性标注,并将输入语句转换为依赖关系树)
2、 实体-命令表示法(ECR):场景实体组成内容(类别,属性,数量,关系);命令(限定词,基动词,属性,目标)
提取规则:所有名词都视为实体,除:名词与另一个名词是复合依存关(如 "computer desk "中的 "computer");该名词是一个抽象概念 (如 "additional","appeal");名词代表一个空间区域(例如 "right","side")。所有动词的基本形式都看作命令。
例句:将餐桌周围的椅子移开,将桌子上的一些书籍转移到桌子上
模式匹配:四类场景理解特殊类(空间名词,计数形容词,组名词,形容词性动词)
使用空间名词的模式匹配示例:将为花瓶实体记录“在中心:桌子”关系。
3、规范实体命令表示:由于同样的场景有不同得表达方式,造成场景表现方式不一样,我们通过一组模式匹配规则来执行。例如:我们希望检测 "in center of "关系,该关系用于连接花瓶和桌子实体。
名词修饰语 : in(花瓶,中心)
名词修饰语 :of(中心,桌子)
相关词类有:in=介词,of=介词,vase=名词,center=空间名词,table=名词。该规则的通用模式为
•名词修饰语:<X,介词>(<A,名词>, <B,空间名词>)
•名词修饰语:<Y,介词>(<B,空间名词>, <C,名词>)
关系类型 "X B Y "应用到名词A和C所代表的实体上。通过这种方式,我们可以处理许多类似的模式,例如 "书在书架的顶端"
4、转换为语义场景图:通过实体-命令表示很容易转化成语义场景图。
(1)基础名词映射到类别:去除未映射得实体,属性和限定词作为注释添加到对象节点中。
(2)实体计数:对于不精确的限定词(“许多”,“一些”等),首先通过检查场景数据库并计算出现 2 个或更多的类别,对于每个计数修饰符,我们使用该分布来获得该修饰符-类别对所隐含的计数的下限和上限,然后从该分布中均匀采样。
(3)限定词:如 "每个 "和 "所有",意味着多个对象节点的存在,在完成之前当单个对象使用。
(4)关系:ECR 中的关系直接转移到 SSG 中的关系节点。边标签由ECR中关系的方向性决定。
五、语言驱动的场景编辑
1、子场景检索和增强检索:Tg与Dg对齐->Sg列表(按与Tg匹配分数排序)
文本-场景图对齐:Tg的节点代表用户明确希望出现在预期场景中的对象或关系。将这些节点与每个Dg节点对齐,以找到与候选子场景最匹配的节点(图中的蓝色节点),Dg的一个节点只能与Tg的一个节点对齐。
对齐指标:
这里 Ni 和 Nj 分别是来自 Tg和 Dg 的节点;如果 Ni 和 Nj 对齐,M(Ni , Nj ) 等于 1,否则为 0。
场景图增强:Tg 中的某些节点可能未对齐,因为缺少对象实例,或者数据库场景不满足某些关系。则添加新对象到检索到的Sg中—>得到了一个 Sg(图中没有黄色节点和相关边的图),所有节点和边与 Tg 完全对齐。
由于组关系节点仅基于锚对象对齐,我们根据出现和共现模型进一步合成组中活动对象的节点,并将它们的连接添加到锚对象中。由于合成的对象节点不对应于固定的对象实例,如果同一类别的对象出现在当前场景中,我们使用相同的对象模型;否则我们根据其类别从数据库中随机采样对象模型。
场景上下文增强:自然语言没有最终描述对象及其关系。支持父节点不存在于检索到的 Sg 中,我们在原始 Dg 中找到它的父节点,并将相关节点添加到子图Sg中。或者基于相关对象的共现概率 w.r.t 编码在 Sg 中的初始对象来丰富子场景。计算两个对象类别的共现概率,而关系 r 仅限于兄弟,即我们只考虑在通过对象共现引入场景上下文时由同一父对象支持的对象。将共现概率大于上下文控制参数 α 的对象添加到子图中。
(a) 输入场景及其图 Ug ;(b) 输入文本及其图 Tg ;(c) 使用蓝色显示的对齐节点的文本检索到的数据库场景和 Dg; (d) 从 Dg 中提取的子场景 Sg与合成节点(橙色)和上下文丰富的节点(黄色);桌子用红色表示,因为它与 (a) 中的桌子对齐; (d) 通过使用桌子作为锚对象将子场景的对象转换为当前场景来更新场景。
2、子场景调整:场景图对齐与合并->布局调整 由于新插入的对象带有的位置与当前场景中的对象位置冲突,调整当前场景对象的位置以满足插入编码。
布局分数:
这里 L(o) 是碰撞惩罚项,如果 o 与场景中的任何对象相交,则返回 0,否则返回 1; H (o) 是定义的悬垂惩罚项,以防止悬挂在支撑表面的边缘。R(o) 包括 o 的所有显式和隐式关系约束:
其中 E 包含来自文本的显式关系,OE 是 E 中涉及的对象集,A(o, oi , r ) 表示 o 的成对排列分数; OU 是当前场景中的对象集,AI (o, oi ) 是 o 和 oi 之间的相对关系先验;ω 在我们当前的实现中设置为 0.7,以更多地关注显式约束。通过考虑组中每个对象的碰撞和悬垂惩罚来扩展组关系的布局分数,并将公式 9 中显式关系的成对排列模型替换为组排列模型 A(O, r )。
通过动词命令进行场景编辑:如果 Tg 包含一个动词节点,我们直接将其相关节点与当前 Ug 对齐以找到锚点和目标对象。我们定义了一组基于常用动词的函数用于场景修改:Replace(A)、Move_to(A、B)、Move_on(A、B)、Move_closer(A、B)、Move_apart(A、B)、Delete(A)、Rotate(A、degree)、Scale(A、value),其中A是动词命令的目标对象或对象,B是锚对象。
3、建议界面设计:提供一个提示界面与用户双向通信。(建议的场景满足Tg中的约束)