PlaneNet: Piece-wise Planar Reconstruction from a Single RGB Image

markdown

目标

论文理解

论文序列

5)PlaneNet: Piece-wise Planar Reconstruction from a Single RGB Image

目标

在这里插入图片描述
图片中的主要平面提取出来。

为什么能够提取到平面?

我们知道人眼能够从图像看到其基本的架构,主要的平面架构也能推导出来,神经网络是模仿人的眼睛推导功能,人的主要是先进行识别图片中的对象,然后对象中的较大的边界,然后再推导出哪些面是平面。但是怎么解释到神经网络上推导的,我暂且没有理解够。只是知道它能推导出三维平面的参数。为什么可以直接能推导?

网络设计的架构

假设能从rgb图像上推导出3D平面的参数,这样遇到的问题就是推导多少个平面,因为不同的图像有不同的平面个数,以及推导的平面的顺序是啥样子的,在网络设计中非常重要,不解决这些问题就设计不了网络。论文中的方法是设计一个网络就是最多有 K K K个平面,就是回归到 K ∗ 3 K*3 K3个参数。同时提取图像中的所有的平面需要对场景的所有信息都要了解,因此需要全局信息,因此需要Global pooling操作,然后直接回归平面的参数。同时对于不同的平面出来的顺序不一样,也不知道平面的顺序。论文的解决办法和点云中的类似,用loss函数的顺序不变性来处理的。平面参数估计的网络如下:
在这里插入图片描述
提取出三维的平面,这些平面需要回归到图像上。同时平面具有无限延展性,需要一个区域分割的网络,或者一个标签网络指定这些区域是属于哪个三维平面上。准确来说需要一个网络。这篇论文主要是用了一个判别网络,对图像中的每个像素,判断它的是属于提取平面上的哪个平面。这是一个label网络,论文中用了CRF model 用于标签图像中的像素属于哪个平面。网路架构如下:
在这里插入图片描述
因为这个模块是分类模块,对图像中每一个像素进行分类,表明它属于哪个平面。这样就能得到平面分割网络。对于具体实现,以及具体的细节为什么用CRF model等等,因为CRF表示图像的像素属于哪个,用Pyramid pooling这个框架。因为涉及到图片的每一个像素,因此 需要Pyramid操作,它需要拥有高级语义和低级语义信息,这样才能在高级语义的条件下对每一个像素进行分类贴标签,具体是什么操作如下:
在这里插入图片描述
pooling形成多层次feature maps(从上到下可以看到它丢失的细节信息越来越少),通过卷积得到feature maps,需要concatenate, 这个操作仅仅是对它进行upsamle 操作得到同样resolution的feature maps,这样才能 concatenate, 然后进行卷积。
得到理解上述的Pyramid Pooling Module这个模块,它的输出用CRF再次处理一次,具体的CRF是怎么操作的以及为啥这样操作?稍微看了一下论文Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials, 它主要的操作输入图片然后对图片进行分割操作和贴标签操作。操作如下:
给一个随机变量 X X X 场,它的集合是 X 1 , . . . , X N {X_1,...,X_N} X1,...,XN, 对每个变量贴上标签,标签集合是 L = l 1 , l 2 , . . . , l k L={l_1,l_2,...,l_k} L=l1,l2,...,lk ,CRF 满足Gibbs 分布
P ( X ∣ I ) = 1 Z ( i ) e x p ( − ∑ c ∈ C g Φ c ( X c ∣ I ) ) (1) P(X|I)=\frac{1}{Z(i)}exp(-\sum_{c\in C_g}\Phi_c(X_c|I)) \tag{1} P(XI)=Z(i)1exp(cCgΦc(XcI))(1)
其中 g = ( v , ξ ) g=(v,\xi) g=(v,ξ) 是在变量集合组成的图,其中 c c c是簇,表示部分群体。能量函数也就是label函数, X ∈ L N X\in L^N XLN E ( x ∣ I ) = ∑ c ∈ C g Φ c ( X c ∣ I ) E(x|I)=\sum_{c\in C_g}\Phi_c(X_c|I) E(xI)=cCgΦc(XcI) 最大化后验推理。就是对 E ( x ∣ I ) E(x|I) E(xI)能量函数的最大化。 x ∗ = a r g m a x x ∈ L N P ( x ∣ I ) x*=argmax_{x \in L^N}P(x|I) x=argmaxxLNP(xI)
也就是传统的图像分割模型,贴上标签。这只是能量函数优化的那一块,是可以用神经网络来计算的。用于计算这个函数中的各个函数项的权重。具体怎么计算?

Loss 函数设计

设计loss函数,我们之前提到因为平面的顺序具有无序性,需要给一个loss函数,提取的平面具有无序的。一般有sum,或者average 这两种方式,本论文使用了sum,同时也提供了min操作这些都是跟顺序无关的。如下:
L P = ∑ i = 1 K ∗ m i n j ∈ [ 1 , K ] ∣ ∣ P i ∗ − P j ∣ ∣ 2 2 (2) L^P=\sum_{i=1}^{K^*}min_{j\in [1,K]}||P_i^*-P_j||_2^2 \tag{2} LP=i=1Kminj[1,K]PiPj22(2)
其中 P i ∗ P^*_i Pi表示ground-truth 平面参数,同时 P j P_j Pj表示预测的平面参数,其中对于平面参数是指平面上离相机中心最近的坐标?这个没有想通。从这个式子可以看出,当 P j P_j Pj顺序变化是,因为有一个min操作它总是取得i 到任何平面得最小值。
我的想法是为啥平面参数用三个变量?缺少offset这个变量,应该加上offset这个变量。同时这个参数,具有scale 不变性,需要对其进行归一化,或者之前的offset不变会更好。

第二个loss函数是平面分割的分支:
它包括Pyramid pooling和CRF两大模块。
其中他们的loss函数是:
L M = ∑ i = 1 K + 1 ∑ p ∈ I ( 1 ( M ∗ ( p ) = i ) l o g ( 1 − M i ( p ) ) ) (3) L^M=\sum_{i=1}^{K+1}\sum_{p \in I}(1(M^{*(p)}=i)log(1-M_{i}^{(p)})) \tag{3} LM=i=1K+1pI(1(M(p)=i)log(1Mi(p)))(3)
其中图像的像素集合是 I I I, M i ( p ) M_i^{(p)} Mi(p)表示像素 p p p属于第 i t h i^{th} ith平面的概率。其中 M ∗ ( p ) M^{*(p)} M(p)是ground-truth。可以看出这个是一个label的网络。从而对图像中的对象进行平面提取。

这是整体的网络架构,同时对里面的细节进行理解。

感想

通过对流程的理解,这个模块整体是先获取大平面,把这些平面作为目标,用图像分割获取平面。
1)这个网络中比较直接,segment的网络的输出后,直接简单的用crf进行分割操作,没有用attention这个模块获取segmention。可以变化一下网络,用attention控制feature map的信息流向,并且融入crf,之前的depthmap网络。

2)同时没有用边缘检测进行约束,(只做区域分割)导致出来的结果,边缘极其不够准确,可以看到结果如下:
在这里插入图片描述

3)这个网络必须自己设置 K K K个平面,现实世界中比这个复杂很多,平面数量可以自己检测出来。同时这样会丢弃小平面,因为直接pooling操作等等。都严重限制了应用。

4)网络可以用示例分割,获取多个区域等等,这样就不会受到平面的 K K K的限制。

5)平面检测中的参数可以用4个参数表达,不用三个参数。

6)用其它视角的图片进行约束,(怎么做到?)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值