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)1​exp(−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∈LN​P(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+1​p∈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相关推荐

  1. 【论文阅读】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 (由单张图像进行三维物体重建 ...

  2. 3D Human Body Reconstruction from a Single Image via Volumetric Regression笔记

    3D Human Body Reconstruction from a Single Image via Volumetric Regression (基于体积回归的单幅图像三维人体重建) Abstr ...

  3. 论文阅读(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 ...

  4. 翻译:PlaneRCNN: 3D Plane Detection and Reconstruction from a Single Image

    图1.本文提出了一种深度神经网络结构PlaneRCNN,该结构检测平面区域,并从单个RGB图像重建分段平面深度图.从左到右,输入图像.分割的平面区域.估计的深度图和重建的平面. 摘要 本文提出了一种深 ...

  5. 3-D Reconstruction from a Single Still Image-学习《1》

    这个是自己感兴趣的领域之一,之前就已经了解过,但是没有坚持下去,所以这次只是重新拾起,而且要坚持下去,然后做出来. 这个是NG的课上了解到的一个项目,感觉很有趣. 主页http://ai.stanfo ...

  6. 《A Point Set Generation Network for 3D Object Reconstruction from a Single Image》论文笔记_2D图像生成3D点云

    摘要 通过深度神经网络生成3D数据已在研究界引起了越来越多的关注. 现存的大多数作品都采用常规表示法,例如体积网格或图像收集: 但是,这些表示法掩盖了3D形状在几何变换下的自然不变性,并且还遭受许多其 ...

  7. 3D人体重建从单张图中-DeepHuman: 3D Human Reconstruction from a Single Image

    论文链接:http://www.liuyebin.com/deephuman/assets/DeepHuman.pdf 摘要 我们提出深度人体,一个图像导向立体到立体的转换CNN对3D人体重建从一个单 ...

  8. CVPR 2018 paper list(论文列表)

    原文链接:http://cvpr2018.thecvf.com/program/main_conference 52 Embodied Question Answering Abhishek Das ...

  9. CVPR 2018 paper ---object detection

    转载:https://blog.csdn.net/qq_34848537/article/details/82968217 参考链接 CVPR 2018 论文解读集锦(9月27日更新) CVPR 20 ...

最新文章

  1. [学习笔记]最小圆覆盖
  2. js字符串怎么转python对象_js 对象转换为字符串
  3. JavaScript格式化数字显示格式
  4. 微软面向初学者的机器学习课程:1.2-机器学习的历史
  5. 关于Java泛型和擦除
  6. 35修改tomcat端口
  7. oracle scn与数据恢复,[Oracle] SCN与数据恢复的关系
  8. ASP.NET 网站项目 EF 的简单操作例子
  9. Java常用设计模式————原型模式(二)之深拷贝与浅拷贝
  10. Perl调用shell命令方法小结
  11. 开发板添加上 Web 界面+openwrt luci界面修改
  12. SpringCloud学习(五)路由网关(zuul)(Finchley版本)
  13. iOS 版本更新迭代
  14. Linux下限制带宽的方法
  15. 软考高级 2022年11月信息系统项目管理师
  16. Python-Django毕业设计基于的餐厅管理系统(程序+Lw)
  17. 抖音的显性和隐形限流的根本原因
  18. 【YOLACT】测试自己数据集
  19. QT下的几种透明效果
  20. 根据ip查服务器信息,根据IP查询云服务器

热门文章

  1. 手机wifi控制单片机C语言,单片机wifi控制app
  2. 世界八个著名游戏工作室
  3. 普里姆(Prim)算法
  4. 200行代码手撸PageHelper分页插件
  5. 做一个有思想的技术人
  6. 多分类学习、多标签学习、多任务学习的区别
  7. Python爬取城市天气数据,并作数据可视化
  8. 控制科学与工程 计算机那个好,控制科学与工程(自动化)最好的94所大学排名
  9. COLING 2020 | 面向医疗对话的摘要生成
  10. html+css页面练习3