[读论文]CVPR 2021 | RfD-Net: Point Scene Understanding by Semantic Instance Reconstruction

21 篇文章 2 订阅
14 篇文章 2 订阅

本文解决的问题:

端到端的indoor scene construction架构: 输入室内点云(下图左),输出其中各物体的3D模型(instance 粒度)(下图右)。相当于同时做了以下任务:
Instance detection:给出bounding box,旋转情况等
Instance completion:原始scan是缺损的,把它补全了
Instance reconstruction:点构面,即从点云得到mesh

在这里插入图片描述

Related work:

  • Shape completion: 补全缺损的单个物体
    • 常用点层面的卷积,如pointNet等。
  • Scene completion: 补全场景,主要挑战是物体相互遮挡
    • inpaint depth frames: 深度图补全,常用2D CNN
    • voxel or TSDF grids 补全,常用3D CNN。
  • instance reconstruction
    • semantic modeling
      • 粗略的根据CAD models 估计,非线性优化
      • CAD models 的 deep feature matching
      • 一般也是用vosel or TSDF grids

方法

三步走:

  1. 3D detector : 提出可能的物体的box
  2. spatial transformer :选择box,并对里面的点进行分组和对齐
  3. shape generator

然而代码里好像是五步。太难了。
在这里插入图片描述

3D detector: learning object proposals in point clouds

在这里插入图片描述

  1. 输入N个点的点云,每点有(x,y,z)三个值,故输入为点云 P ∈ R N × 3 P \in \mathbb{R}^{N \times 3} PRN×3
  2. 经过一个目标检测算法,得到对Np个特征,用来在下一步中预测潜在box: F p ∈ R N p × D p F_p \in \mathbb{R}^{N_p \times D_p} FpRNp×Dp。每个特征长度为Dp。(这个算法可以选用VoteNet等)。
  3. 用(本文用的是两层)MLP处理这Np个特征,得到Np个box。每个box有Db个参数

Spatial transformer: transforming points to local

在这里插入图片描述

  1. objectness dropout: 从Np个box中,只选择Nd个留下来
    选择方法可以是Top-N rank dropout(objectness得分最高的)或 3D NMS (非极大值抑制(Non-Maximum Suppression)。 我就说咋不用非极大值抑制,原来作者也想到了。
    本利中Nd = 10
  2. Group & Align: 对Nd个cluster进行点的采样,然后先把每个cluster的点云移到原点,然后旋转到正位
    Group:用一个group layer来对每个box的点进行采样。离box center的半径为r的点当中,随机采样Mp个点。r=1,Mp = 1024.
    Nd个box,最后每个cluster输出Mp个点。故最终输出的point cluster为 P i c {P^c_i} Pic ( i = 1 , 2 , . . . , N d , P i c ∈ R M p × 3 (i = 1,2,..., N_d, P^c_i \in \mathbb{R}^{M_p \times 3} (i=1,2,...,Nd,PicRMp×3)。
    Align: 把这些点放在一个正则坐标系中。 公式如下:
    在这里插入图片描述
    θ \theta θ是heading angle, 似乎是物体绕自己的竖轴旋转的角度. 那个稀奇古怪的R是旋转矩阵。c是cluster的中心。带 Δ \Delta Δ
    是用MLP学习的一些矫正误差用的值
    所以这个公式就是,先把这块物体的点云移到原点,然后旋转到正位。

Shape generator: shape generation from proposals

在这里插入图片描述
分两步:skip propagation和shape decoder

在这里插入图片描述
Skip Propagation:

  1. 上面得到的Nd簇每簇Mp个点(Nd×Mp×3), 用一个pointnet 分出foreground 的点(非背景)。用一个ReLU来移除背景点(个人感觉是置零的意思吧,所以图中的每簇点数还是Mp)
  2. 把得到的前景点的xyz (Nd × Mp × 3)和**3D detector 那一步的feature ( Nd×Dp)**拼在一起, 得到 (Nd × Mp × (3+Dp)) 作为前景点的混合特征。(每个xyz都拼上了这个特征)
  3. 用一个残差网络处理,把特征维数变为Ds. 故此时proposal Features为Nd * Ds
    在这里插入图片描述

Shape Decoder:
4. 在上文基础得到的Proposal features (Nd * Ds) ,通过某种方法,对3D空间 R 3 \mathbb{R}^3 R3中每一点,都求出一个0或1的occupancy value,表示这一点是否被占据(非空)。 这个方法在后面细讲。
5. 在occupancy values的基础上,用marching cubes算法来得到mesh。

求occupancy value的方法:
在这里插入图片描述

  1. occupancy values: 基本思想是训练一个二分类网络,得到三维实空间中每一点p对应的o(occupancy value),即0和1分别表示改点在物体里面或外面(单个物体是里外,开放场景可以理解为前面或后面)。详情可参考ocucpancy networks这篇论文。
  2. conditional batch normalization: 一个小细节。在occupancy networks (ONet)中,对整个场景的点云用一些方法提取特征f,将f和x一起输入ONet, 来求得此点的o值。这个一起的最简单思路是直接拼接,如下图选自SACONet。而RfDNet的作者沿用了ONet的做法,用conditional batch normalization来进行了一个小小的优化。详情可以百度conditional batch normalization,核心思想是在底层就融合。
  3. probablistic space for shape completion: 直接构面有困难,因为真实扫描点云常常因遮挡等原因有所缺损。为此,作者用p,o,f 求了一个正态分布(mu, sigma),采样得到z。把它和p先用mlp弄成一样维度,然后相加,再求新的o。就有点补全的意思了。(就是不知道为什么是和p相加,感觉应该和f相加?但他效果还行)

在这里插入图片描述
此图是ONet的改进SA-CONet的截图,可以看到他的f和q是直接拼接输入MLP的。

对每个proposal的bounding cube里面的所有点,逐一给出occupancy value 0 或1, 在fp的条件下。

如何使decoder建立在proposal features的条件下?如41, 用Conditional batch normalization layers 。

decoder是一个概率生成的模型。,如62,1。具体如下:
如41,对点,feature和o,用一个latent encoder给出均值和标准差,一次来弄一个标准正态分布。
在这个正态分布中取样,得到一个latent code z。
用一个MLP把p和z弄成一样的维度
每点相加,放到五个conditional blocks里面,来退出o。

所以就是要看41这篇文章。
Occupancy Networks: Learning 3D Reconstruction in Function Space

End to end learning: loss

Box Loss: box的各个参数的loss
Shape Loss:前景分割loss, shape loss (需要有occupancy的ground truth)

数据集

ScanNet v2 [11] consists of 1,513 real world scans with point cloudslabeled at the instance level. (含instance分割标签的点云)

Scan2CAD [3] aligns the ShapeNet [6] models with the object instances in ScanNet.It provides the object meshes.(对上面的instance提供了mesh)

Benchmark

scene reconstruction : RevealNet [25], 3D-SIS [24] and ScanComplete

baseline方法

RevealNet,RGBD数据encoded as TSDF作为输入。

latent code z

参考文献 64 , 1
1 Learning representations and generative models for 3d point clouds.

64 Learning a probabilistic latent space of object shapes via 3d generative-adversarial modeling.

64

generator 将低维概率空间印射到3D物体。

人家是直接用这个低维的生成的啊。

metrics

As [26], the mean average precision at the 3D IoU
threshold of 0.5 (mAP@0.5) is used in the evaluation of 3D
detection and semantic instance completion, and we adopt
3D IoU for mesh evaluation in single object reconstruction.

detection 用的是mAP at 3D IoU ,阈值是0.5。
precision (对positive): TP / (TP+FP)
大概意思是,和某个GT的IOU大于threshold就认为是TP。

而,mesh重建用的是IoU。

但好像没看到求IoU的代码或者结果输出:
在这里插入图片描述

英语学习

  • occlusions:
    常见有闭合、咬合、阻挡、阻塞等意思,这里是阻挡。
    leverage: 使用
  • insight:
    clear/deep perception/understanding/feeling of complicated situation (based on the insight)
  • modality:
    verb inflections that express how the action or state is conceived by the speaker。 一件事是这么构想的。 感觉很奇怪,这里应该就是类似method的意思(we provide a novel learning modality)
  • hinder: 阻碍
  • canonical:
    最简而通用。
    reduced to the simplest and most significant form possible without loss of generality
  • canonical coordiante system:
    正则坐标系
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值