目录

目录

part/structure-aware shape representation


category dense shape correspondences

自监督/无监督地学习形状相关性/结构共性

<DIF> Deformed implicit field: Modeling 3d shapes with learned dense correspondence
 

Motivation

  • 把每个具体instance shape表达为一个template的shape的deformation
  • 用deformation field建立起 shape correspondence,这样就可以做texture transfer、label transfer等
  • https://longtimenohack.com/posts/paper_reading/2021cvpr_deng_deformed/image-20201222155438709.png

overview

  • 用一个超网络从code预测DeformNet \(D\)的参数;
    然后在空间中的每一处,从同一个template SDF,DeformNet \(D\)产生位置修正\(v\)与标量距离修正\(\Delta s\),总共4维输出
    即最终的\(p\)点处的SDF值为:\(s=T(p+v)+\Delta s=T(p+D^v_{\omega}(p))+D^{\Delta s}_{\omega}(p)\)
    注意变形向量\(v\)其实反映的是从shape instance场 到 template 场所需的变形向量
    https://longtimenohack.com/posts/paper_reading/2021cvpr_deng_deformed/image-20201222153322051.png

losses

SDF loss

  • 被训练的量:变形场超网络\(\Psi\),SDF输出场\(\Phi\),模板场\(T\),learned latent codes \(\{\alpha_j\}\)\(\Psi_i(p)\)代表predicted SDF值\(\Phi_{\Psi(\alpha_i)}(p)\)\(\Omega\)代表3D空间,\(\mathcal{S}_i\) 代表形状表面
    • \(\Phi_{\Psi(\alpha)}(p)=T(p+D_{\Psi(\alpha)}^v(p)) + D_{\Psi(\alpha)}^{\Delta s}(p)\)
  • \(L_{sdf}=\underset {i}{\sum} \left( L_1 + L_2 + L_3 + L_4 \right)\)
    • \(\underset {p \in \Omega}{\sum} \lvert \Phi_i(p)-\overline{s}\rvert\) 代表预测SDF和正确SDF的误差
      • \(p \in \Omega \) 这里是在3D空间中采样
    • \(\underset{p\in \mathcal{S}_i}{\sum} (1-\langle \nabla\Phi_i(p), \overline{n} \rangle)\) 代表预测法向量和正确法向量的误差(角度误差,用夹角余弦应接近1来表达)
      • \(p \in \mathcal{S}_i\),这里是在表面上采点
    • \(\underset{p\in\Omega}{\sum} \lvert \Vert \nabla\Phi_i(p) \rVert_2 - 1 \rvert\) 代表预测法向量的模应该是1 (因为是SDF)
      • \(p \in \Omega \) 这里是在3D空间中采样
    • \(\underset{p\in\Omega \backslash \mathcal{S}_i}{\sum} \rho(\Phi_i(p)), \;where \; \rho(s)=\exp(-\delta \cdot \lvert s \rvert), \delta \gg 1\) 代表对 SDF值靠近0非表面 点的惩罚;
      • \(\delta \gg 1\)就代表只有靠近0的时候这项loss才有值
        • Q: 类似一种负的L0-norm ?
      • 详见 (SIREN) Implicit neural representations with periodic activation functions. NeurIPS2020 论文

正则化

  • regularization loss to constrain the learned latent codes: \(L_{reg}=\underset{i}{\sum} \lVert \alpha_i \rVert_2^2\)
  • 可以用一些其他更强的正则化,比如VAE训练时用的 最小化latent code后验分布和高斯分布的KL散度

normal consistency prior 法向量一致性先验

  • 考虑到表面点和语义 高度关联:e.g. (在canonical space假设下)车顶总是指向天空,左车门总是指向左侧
  • 因此,让相关的点的法向量互相一致
    • 鼓励 模板场中的点处的法向量 和 所有给定shape instance 中的相关点 处的法向量 一致
    • \(L_{normal}=\underset{i}{\sum} \underset{p\in\mathcal{S}_i}{\sum} \left( 1 - \langle \nabla T(p+D_{\omega_i}^v (p)), \overline{n} \rangle \right)\)
    • 即让模板场中的 对应位置p的点 和 真值法向量保持一致
    • \(p \in \mathcal{S}_i\),这里是在表面上采点
    • 如果没有标量修正场,模板场对应位置p的点处的法向量就是 最终输出场的法向量,和\(L_{sdf}\)的第2项一样
      • Q: 以下为笔者猜想。有待代码检查验证。
      • 变形后的形状shape instance场中的点坐标是\(p\),模板场中的 相关 点坐标是 \(p+D_{\omega_i}^v (p)\)
      • 相关 点处的法向量 其实是\(\nabla_{p+D_{\omega_i}^v (p)} T(p+D_{\omega_i}^v (p))\),而非\(\nabla_p T(p+D_{\omega_i}^v (p))\)
      • \(L_{sdf}\)第2项是\(\nabla_p\Phi_i(p)=\nabla_p \left( \quad T(p+D_{\omega_i}^v (p)) \; (+D_{\omega_i}^{\Delta s}(p)) \quad \right)\)
      • 即其主要是强调 模板场 和 变形后的形状实例场 中 相关点处的 两个场的法向量保持一致性
      • 其实应该是\(\nabla_{p+D_{\omega_i}^v (p)} T(p+D_{\omega_i}^v (p))\)\(\nabla_p\Phi_i(p)\)的夹角,而不是和\(\overline{n}\)的夹角;
        只不过\(\nabla_p\Phi_i(p)\)就是\(\overline{n}\)的近似,所以用\(\overline{n}\)也可

deformation smoothness prior 变形平滑先验

  • 鼓励平滑的变形、防止巨大的形状扭曲,引入一个对变形场的平滑loss
  • \(L_{smooth}=\underset{i}{\sum} \underset{p\in\Omega}{\sum} \underset{d\in{X,Y,Z}}{\sum} \lVert \nabla D_{\omega_i}^v \vert_d (p) \rVert_2\)
    • ✔️ \(\begin{pmatrix} \frac{\partial v_x}{\partial x} \\ \frac{\partial v_x}{\partial y} \\ \frac{\partial v_x}{\partial z} \end{pmatrix}\), \(\begin{pmatrix} \frac{\partial v_y}{\partial x} \\ \frac{\partial v_y}{\partial y} \\ \frac{\partial v_y}{\partial z} \end{pmatrix}\), \(\begin{pmatrix} \frac{\partial v_z}{\partial x} \\ \frac{\partial v_z}{\partial y} \\ \frac{\partial v_z}{\partial z} \end{pmatrix}\)
      • \(v = \begin{pmatrix} v_x \\ v_y \\ v_z \end{pmatrix} =D_{\omega_i}^v(p)\) 函数看作3个标量函数构成的向量值函数,每个标量值函数有自己的梯度式
    • \(\begin{pmatrix} \frac{\partial v_x}{\partial x} \\ \frac{\partial v_y}{\partial x} \\ \frac{\partial v_z}{\partial x} \end{pmatrix}\), \(\begin{pmatrix} \frac{\partial v_x}{\partial y} \\ \frac{\partial v_y}{\partial y} \\ \frac{\partial v_z}{\partial y} \end{pmatrix}\), \(\begin{pmatrix} \frac{\partial v_x}{\partial z} \\ \frac{\partial v_y}{\partial z} \\ \frac{\partial v_z}{\partial z} \end{pmatrix}\)
  • penalizes the spatial gradient of the deformation field along X, Y and Z directions.
    惩罚变形场函数沿着X,Y,Z方向的空间梯度
  • \(p \in \Omega \) 这里是在3D空间中采样

minimal correction prior

  • 鼓励形状表征主要是通过 形变场,而不是通过标量修正
  • \(L_c=\underset{i}{\sum} \underset{p\in\Omega}{\sum} \lvert D_{\omega_i}^{\Delta s}(p) \rvert\) 惩罚标量修正L1大小
  • \(p \in \Omega \) 这里是在3D空间中采样

total

  • \(\underset{\{\alpha_j\}, \Psi, T }{\arg\min} L_{sdf} + w_1 L_{normal}+w_2 L_{smooth}+w_3 L_c + w_4 L_{reg}\)
    \(L_{sdf}\)中的4项:3e3, 1e2, 5e1, 5e2
    \(w_1=1{\rm e}2, w_2=\{1,2,5\}, w_3=\{1{\rm e}2, 5{\rm e}1\}, w_4 = 1{\rm e}2\)

相关性 uncertainty measurement

  • 两个物体\(\mathcal{O}_i\)\(\mathcal{O}_j\)之间的 相关性 可以通过在 template space中进行 最近邻搜索 来建立;
    • Q: 最近邻不会出现错误的相关性么?
      • 考虑应该尽量鼓励标量修正为0,主要通过位置修正,当出现因结构改变而发生的实在无法反映的形状变化时,才用标量修正
      • 文中的minimum correction prior已经在做这个事
  • 假设物体\(\mathcal{O}_i\)(表面)上一点\(p_i\),通过最近邻搜索找到了点\(p_i\)在物体\(\mathcal{O}_j\)相关的(表面上的)一点\(p_j\)
    • 那么二者之间相关性的不确定性可以通过一个simple yet surprisingly-effective的uncertainty metric评估:
    • \(u(p_i,p_j)=1-\exp(-\gamma \lVert (p_i+v_i) - (p_j+v_j) \rVert_2^2)\)
      • 其中\(v_i=D_{\omega_i}^v(p_i)\) 是点上的变形向量;是从 shape instance space到 template space的\(\Delta\)
      • \(\lVert (p_i+v_i) - (p_j+v_j) \rVert_2\)其实就是这对相关点\(p_i\)\(p_j\)在template space下的距离
    • 不确定性大的区域 comform well to 形状之间的 structure discrepancy 结构不符
      下图展示的是形状A(表面)上的点,在形状B(表面)上找到的相关的点的不确定性;红色高不确定性,蓝色低不确定性
      https://longtimenohack.com/posts/paper_reading/2021cvpr_deng_deformed/image-20210104200614483.png

results

  • texture transfer
    https://longtimenohack.com/posts/paper_reading/2021cvpr_deng_deformed/image-20201222155357538.png
    https://longtimenohack.com/posts/paper_reading/2021cvpr_deng_deformed/image-20210104173728589.png
  • label transfer:可以看到对于 椅子把 这种时有时无的结构也可以handle
    https://longtimenohack.com/posts/paper_reading/2021cvpr_deng_deformed/image-20201222155611605.png

Ablation study / discussions

  • 单纯的位置修正就已经可以构成变形场;但是本篇发现,仅仅位置修正不够,加入标量修正可以:
    • ① 加入标量修正对生成所需shape有帮助
      • https://longtimenohack.com/posts/paper_reading/2021cvpr_deng_deformed/image-20210104165611897.png
    • ② 实验发现 加入标量修正对于学习高质量的相关性也很重要
      • Q: why ?
        试图解释:标量修正可以控制形状的一部分 特征: 膨胀结构/拓扑改变?,从而更容易学到简单、plausible的对应关系?
        • Q: 类似CGAN中,用一个随机噪声z控制一些"不想要"的特征?
        • Q: 除了标量修正这种控制"额外"/"不想要"的特征的方式以外,可否设法引入其他方式控制其他"不想要"的特征?
  • template implicit field ≠ template shape
    • template implicit field并不是template shape;甚至都不是valid SDF
    • instead,template implicit field 捕捉的是 一个category中不同物体的shape 结构
    • 在实验中,发现如果loss不合适的情况下,template implicit field degenerates to a valid shape SDF representing a certain shape, 导致重建的 精确度下降相关性降低
  • 几个training loss对结果的影响
    https://longtimenohack.com/posts/paper_reading/2021cvpr_deng_deformed/image-20210104120743115.png

implementation details

  • 网络结构
    https://longtimenohack.com/posts/paper_reading/2021cvpr_deng_deformed/image-20210104121544233.png
<DIT> Deep implicit templates for 3D shape representation
 

review

  • 这种变形场类方法,最大的问题应该在于当 层级结构 / 拓扑 发生大的改变时,这种很大程度由位置决定的对应关系是否无法准确反应结构上的变化,从而导致degenerates的行为
  • deformed implicit field 思路很像,那篇也是清华的
    • deformed implicit field 除了位置修正外还有标量\(\Delta s\)修正;本篇只有位置修正
      • deformed implicit field在表面上的点变形后不一定还在表面上;需要用 最近邻算法 来计算变形后的形状相关点的位置
      • 本篇在表面上的点,变形后一定还在表面上(变形前后的点的SDF值均为0)
    • deformed implicit field 是一个超参数网络,从code得到位置修正、\(\Delta S\)修正的网络 参数;本篇是一个LSTM,输入code+p输出位置修正
    • 对于模板的理解与deformed implicit field 完全不同:
      • deformed implicit field认为模板是一种对类别中形状公共捕捉/“存储”,甚至模板本身不一定是一个valid SDF
      • 本篇认为模板就是一个valid shape,甚至可以选择数据集中的某个具体物体形状作为模板(user defined templates
    • 📌 对于structure discrepancy结构差异性的考虑,本篇不如deformed implicit field.
      • deformed implicit field有考虑用一个标量修正来cover一定的结构修改;位置修正只包括形状修改
      • 而本篇把结构修改和几何修改全部都用位置变化来cover
        • 比如下图,仔细看最上面一行chair的关键点,其实就是有问题的:最左边的chair,黄色的点是【可以坐的区域 / 椅面的边缘】,而最右边的chair,黄色的点是【沙发把手的边缘】;这显然**在语义上就不是相关的两个点**
          https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20210111155948737.png
  • 因为有很多谨慎的设计(1. 使用LSTM warp而不是MLP warp 2.对canonical的正则化 3. 对空间扭曲的正则化),从transfer的效果上看要比deformed implicit field好一些?
    效果不如deformed implicit field
本篇:Deep Implicit Templates for 3D Shape Representationdeformed implicit field
texture transferhttps://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229180439537.pnghttps://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229180759966.png
label transferkeypoint detection PCK accuracy
https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20210104120316992.png
label transfer IOU banchmark
https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20210104114757341.png
细节对比:本篇结果出现了错误的语义对应https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20210116172741451.pnghttps://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20210116172801005.pnghttps://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20210116173201127.png

Motivation

  • 把一个具体shape表征为 conditional deformations of a template,建立起 category level 的dense correspondence
    注意是 conditional deformations,相当与Deformed NeRF那篇,有一个deformation code
    https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229171836408.png
  • 把一个条件空间变换 分解为 若干个仿射变换
  • training loss经过谨慎设计,无监督地保证重建的精度 + plausible template

overview

  • https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229171755900.png
  • https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229173256894.png
  • warping函数把首先把一个点p映射到一个canonical position ,然后在模板SDF中query这个canonical position来获取SDF值
  • 照搬原DeepSDF训练是不行的:尤其容易学出一个过分简单的template和过拟合到一个复杂的transformer(这里译作变换器更合适),最终带来不准确的correspondence
  • 目标:
    • 一个最优的template,能够表达一组物体的公共结构
    • together with a 空间变换器,能够建立精确的稠密的相关性
    • 学到的模型应保留DeepSDF的表达能力和泛化能力,因此支持mesh补间和形状补完

spatial warping LSTM

  • 实践发现用MLP来表达warping function不太合适:
    • Q: 考虑理论上的原因
    • MLP和LSTM作warping的对比:warping的补间
      https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229172212443.png
  • 把一个点的空间变换表示为多步仿射变换:
    • \((\alpha^{(i)},\beta^{(i)},\phi^{(i)},\psi^{i})={\rm LSTMCell}(c,p^{(i-1)},\phi^{(i-1)},\psi^{(i-1)})\)
    • 其中\(\phi\)\(\psi\)是输出和cell state,\(\alpha\)\(\beta\)是仿射变换的参数,角标\((i)\)代表迭代的i-th step
    • \(p\)的更新:\(p^{(i)}=p^{(i-1)}+(\alpha^{(i)} p^{(i-1)}+\beta^{(i)})\)
    • 迭代重复S=8次,得到最终的warping的输出
  • 训练loss
    • reconstruction loss
      • 因为warping函数是迭代的,从 Curriculum deepsdf, Yueqi Duan et al.2020得到启发,用progressive reconstruction loss
      • https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229175034719.png
    • regularization loss
      • point-wise regularization
        • 认为 所有 meshes都normlized 到一个单位球,并和canonical pose对齐
        • 因此,引入一个逐点的loss,通过 ==约束每个点的在warping前后的变化== 来实现这种正则化
        • https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229175243291.png
        • Huber kernel:原点附近是二次函数,以外是线性函数
        • Q: 这样似乎只能保证canonical pose对齐,并不能保证canonical space具有单位大小
          • A: 笔者推测:用泛泛的位置变化的大小,来提供一种对所有物体的表征都处于canonical pose的约束;
      • point pair regularization 对空间扭曲程度的限制
        • 尽管deform时空间扭曲是不可避免的,极端的空间扭曲还是可以避免的
        • https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229175618093.png
        • 其中,\(\Delta p=T(p,c)-p\)是点p的position shift,
          \(\epsilon = 0.5\)是控制扭曲容忍度的参数,对于防止shape collapse(形状崩塌,指学到过于简单的shape template)很关键
        • 笔者理解:距离越接近的一对点,position shift的差距(大小差距)应越小;即,距离越接近的一对点,变形的差距应越小
          • Q: 考虑这里只有模的差距?如果考虑方向的差距,是否对法向量也会有一定的约束?
            A: 注意这里是"位移向量"的方向差距,不是"法向量"的方向差距
        • 下图是在有无此loss的情况下学到的template;
          可见,如果没有point pair regularization,会学到过于简单的template
          https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229175909233.png

results

  • 形状补间的效果:
    https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229180146944.png
  • 因为已经建立起了shape correspondense,可以做关键点检测的迁移
    https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229180103315.png
  • 应用:texture transfer,等
    https://longtimenohack.com/posts/paper_reading/2021cvpr_zheng_deep/image-20201229172342590.png
Learning implicit functions for topology-varying dense 3D shape correspondence
 

Motivation

  • 给定一组3D shapes(点云),category-specific model 无监督地学出逐pair(source 与target之间)的correspondence和部件segmentation
  • 即使拓扑不一样也能学到相关性
  • correspondence相关性分数输出
    https://longtimenohack.com/posts/paper_reading/2020nips_liu_learning/image-20201229144020259.png

Overview

shape analysis

<IP-Net> Combining implicit function learning and parametric models for 3d human reconstruction
 

Motivation

  • keypoint 1:不是inside / outside两类区分的单层表面,而是 inside the body (R0), between the body and clothing (R1), outside the clothing (R2) 3类区分的双层表面
    https://longtimenohack.com/posts/paper_reading/2020eccv_bhatnagar_combing/image-20201229100344345.png
  • keypoint 2
    • 隐函数类的方法可以产生任意分辨率的细节,但是一般是static的不能控制
    • 建立和parametric body model (SMPL)的相关性,可以对预测出的implicit surface register注册 SMPL+D ,让预测出的implicit representation 可以控制
      https://longtimenohack.com/posts/paper_reading/2020eccv_bhatnagar_combing/image-20201229101504269.png

overview

  • 输入一个稀疏点云(来自有关节、不同形状、不同pose、不同clothing的人类),一个occupancy predictor估计R0,R1,R2,一个multi-class classifier 估计part label(人的14类part)
    https://longtimenohack.com/posts/paper_reading/2020eccv_bhatnagar_combing/image-20201229102312212.png
    • 使用Marching Cubes从predict出的implicit functions产生mesh surface(内表面,外表面)
  • 把IP-Net的predictions注册到SMPL人类模型
    • optimization-based ,最优化SMPL的参数来fit 内表面预测 \(\mathcal{S}_{in}\)
    • 额外利用IP-Net预测出的part-labels,来保证SMPL的不同部件的mesh能正确解释对应部件的surface区域
  • 同样的idea还可以generalize to 3D hands
    • https://longtimenohack.com/posts/paper_reading/2020eccv_bhatnagar_combing/image-20201229103342683.png

structured models

模型自身带有一定的结构性

k-components (self-supervised)

定义k个模型块,纯粹无监督地试图从数据中学习不同地部件

<BAE-NET> BAE-NET: Branched autoencoder for shape co-segmentation
 

Review

  • Learning Implicit Fields for Generative Shape Modeling (CVPR2019) 的续作,inside / outside indicator作为shape表征

Motivation

  • 把形状的 co-segmentation 看做表征学习问题
  • 可以无监督、弱监督、one-shot learning,只需要用几个exemplars,就可以在shape 分割任务上好过在分割shape上训练的SOTA
  • 无监督的 co-segmentation
    https://longtimenohack.com/posts/paper_reading/2019iccv_chen_bae/image-20201229094035378.png

overview

  • 就是在Learning Implicit Fields for Generative Shape Modeling 的基础上,从原来的单个inside / outside indicator变成 k 个inside / outside indicator (branched output, one neuron each) ,然后在最后max pooling 把几个neuron compose在一起。
  • https://longtimenohack.com/posts/paper_reading/2019iccv_chen_bae/image-20201229095002537.png
  • 让网络 “自动” 学出来一个个natural shape的neuron;没有强制保证
    https://longtimenohack.com/posts/paper_reading/2019iccv_chen_bae/image-20201229095340266.png
<BSP-Net> Bsp-net: Generating compact meshes via binary space partitioning
 

review

  • IM-Net同作的续作
  • 效果很好;但是对于thin-structure表现不佳

Motivation

  • take inspiration from binary space partitions,学到更compact / 紧致 / low-poly的mesh表征
    https://longtimenohack.com/posts/paper_reading/2020cvpr_chen_bsp/image-20201229112704532.png

overview

  • 依旧是输入point坐标 + shape code condition,输出inside / outside;
  • 不同之处在于构造的内部模型是n个平面方程,靠n个这样的binary space partition的组合来表征shape
  • 靠binary partition的组合来表达shape的示意图:
    首先组合出一个个的convex凸包,再组合成 whole shape
    • 其实做的事情本质上类似于把MLP+ReLU的空间线性划分过程显式化,不过这里的convex的概念值得思考
示意图网络结构
https://longtimenohack.com/posts/paper_reading/2020cvpr_chen_bsp/image-20201229113148367.pnghttps://longtimenohack.com/posts/paper_reading/2020cvpr_chen_bsp/image-20201229113341539.png

few shot segmentation

  • 因为同category的shape的convex组合之间已经建立起了correspondence,只需要手动给几个shape标一下convex id对应的part label,就可以利用correspondence获得其他同category shape的标注
    https://longtimenohack.com/posts/paper_reading/2020cvpr_chen_bsp/image-20201229113640866.png

results

  • https://longtimenohack.com/posts/paper_reading/2020cvpr_chen_bsp/image-20201229113556212.png
  • https://longtimenohack.com/posts/paper_reading/2020cvpr_chen_bsp/image-20201229114054936.png
Neural star domain as primitive representation
 

Motivation

  • Reconstructing 3D objects from 2D images + structured reconstruction
  • https://longtimenohack.com/posts/paper_reading/2020arxiv_kawana_neural/image-20201229115853741.png
  • https://longtimenohack.com/posts/paper_reading/2020arxiv_kawana_neural/image-20201229115906619.png

overview

  • https://longtimenohack.com/posts/paper_reading/2020arxiv_kawana_neural/image-20201229120028285.png

part structure

结合一定的给定的部件语义(如利用视觉部件分割好的结果)

  • PartNet
  • StructureNet
Dsm-net: Disentangled structured mesh net for controllable generation of fine geometry
 

Motivation

  • 把structure(topology)和geometry进一步解耦,in a synergistic manner
  • https://longtimenohack.com/posts/paper_reading/2020arxiv_yang_dsm/image-20201217154222663.png

Overview

  • 用Recursive Neural Networks(RvNNs, 注意RNN是recurrent NN) hierarchically encode和decode structure和geometry,在hierarchy的每一层都有bijective mapping
    https://longtimenohack.com/posts/paper_reading/2020arxiv_yang_dsm/image-20201217155349248.png
  • 同时用两个分开的但是高度耦合的VAE学习structure 和geometry,把他们encode into two latent spaces

disentangled shape representation

structure hierarchy抽象出符号部件(symbolic parts)与关系

  • inspired by PT2PC: Learning to Generate 3D Point Cloud Shapes from Part Tree Conditions. 2020
  • 每个部件用semantic label (e.g. chair back, chair leg)表示,引入PartNet dataset中丰富的部件关系
    • \(\boldsymbol{\rm H}\) 纵向的parent-child inclusion 关系 (e.g. chair back and chair back bars)
    • \(\boldsymbol{\rm R}\) 横向的among-sibling 部件对称性与邻接性(e.g. chair back bars have translational symmetry)

geometry hierarchy是部件的geometry

  • 表征就是正常的多顶点mesh
  • 假设一个5402顶点构成的封闭mesh,计算oriented bounding box
  • 然后通过non-rigid registration 变形这个mesh到target part geometry
  • 然后用ACAP作为部件表征
    • Sparse data driven mesh deformation. 2019
    • SDM-NET: Deep Generative Network for Structured Deformable Mesh. 2019

structure hierarchy和geometry hierarchy之间有bijective mapping

  • 符号部件 \(l_i\) 对应部件geometry \(G_i\) ,层级 \(\boldsymbol{\rm H}\) 和关系 \(\boldsymbol{\rm R}\) 则隐式地互相一致
    • 在学习的时候两个hierarchies有communication channels
  • 虽然结构和几何要解耦,但是他们还是需要彼此兼容来产生好的、现实的形状
    • 一方面,shape structure 为 part geometry提供high-level guidance
      • e.g. 如果four legs of a chair对称,那么他们应该具有identical part geometry
    • 另一方面,给定part geometry以后,只有若干种适用的shape structures(而不是全部)
      • e.g. 如果没有lift handle或者gas cylinder parts,不可能组装一个swivel chair

conditional part geometry VAE

  • encode和decode时候都condition on part structure information
  • https://longtimenohack.com/posts/paper_reading/2020arxiv_yang_dsm/image-20201217162903345.png

Disentangled Geometry and Structure VAEs

  • 下图蓝色代表geometry,红色代表structure
    encoding的时候,从geometry和structure feature encode出geometry
    decoding的时候,从geometry和structure feature decode出geometry
  • https://longtimenohack.com/posts/paper_reading/2020arxiv_yang_dsm/image-20201217162351563.png
  • Q: what?

results

  • https://longtimenohack.com/posts/paper_reading/2020arxiv_yang_dsm/image-20201217163302020.png
Compositionally generalizable 3D structure prediction
 

Review

  • 思路、框架清晰;carefully designed subproblems
  • 可解释性很强,不是随随便便拿来GCN胡乱用一下
  • 部件表征:cuboids

Motivation

  • 学到不同物体、不同物体类别之间那些公共的部件、部件间的关系、连接
  • 把整个物体的shape生成问题转为几个子问题的组合
  • 关注的是逐part pair的相对位置的预测
  • https://longtimenohack.com/posts/paper_reading/2020arxiv_han_compositionally/image-20201217094300461.png

overview

  • 用geometry primitives来代表部件(具体来说,oriented bounding cuboids,长方体),每个部件有 \(p_i=[c_x,c_y,c_z,s_x,s_y,s_z,q]\)
    • 遵循StructureNet的设定
      Structurenet: Hierarchical graph networks for 3d shape generation 2019
  • 所有模块都是有监督的;part真值来自于PartNet的3D labels
  • 步骤:
    • MaskRCNN来提取部件instance mask
    • identify parallelism for part pairs,对每组平行的部件预测他们共享的edge direction
    • identify translational symmetry within part pairs,对每组平动对称的部件预测他们共享的edge length
    • 预测部件pairs之间的连接性,提取一个基于连接性的部件树
    • 预测邻接部件的相对位置,在遍历部件树的时候组装整个形状
  • [isolation principle] 重度依赖部件masks作为模块的输入来引起对局部区域的关注
  • [relativity principle] 依赖于pairwise关系
  • https://longtimenohack.com/posts/paper_reading/2020arxiv_han_compositionally/image-20201217094400096.png

==relative position prediciton==

  • 从root part开始,逐pair地添加other parts
  • 很多过去的工作都是估计在相机坐标系下的绝对位置,或者是一个(类别级别先验)canonical space下的pose
  • 然而,绝对位置对于shape scale敏感,对optical axis的平动也很敏感,对于简单的类别内预测的表现都很差

Connectivity-based Part Tree:追求通过strong pairwise relationships来组装parts

  • 主要用的是基于连接性的关系
  • 首先识别空间上接触的部件pair,然后预测他们之间的相对位置
  • 选择【接触关系】原因:
    • 接触的部件空间上接近,互相之间有strong arrangement constraints
    • 当没有遮挡情况下,评估两个部件有没有接触在图像上都不太难,并不需要类别级别的知识
    • 这种关系非常普遍
    • 对于新类别的物体也可以很好地迁移
  • ==思考==
    • 这里的想法和我们非常一致,我们扩展到更多类型的关系应该就可以实现
  • 主要方法
    • 训练一个连接性分类器,预测parts pair是否在原来的3D shape 互相接触
    • 用连接性类构建一个part tree
      • 首先构建一个连接图,把连接性分数高的pair连接起来
      • 然后贪婪地构建一个spanning tree
        • 具体:通过预测出的大小,选最大的part作为root node,然后迭代地选剩下的最大的部件连到当前树上
        • 如果图中包含多个连接起来的components,那就构建part forest

joint-based relative position 逐pair预测相对位置

  • instead of 直接预测两个center的相对位置,基于接触点来用上更强的位置先验
  • 接触点必须位于每个部件的cuboid中
  • 用接触点来参数化部件center之间的相对关系
    • 接触点
      • 在part \(p_1\) 坐标系下接触点坐标 \(c^1\) ,在part \(p_2\) 坐标系下接触点坐标 \(c^2\) ,假设 \(p_1\) , \(p_2\) 在world frame下坐标为 \(l_1^W\) , \(l_2^W\) ,由于是同一个点,应有
        \(l_1^W+c^1=l_2^W+c^2\)
      • 则两个center之间的相对位置可以这样infer:
        \(l_{1 \rightarrow2}^W=l_2^W-l_1^W=c^1-c^2\)
        • Q:这里可能有些问题,考虑到坐标系旋转,并不应是简单加法,不过意思到了
          A:没有问题,这里 \(c^1\) , \(c^2\) 都是世界坐标系下的
    • 接触点估计:如何infer \(c^i\)
      • 接触点应位于cuboid表面或者cuboid内部,因此将接触点表示为cuboid顶点的interpolation
        \(c^i=\sum_{j=1}^{8}\omega_{i,j}\cdot v_{i,j}\) , where \(\sum_{j=1}^8\omega_{i,j}=1\) and \(\omega_{i,j} \geq0\)
      • 用神经网络预测 \(\omega_i,j\) ,输入reference image和两个部件mask的feature的stack
      • 为了让接触点预测的结果和cuboid顶点顺序无关,结构和PointNet segmentation的结构类似
      • Deep learning on point sets for 3d classification and segmentation.2017
    • https://longtimenohack.com/posts/paper_reading/2020arxiv_han_compositionally/image-20201217095049304.png

效果

  • 真值mask基本可以做到很完美的组装,predicted mask效果也可以接受,毕竟predict出来的mask会出问题
  • https://longtimenohack.com/posts/paper_reading/2020arxiv_han_compositionally/image-20201217095300439.png

deep assembly