三维深度学习的几种方法:

  1. 多视角(multi-view):通过多视角二维图片组合为三维物体,此方法将传统CNN应用于多张二维视角的图片,特征被view pooling procedure聚合起来形成三维物体;
  2. 体素(volumetric):通过将物体表现为空间中的体素进行类似于二维的三维卷积(例如,卷积核大小为5x5x5),是规律化的并且易于类比二维的,但同时因为多了一个维度出来,时间和空间复杂度都非常高,目前已经不是主流的方法了;
  3. 点云(point clouds):直接将三维点云抛入网络进行训练,数据量小。主要任务有分类、分割以及大场景下语义分割;
  4. 非欧式(manifold,graph):在流形或图的结构上进行卷积,三维点云可以表现为mesh结构,可以通过点对之间临接关系表现为图的结构。流形表达比较抽象,用到拉普拉斯特征

pointNet

1.主要贡献:

1)解决体素的方法带来的时间空间复杂度高的问题,提供一个简单,快速,有效的方法处理点云数据

2)为分类,部分分割和予以分割提供了统一的体系结构

2.欧几里得空间的点云有如下特征:

1)无序性

2)点与点直接存在空间关系

3)旋转平移不变性

3.网络的主要模块:

1)transform:

第一次,对输入点云进行对齐:位姿改变,使改变后的位姿更适合分类/分割

第二次,对64维特征进行对齐

2)mlp:使用共享权重的卷积

3)max pooling:汇总所有点云的信息(全局信息),前面的卷积除了第一次对xyz,使用1*3的,后面基本都是1*1的,相当于基本都是单点采样的工作。

4)分割部分:局部和全局信息组合结构(concate,语义分割)

5)分类loss:交叉熵,分割loss:分类+分割+L2(transform,原图的正交变换)

不足:缺乏在不同尺度上提取局部信息的能力(因为基本上都是单点采样,代码底层用的是2Dconv,只有maxpooling整合了整体特征,所以局部特征提取能力较差)

pointNet++

1.主要贡献:解决pointNet提取局部特征的能力

2.模型结构:

1)采样层(sampling)

激光雷达单帧的数据点可以多达100k个,如果对每一个点都提取局部特征,计算量是非常巨大的。因此,作者提出了先对数据点进行采样。作者使用的采样算法是最远点采样(farthest point sampling, FPS),相对于随机采样,这种采样算法能够更好地覆盖整个采样空间。

2)组合层(grouping)

为了提取一个点的局部特征,首先需要定义这个点的“局部”是什么。一个图片像素点的局部是其周围一定曼哈顿距离下的像素点,通常由卷积层的卷积核大小确定。同理,点云数据中的一个点的局部由其周围给定半径划出的球形空间内的其他点构成。组合层的作用就是找出通过采样层后的每一个点的所有构成其局部的点,以方便后续对每个局部提取特征。

3)特征提取层(feature learning)

因为PointNet给出了一个基于点云数据的特征提取网络,因此可以用PointNet对组合层给出的各个局部进行特征提取来得到局部特征。值得注意的是,虽然组合层给出的各个局部可能由不同数量的点构成,但是通过PointNet后都能得到维度一致的特征(由上述K值决定)。

3.grouping方法:

1)MSG:对每个实例进行dropout,选择从[0,0.95]均匀采样的dropout ratioθ,其中p≤1。对于每个点,我们以概率θ随机地丢弃一个点。 向网络呈现各种稀疏度(由θ引起)和变化均匀(由丢失中的随机性引起)的训练集。 在测试时保留所有可用点

2)上面的MSG方法计算成本很高,因为它在每个质心点的大规模邻域运行局部PointNet。 特别是,由于质心点的数量通常非常大(在lowest level),因此时间成本很高

MRG避免了大量的计算,但仍然保留了根据点的分布特性自适应地聚合信息的能力。某个层Li的区域的特征是两个矢量的串联。 通过使用设置的抽象级别从较低级别Li-1汇总每个子区域的特征来获得一个向量。 另一个向量是通过使用单个PointNet直接处理本地区域中的所有原始点而获得的特征。

当局部区域的密度低时,第一矢量可能不如第二矢量可靠,因为计算第一矢量的子区域包含更稀疏的点并且更多地受到采样不足的影响。 在这种情况下,第二个矢量应该加权更高。 另一方面,当局部区域的密度高时,第一矢量提供更精细细节的信息,因为它具有以较低水平递归地表达较高分辨率检查的能力。

与MSG相比,该方法在计算上更有效,因为我们避免了在最低级别的大规模邻域中的特征提取

Frustum pointNet

1.主要贡献:通过使用2D物体检测技术,减少3D遍历空间,有效的在3D空间中进行物体定位。

坐标系转换见 相机标定坐标系.odt

2.模型结构:

1)视锥生成(frustum proposal):

首先通过2D目标检测器(基于VGG网络的FPN作为特征提取器,并用Fast R-CNN来预测最终的2D bbox)来定位图片中的目标和类别。对每一个检测到的目标,通过标定好的传感器的内参和它们之间的转换矩阵得到其对应的点云数据中的各点,即点云视锥。

2)3D实例分割(3D instance segmentation):

对每个得到的点云视锥,通过旋转得到以中心视角为坐标轴的点云数据。对转换后的点云数据用PointNet(或PointNet++)进行实例分割。实例分割是一个二分类问题,用于判断每个点属于某个目标或者不属于。

3)3D边界框回归(3D box estimation):

将上一步实例分割的结果作为mask得到属于某个实例的所有点云,计算其质心作为新的坐标系原点。通过一个T-Net进行回归得到目标质心和当前坐标原点的残差。将点云平移到计算得到的目标质心后,通过PointNet(或PointNet++)对3D bbox的中心、尺寸和朝向进行回归得到最终的输出。此步骤采用的回归方式和Faster R-CNN中类似,不直接回归,而是回归到不同尺寸和朝向的锚点(anchors),即相对坐标。

3.给定2D图像和对应的3D视锥,获取3D bbox的方法:

1)直接使用2D CNN从深度图直接回归3D对象位置, 但由于在自然场景中遮挡物体和背景杂乱很常见这可能会严重分散3D定位任务的注意力。 由于物体在物理空间中是自然分离的,因此3D点云中的分割比来自远处物体的像素彼此接近的图像中的分割更加自然和容易。

2)提出改进方法:在3D点云中而不是在2D图像或深度图中分割实例。 与Mask-RCNN [14]类似,通过图像区域中像素的二值分类实现实例分割,使用基于PointNet的网络在视锥上的点云实现3D实例分割。

4.不足:在2D转3D求点云的过程中,依赖标定的准确性

注:

1.本质还是2D卷积的方式

2.分类所用的数据是CAD模型,点云数据非常完整,且没有噪声,实际情况效果待定

3.对点云归一化,仍是-均值/方差

4.t-net的效果泛化能力待定(是否有可能出现没见过的shape,无法变换到一个适合分割的角度)

GACNet

1.主要贡献

提出了一种可学习kernel 形状的GAC,可动态的适应object的结构(GAC处理无序和大小变化的邻居,并共享权重)(本质是attention机制:不同的邻点使用不同的attention权重,GAC根据邻点的功能有选择的关注他们中最相关的部分,卷积核的形状由学习到的attention权重的分布得到)

2.pointnet和GAC:

PointNet的关键是使用max运算符(包括MLP)。 实际上,max运算符可被视为GAC的极端情况,即“最大关注度”,它通过获取每个要素通道的最大值来聚合相邻要素。 因此,最大操作者倾向于捕获最“特殊”的特征,这会破坏物体点之间的结构连接并对噪声敏感(可能最大值是噪声)。 相比之下,GAC通过为其分配特定的注意权重来聚合相邻特征,从而保持用于细粒度点云分割的对象的结构。(因此可以根据权重的情况,将后续操作看成是可变kernel大小的操作,权重是根据特征差异得到的,所以对不同的点的邻域计算的范围和影响大小不一样,这里用到的就是graph的思想)

3.模型结构

1)encode-decode结构,encode过程使用了pointnet提取特征的方式

2)attention机制,figure2.归一化方式与softmax类似

3)decode过程,先插值,再concate再卷积优化参数,得到输出结果

GACNet作者还没有公开代码,有别人实现的但是效果达不到论文说的。

SPGraph

1.主要贡献:

1)提出Super graph,具有丰富边特征的点云表示,用于编码3D点云中对象部分之间的上下文关系

2)可在大规模点云上应用深度学习,而不需要精细细节。

3)在Semantic3D和S3DIS数据集上表现出色

2.优点:

1)不关注独立的点或者体素,将整个对象当成一个整体,更容易识别

2)可以描述相邻对象之间的细节关系,对上下文分类是十分关键的,比如,路上的很可能是车,天花板周围很可能是墙

3)SPG的大小由场景中的简单结构的数量而不是点的总数来定义,通常小几个数量级。

3.模型结构

1)geometrically homogeneous partition:将点云分成superpoint graph形式

2)superpoint embedding:SPG的每个节点对应于与几何简单基元对应的点云的一小部分,将小点云下采样到最多数百个点,可以可靠地表示这种原始数据。 使用PointNet做enbedding(superpoint是结点,他们之间的关系是边,这里用到gnn思想)

3)contextual segmentation:superpoint比原始点云数量级小很多。 可以使用GCN,使用丰富的边缘特征对其节点进行分类,从而促进长距离交互。

不足:第一步的好坏不知道会不会影响后面的分割效果。

Spidercnn

1.主要贡献:

1)有效提取点云中的几何特征。

2)将传统的卷积操作从规则网格拓展到非规则网格

3)继承了传统CNN 的多尺度特性,能够有效地提取层级化的深度语义信息。

2.结构:

1)分类:

2)分割:

3.实现:

F为点云,g为filter

g可用MLP表示,但在实践中不能很好地工作,原因如下:

1)MLP无法解释3D点云的几何优先级。

2)为了确保足够的表现力,MLP中的参数数量需要足够大,这使得优化问题变得困难。

所以:

第一项是一个点周围局部极坐标的半径变量的阶跃函数。编码local geodesic information。表征点云的局部几何特征。

第二项是order-3Taylor多项式,丰富卷积簇的复杂度,捕获角度分量的变化, 保证几何特征的表达能力。

基于构造点云的统一采样过程,使用以下近似值:

1)使用K近邻方法来寻找局部区域,而不是直接将半径r内的当成局部区域

2)第一项由排列近似。

pointconv

1.主要贡献:

1)提出逆密度重加权卷积操作 PointConv(为了补偿不均匀采样),它能够完全近似任意3D 点集上的 3D 连续卷积。

2)通过改变求和顺序,提出了高效 PointConv 。

3)将 PointConv 扩展到反卷积(PointDeconv),以获得更好的分割结果

2.网络结构

1) pointConv:

C_in 和 C_out :输入和输出的特征的维度

k, c_in, c_out :索引

输入:3D 点的相对坐标 P_local,密度 Density 和特征 F_in。

过程:

a)P_local 经过连续函数 MLP1 后得到对应每一个点的特征的权重 W;

b)Density 经过 MLP2 之后得到逆密度系数 S;

c)权重 W, 逆密度系数 S 和输入的特征 F ,利用下式进行卷积,以得到输出特征 F_out:

不足:内存消耗大,效率低(主要是权重部分,逆密度还好)

2)高效pointConv

根据矩阵乘法和2D卷积重构pointConv,改善内存,效率问题

高效pointConv使内存占用变为原来的1/64

3)pointDeconv:

在分割任务中,将信息从粗糙层传递到精细层的能力非常重要。

PointDeconv 过程:

a)插值:使用一个线性插值算法来得到精细层的特征的初始值

b)pointConv:再对插值后的精细层进行一个 PointConv 进行优化特征,从而获得较高精度的特征值

二维特征分类的基础_3D 分割分类总结相关推荐

  1. OpenCV之feature2d 模块. 2D特征框架(2)特征描述 使用FLANN进行特征点匹配 使用二维特征点(Features2D)和单映射(Homography)寻找已知物体 平面物体检测

    特征描述 目标 在本教程中,我们将涉及: 使用 DescriptorExtractor 接口来寻找关键点对应的特征向量. 特别地: 使用 SurfDescriptorExtractor 以及它的函数  ...

  2. 二维特征分类的基础_纹理特征1:灰度共生矩阵(GLCM)

    GLCM复习备用: 纹理分析是对图像灰度(浓淡)空间分布模式的提取和分析.纹理分析在遥感图像.X射线照片.细胞图像判读和处理方面有广泛的应用.关于纹理,还没有一个统一的数学模型.它起源于表征纺织品表面 ...

  3. 二维特征分类的基础_带你搞懂朴素贝叶斯分类算法

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法.这篇文章我尽可能用直白的话语总结一下我们学习会上讲到 ...

  4. 二维特征逻辑回归预测结果可视化

    问题描述 如下二维特征,每个样本属于正样本(红色)或负样本(蓝色),实现二分类模型 单层神经网络 [w1w2][x1x2]+[b]=[y]\left[\begin{matrix} w_1 & ...

  5. 【视频课】8大Pytorch CV实践案例,超30小时视频助你攻略CV三大基础任务(分类分割检测)

    计算机视觉中大大小小可以包括至少30个以上的方向,在基于深度学习的计算机视觉研究方向中,图像分类,图像分割,目标检测无疑是最基础最底层的任务,掌握好之后可以很快的迁移到其他方向,比如目标识别,目标跟踪 ...

  6. HALCON示例程序class_2dim_sup.hdev使用二维像素分类对图像进行分割

    HALCON示例程序class_2dim_sup.hdev使用二维像素分类对图像进行分割 示例程序源码(加注释) 定义Interactive并赋值,0:固定框:1:手工绘制框. Interactive ...

  7. 分类、检测、分割任务均有SOTA表现,ACNet有多强?

    (图片付费下载自视觉中国) 作者 | 路一直都在 来源 | 知乎专栏 Abstract 本文提出了一种新的自适应连接神经网络(ACNet),从两个方面对传统的卷积神经网络(CNNs)进行了改进.首先, ...

  8. pytorch 三维点分类_三维点云分类与分割-PointNet

    PointNet是对点云数据直接进行学习的开山之作, 这里结合PointNet-Pytorch代码,对PointNet网络结构与其思想进行阐述和分析. 点云数据的特性: 点云数据不同于图像数据,他有三 ...

  9. 图像领域的三大任务:分类、检测、分割 和深度学习的一些资源

    转自图像领域的三大任务:分类.检测.分割 计算机视觉在图片这个领域大体有三大任务:图像分类.目标检测.语意分割 这三个任务的难度是递增的:图像分类<目标检测<语意分割 或者说后两者是建立在 ...

最新文章

  1. 【行走的Offer收割机】记一位朋友斩获BAT技术专家Offer的面试经历
  2. 海天学院的打造IT人才讲座准备
  3. js之字面量、对象字面量的访问、关键字in的用法
  4. 学习笔记Hive(九)—— 实例:航空客户价值分析数据预处理
  5. Markdown:数学公式练习(3)
  6. Android .so和.a的makefile
  7. 大型网站技术架构(二)--大型网站架构演化
  8. 空间谱专题13:联合解算DOA(ML/AP)
  9. ERROR: Cannot uninstall ‘wrapt‘. It is a distutils installed project and thus we cannot accurately
  10. CICD实战——使用Jenkins实现自动化部署和环境隔离
  11. ltspice导入spice模型_LTspice 怎么自建 MOSFET 模型
  12. 从零开始学WEB前端——网页的骨架——HTML实战练习
  13. lhgdialog弹出框组件 参数详解(自己曾经开发的fuzz项目中用到过)
  14. php acs解密,RSA 加密及php实现
  15. es6删除对象的某个属性
  16. 微信第三方平台授权流程说明
  17. 华为服务器进入系统怎么退出安全模式,华为手机怎么进入和退出安全模式?华为手机进入安全模式按哪个键...
  18. POJ3666 线性dp+维度优化
  19. WEB 3D JS 使用【3Dmol.js】
  20. SQL中char\varchar\text与nchar\nvarchar\ntext的区别

热门文章

  1. 微软 .NET Core 3.0 版本发布
  2. 机器学习监督学习之分类算法---朴素贝叶斯理论知识
  3. 5工程添加emwin库_手把手教你打造专属自己的远程私有库——上
  4. visual studio 代码提示插件_程序员请收好:10个非常有用的Visual Studio Code插件
  5. nice值 linux进程,Linux进程优先级和nice值
  6. OpenSSL之PKey的EVP封装
  7. GateWay程序分析04_Delay.h
  8. 总结几个经典的java陷阱给大家。
  9. Server.MapPath方法的应用方法(转)
  10. ffmpeg七大库功能介绍——机翻、非人话