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 K∗3个参数。同时提取图像中的所有的平面需要对场景的所有信息都要了解,因此需要全局信息,因此需要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(X∣I)=Z(i)1exp(−c∈Cg∑Φc(Xc∣I))(1)
其中 g = ( v , ξ ) g=(v,\xi) g=(v,ξ) 是在变量集合组成的图,其中 c c c是簇,表示部分群体。能量函数也就是label函数, X ∈ L N X\in L^N X∈LN 是 E ( x ∣ I ) = ∑ c ∈ C g Φ c ( X c ∣ I ) E(x|I)=\sum_{c\in C_g}\Phi_c(X_c|I) E(x∣I)=∑c∈CgΦc(Xc∣I) 最大化后验推理。就是对 E ( x ∣ I ) E(x|I) E(x∣I)能量函数的最大化。 x ∗ = a r g m a x x ∈ L N P ( x ∣ I ) x*=argmax_{x \in L^N}P(x|I) x∗=argmaxx∈LNP(x∣I)。
也就是传统的图像分割模型,贴上标签。这只是能量函数优化的那一块,是可以用神经网络来计算的。用于计算这个函数中的各个函数项的权重。具体怎么计算?
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=1∑K∗minj∈[1,K]∣∣Pi∗−Pj∣∣22(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=1∑K+1p∈I∑(1(M∗(p)=i)log(1−Mi(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)用其它视角的图片进行约束,(怎么做到?)
PlaneNet: Piece-wise Planar Reconstruction from a Single RGB Image相关推荐
- 【论文阅读】A Point Set Generation Network for 3D Object Reconstruction from a Single Image
论文题目: A Point Set Generation Network for 3D Object Reconstruction from a Single Image (由单张图像进行三维物体重建 ...
- 3D Human Body Reconstruction from a Single Image via Volumetric Regression笔记
3D Human Body Reconstruction from a Single Image via Volumetric Regression (基于体积回归的单幅图像三维人体重建) Abstr ...
- 论文阅读(2)3D Human Body Reconstruction from a Single Image via Volumetric Regression
3D Human Body Reconstruction from a Single Image via Volumetric Regression 论文阅读 Abstract 1 Introduct ...
- 翻译:PlaneRCNN: 3D Plane Detection and Reconstruction from a Single Image
图1.本文提出了一种深度神经网络结构PlaneRCNN,该结构检测平面区域,并从单个RGB图像重建分段平面深度图.从左到右,输入图像.分割的平面区域.估计的深度图和重建的平面. 摘要 本文提出了一种深 ...
- 3-D Reconstruction from a Single Still Image-学习《1》
这个是自己感兴趣的领域之一,之前就已经了解过,但是没有坚持下去,所以这次只是重新拾起,而且要坚持下去,然后做出来. 这个是NG的课上了解到的一个项目,感觉很有趣. 主页http://ai.stanfo ...
- 《A Point Set Generation Network for 3D Object Reconstruction from a Single Image》论文笔记_2D图像生成3D点云
摘要 通过深度神经网络生成3D数据已在研究界引起了越来越多的关注. 现存的大多数作品都采用常规表示法,例如体积网格或图像收集: 但是,这些表示法掩盖了3D形状在几何变换下的自然不变性,并且还遭受许多其 ...
- 3D人体重建从单张图中-DeepHuman: 3D Human Reconstruction from a Single Image
论文链接:http://www.liuyebin.com/deephuman/assets/DeepHuman.pdf 摘要 我们提出深度人体,一个图像导向立体到立体的转换CNN对3D人体重建从一个单 ...
- CVPR 2018 paper list(论文列表)
原文链接:http://cvpr2018.thecvf.com/program/main_conference 52 Embodied Question Answering Abhishek Das ...
- CVPR 2018 paper ---object detection
转载:https://blog.csdn.net/qq_34848537/article/details/82968217 参考链接 CVPR 2018 论文解读集锦(9月27日更新) CVPR 20 ...
最新文章
- [学习笔记]最小圆覆盖
- js字符串怎么转python对象_js 对象转换为字符串
- JavaScript格式化数字显示格式
- 微软面向初学者的机器学习课程:1.2-机器学习的历史
- 关于Java泛型和擦除
- 35修改tomcat端口
- oracle scn与数据恢复,[Oracle] SCN与数据恢复的关系
- ASP.NET 网站项目 EF 的简单操作例子
- Java常用设计模式————原型模式(二)之深拷贝与浅拷贝
- Perl调用shell命令方法小结
- 开发板添加上 Web 界面+openwrt luci界面修改
- SpringCloud学习(五)路由网关(zuul)(Finchley版本)
- iOS 版本更新迭代
- Linux下限制带宽的方法
- 软考高级 2022年11月信息系统项目管理师
- Python-Django毕业设计基于的餐厅管理系统(程序+Lw)
- 抖音的显性和隐形限流的根本原因
- 【YOLACT】测试自己数据集
- QT下的几种透明效果
- 根据ip查服务器信息,根据IP查询云服务器