童欣 室内三维场景的理解与建模

无人驾驶——室外场景
RGB-D相机 浙大张国锋老师有研究
室内的自动驾驶——机器人 扫地机器人 家居机器人 对室内场景做建模、装饰

三种方法:
1、geometry based methods 恢复场景中的几何和颜色信息,不涉及语义信息
2、primitive based methods 人造的物体是有规则的,利用这些物体的结构信息帮助做场景的建模或分析
3、semantic based methods 从三维获取的数据中抽取语义信息,另一方面希望将语义信息应用到三维场景的重建或推理中

方法一的相关工作:
(1)算法:
- kinectfusion

  • 改进kinectfusion:
    • hierarchical data structure and streaming [chen 2013]
    • Octree [Steunbrucker2013]
    • Voxel-hashing [Niebner2013]
      目前最好的算法:
    • bundlefusion

(2)Color Texture Quality 想把纹理贴到几何上发现color很差,解决:
- color map optimization [zhou2014]
优化RGB相机的位姿(RGB相机拍摄的时候不可能和depth 相机完全同步,所以需要再次优化它的pose) 因为相机模型并不完美,所以对每张图像进行deformation
- patch based optimization[bi2017]
很多时候过程中一些几何信息会彻底丢掉,所以后期纹理是不可能贴上去的,所以不要图纸了,而是从原图中通过patch合成的方法合成一张新图
缺点:都是后处理,不能实现实时。

方法二相关工作:
利用平面之间的关系,,进行重建,甚至可以利用平面推理出遮挡部分的信息。
分类一 Heuristic-based Approaches 抽平面采取一些霍夫变换或者其他处理,然后进行过滤,给定一些阈值
- Online structure for real-time indoor scene reconstruction. [zhang2015] (实时的)
- Towards Comodity 3D Scanning for content creation. [huang2017] (非实时)
CNN方法抽取平面:
- PlaneNet(CVPR2018) 从一个RGB图像直接抽取场景中的plane信息和对场景中的piecewise plane regions给一个segmentation出来。 上支估出来场景中所有平面的参数,下支决定每一个regions做segmentation,同时告诉这个region是上面估出来的第几个平面。
- PlaneMatch 希望从给定的RGB的frame之间算一个encoder,假设先做了一个segmentation,给定了一些piecewise region,给每个region给个encoder,如果这两个平面是同一个平面的话,期望encoder descriptor足够接近,所以训练一个descriptor。在后面的过程中可以用训练好的descriptor来快速feature出一些假的信息,来提高效率。

方法三相关工作:
classify 三维场景中的所有物体,同时给每个物体一个semantic label
细分:- object detection(给定一个点云或单张深度图像,哪些地方是物体框出来)
- scene segmentation(把场景分割成一个个物体)
- reasoning/completion(假设只看到了部分场景,希望把场景补全,可以认为是重构的一部分)
-

  1. 一类工作:Single View based Segmentation/Detection(单张RGB-D图像做分割/检测)
    1.1、Image based approaches,depth as 2D image channel (把depth作为一个单独的channel,用传统的二维卷积方法或传统的manually crafted features的方法来做)
    - Manually crafted features [Silberman2012,Gupta2013]
    - 2D CNN based method [Gupta2015, Deng2017]
    example:- Amodal detection[Deng2017]
    目的:做目标检测。
    实现方法:RGB用一个CNN来做,depth单独做一个channel,用一个CNN来做,这两个channel最后合并一起,depth给定一个初始值,最后refine,获取object position
    1.2、Volumetric based approaches,depth as TSDF(把depth转为Volumetric的表达,放到三维场景中,然后用三维的处理方法来做,比如在三维空间中做卷积或者利用三维的CRF等方法来做)
    - Manually crafted features [Ren2016]
    - 3D CNN based method [Song2016, Graham2018]
    example: - Submanifold CNN for 3D segmentation [Graham2018]
    目的:做3D segmentation
    实现方法:把场景先做成一个三维的volumetric的场景,因为物体在局部内有一些surface,所以3D CNN 只在这些surface上去做。非常接近Octree([Steunbrucker2013])OCNN的idea

  2. 另一类工作:Single View based 3D Scene Completion(在vision里有单独做的,还没看到graph有太多人做。
    假设给定一个single的RGB-D view,那就会有物体的遮挡、场景的遮挡,希望把遮挡部分都恢复出来。
    - Heuristic solution [Zheng2013] 通过对场景的理解,几何以及一些物理的约束来推测出被遮挡的部分
    - Random forest [Firman2016]
    - 3D CNN [Song2017,Guo2018] song2017:给定一个三维场景,把它变成一个volumetric的表达,给定depth,要推测后面所有看不到的Voxel,先要规定哪些地方有物体,哪些地方没有物体,还要知道这个物体是什么。 这个工作的两个结论:
    (1)、semantic information对推测哪个地方有物体有很大的帮助。
    (2)、为了推测后面有什么东西,必须知道场景中很大的contact information。如果感受野不够大,只看local推测不出来。
    - 童欣自己组的工作:以前的工作是给定了depth image后就做TSDF,然后做3D volume convolution得到最终结果。这样会导致计算量很大、速度很慢。
    改进:先在depth上做2D convolution 抽取一些feature,,再把这些feature投影到3D volume上,然后再做scan completion。

  3. 再另一类工作:3D Scene based Segmentation/Completion
    传统的方法:假设有一个model database,给定一个三维场景的扫描,可以尝试去fit object,然后把它retrieval and replacement。
    - Model retrieval and replacement [Kim 2012, Nan2012, Shao2012,Chen2014]
    最近的一些用深度学习的方法来做:
    - Point based approaches [Qi2016, Qi2017] 基于点的表达
    - Volumetric based approaches [Dai2017, Dai2018a] 基于volumetric的表达
    - ScanComplete [Dai2018] Multi-resolution and sliding window. 把场景先做成三个resolution,在每个resolution上用3D的CNN,用一个sliding window做一个local的segmentation和completion,然后把这些放到下一层,和下一层CNN的input一起卷,再来refine 这个feature, 最后得到这个结果。
    - Multiple view based approach [Dai2018b]
    先做2D CNN,然后投影到volume里面,和3D的CNN结合到一起去做场景的segmentation

challenges:
Automatic high quality 3D scene data acquisition and segmentation 图像质量不行
high quality 3D geometry and color textures
complete(without holes caused by occlusions)
accurate labels and object segmentation
scalable, real time 3D scene understanding
object detection, segmentation, and prediction
Efficient scene representation for analysis/understanding 做3维场景的时候到底用什么表达,2D很容易把color等信息结合进去,而3D就不容易结合color等信息,各有优缺。
2D view can combine color but cannot handle occlusion
3D volume difficult to use color but can handle full scene

Trends:
Fusing images and 3D information 图像上有很多信息,如何把scene和图像结合起来一起用。图像标注比三维场景容易多了。
Fusing scene reconstruction and understanding semantic信息如果做的足够好,这些信息如何用来帮助做scene reconstruction
use semantic information for 3D scene reconstruction/prediction
more information of the scene 我们目前只捕捉了几何、颜色的信息,其他的reflectance、physics、动态完全没有捕捉到
dynamics,reflectance,physics,lighting conditions
more CNNs and deep learning
Future Directions:
From static to dynamics
functions,dynamics…
From reconstruction/understanding to generation generation 还没做,很重要
scene layout and details
From single task to multi-task fusion
planning/navigation+reconstruction+understanding
Kevin Xu and Ligang’s work
More surveys:
kang chen. 3D indoor scene modeling from RGB-D data:A survey,computational visual media
muzammal naseer. indoor scene understanding in 2.5/3D: A survey.

Q&A:
Q: 几何方面的重建可以做到实时,但对于有语义信息的实时性就比较差。如果直接输入一个完成的场景没办法做到实时,但如果每次只更新一部分是否可能做到实时?
A: 但是,如果做错了,什么时候改,怎么改,应该改吗?前面错的后面有没有机会改,后面会不会有原来对的改错了。
Q: 如果是图片话,可以用RNN,因为它不需要做融合,但是如果在三维上做,每次增量地输入一部分点云,但是会有一些局部或全局的优化,之前的数据就可能会被改变,这样可能会出现需要重新输入的问题。
A: 周坤或bundlefusion的工作就是要解决这样的问题,怎样update结果确保改对了,以及改对了的结果怎样传播回去?

你可能感兴趣的:(三维重建,三维重建)