何为点云
-
N ✖ 3 matrix or N ✖ (3 + D) matrix
即一个n*3的矩阵,以及额外的信息包括颜色、法向量之类。
获取点云数据的渠道
- 激光雷达
- RGB-D相机:一种可以同时获取彩色图像和深度信息的相机。它通过结合红外线投影和红外线摄像头,能够获取场景中每个像素点的深度信息,并将其与彩色图像进行配对,从而实现三维重建和物体识别等应用
- CAD模型
- SfM(Sturcture-from-Motion)
- Depth from Images
点云的应用范围
- 机器人领域
- 自动驾驶领域
- 手机人脸识别(iphone的深度摄像头可以通过点云获取人脸信息,识别的精度和安全性更高)
Advantages & Difficulties
用uber来举例如何将velodyne 64线雷达应用在uber无人车上的话
首先是障碍物检测环节,前景的点(Orange points)被分离出来后使用特定的聚类算法(Clustering),将障碍物区分成一个个独立的个体(车,路障等等),这里就需要用到语义分割算法。之后车辆被标记成了不同的颜色,并使用模型拟合算法将车辆拟合成一个多边形。
例如uber会用到flann的库来进行点云的最邻近搜索。
激光雷达作为感知的源头需要搭载在车身上进行标定。下图是uber的标定工作,将车辆放在可360度旋转的平台上,进行图片角点检测。激光雷达和摄像头检测到平面的位置后,再计算出两者之间的相对位置。
然后是三维拟合
比如Mesh使用三角形拟合三维物体,在图形学里很好用,但是在机器人和计算机视觉领域就不那么好用,因为描述三角形往往比描述一个点要复杂。
然后就是voxel grid,这种形式很简单但并不高效,因为我们三维世界大部分空间是空的,会有内存浪费的问题。
然后就是octree(二叉树),他解决了效率的问题
最后就是点云,但点云的一些特性也使它难以处理。
-
Sparsity,密度问题尤其是在激光雷达里面,点云会随着距离逐渐稀疏,比如说百米以外一个车,反射回来不到十个点,就使得这辆车很难识别。
-
Irregular-difficulty in neighbor searching,另一个问题就是不规则。例如,图像的每一个像素都是排列规整的网格,如果我们要找一个像素的邻居,只需要上下左右一格就好,但是我们很难找到点云最近的一个指定范围半径的点。
-
Un-ordered-difficulty in deep learning,纹理信息,就会形成当三个人并排走在一起时,就会被识别成一辆车,在缺乏纹理信息时,三人站成一个人桥跟一辆车背面的宽度是差不多的。
如上面的矩阵所示,第一行和第二行被交换,最后N行被k行替代,但不管这些行如何交换,它们表达的都是同一个物体,对于深度学习而言,输入的矩阵不同,但是我们希望输出是一样,这就是深度学习中unorder的问题。 -
Rotation equivariance / invariance
深度学习方法介绍
当下的点云处理包含传统方法和前沿方法(深度学习)
- Classical Methods
- Explainable - It follows physics and we know why it works/doesn’t
work - Controtable - We know how to debug
- Explainable - It follows physics and we know why it works/doesn’t
- Deep learning Methods
- Simple
- High performance
- Data driven
传统方法是可控且精准的,我们可以用数学去精准描述这些方法如何实现,有什么可预期的输出。而深度学习就像一个黑盒子,我们不知道他是如何工作的,甚至也无法控制它去怎么工作,好处就是他非常简单,人人可用。
比如说做物体检测,深度学习绝对是完爆传统学习的方法, 而且你可能只需要写少于100行的代码就能实现一个非常好的物体检测网络。
传统方法的话针对不同的问题就会有不同的步骤、不同的算法。
Characteristic\Methds | Object Classification | Object Registration | Object Detection |
---|---|---|---|
Classical | Keypoint detection Keypoint description Support Vector Machine | Nearest Neighbor Search Iterative Closest Point | Background removal Clustring Classification |
Deep learing | Data collection Data labeling Train a network | Data collection Data labeling Train a network | Data collection Data labeling Train a network |