文章目录
- 1. 主要思想
- 2. 具体方法
- 2.1 数据处理方式
- 2.2 网络架构
- 3. 实验支撑
- 4. 总结启示
- 5. 相关文献
paper 原论文的链接
code: 源代码链接
paper全称:SqueezeSeg: Convolutional Neural Nets with Recurrent CRF for Real-Time Road-Object Segmentation from 3D LiDAR Point Cloud
1. 主要思想
通过什么方式,解决了什么问题
当下问题的分析:
传统方法: 过滤地面–>聚类其他点的实例–> 手工提取特征–>进行分类
然而存在弊端:
- 不能很好的一般化应用
- pipline的方式可能导致每个阶段误差累计,从而效果差
- 许多地面消除方法依赖于RANSAC, GP-INSAC,agglomerative clustering. 这些方法都不稳定。
所以作者提出了本文的算法
基本思想:将3D点云投射到前视图上,然后再利用深度学习分割方法获取点的类别。
2. 具体方法
说明怎么解决的,具体设计是什么, 有什么启发性思考(作者的创新点)
2.1 数据处理方式
1. 映射方式: 将点的坐标系表示成球坐标的方式,用垂直角度 θ \theta θ和水平角度 Φ \Phi Φ. 如下图公式:
效果图:
- 计算水平角度和垂直角度,垂直方向等于激光线数;水平角度范围90度,根据投射平面宽度等分。
- 通道数[x,y,z,i,r], 其中r为 ( x 2 + y 2 + z 2 ) \sqrt(x^2+y^2+z^2) (x2+y2+z2)深度信息
- v2版本添加了一个mask通道,用来表示该像素中是否含有点。
2. 实际的映射
- 激光的每个水平线束应该投射为一行,但是实际上每一水平线束实际的垂直角度是不一致的(由于车的抖动导致的),所以一束水平线束不能被投影到一行里,所以作者实际根据每一个点是那个线束发出的来进行投影的,而不是根据公式计算垂直角度进行投射的, 而KITTI数据集的排列是按照线束进行排列的,一个线束的点挨在一起。所以可以很好滴实现这个操作,(而我们的点云录制过程每个点没有线束标记,所以不能很好的投射)
3.利用3D场景构建扩增数据集
作者采用DeepGTAV(用Script Hook V as plugin),构建3D场景下的点云扫描数据。
- 为了使得模拟场景切合KITTI,作者添加了一些噪声,使得和KITTI数据接近
2.2 网络架构
1. 整体网络结构
2. 主要firelayer模块
使用的主干网络是squeezeNet,主要模块是FireModule
3. CRF模块
该模块使用CRF进行分割校准
关键点
- 使用SqueezeNet网络进行特征提取时,只进行横向的卷积采样; 也就是下采样的时候在宽度上进行下采样,而不在高度上。因为输入图片高度和宽度比太小,所以不在高度上采样。
- CRF使用的是RNN方式进行模拟的, (未了解)。
- fire module结构可以学习一下。
3. 实验支撑
记录一些关键实验的结论分析,具有启发性的实验和结论
性能对比:
- instance-level是采用传统方法DBSCAN
速度对比:
通过虚拟场景点云数据的增广效果:
4. 总结启示
针对中心思想和实验结论的总结和扩展思考
扩展思考 : 也就是用自己已有的知识或者自己的“土话”,重新理解paper(费曼学习法的精髓-便于记忆和举一反三的应用)
模型设计方面
- 根据数据特性,只下采样宽度
应用方面:
- 可用于障碍物检测(可能只能针对实体障碍物), 可能先对投影数据进行膨胀,将护栏这种障碍物变成密集障碍物,然后再分割。将空隙中的障碍物变成护栏的时候消除其像素特征。
- 采用前视图识别路沿如何 (不会遮挡地面),可以达到快速的识别
5. 相关文献
主要的比较贴近的文献,关键性文献
- DeepGTAV
- scripthook