[读论文]CVPR 2021

编程入门 行业动态 更新时间:2024-10-11 05:25:56

[读<a href=https://www.elefans.com/category/jswz/34/1770125.html style=论文]CVPR 2021"/>

[读论文]CVPR 2021

本文解决的问题:

端到端的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} P∈RN×3。
  2. 经过一个目标检测算法,得到对Np个特征,用来在下一步中预测潜在box: F p ∈ R N p × D p F_p \in \mathbb{R}^{N_p \times D_p} Fp​∈RNp​×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​,Pic​∈RMp​×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:
    正则坐标系

更多推荐

[读论文]CVPR 2021

本文发布于:2024-03-08 18:19:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721785.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:论文   CVPR

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!