文章目录
- 一、6D位姿定义
- 二、 问题提出
- 三、6D位姿求解方法分类
- 根据输入的数据不同,分为三类
- 四、解决方法
- (1)基于RGB图片的6D位姿估计
- 方法理念
- (2)基于点云信息的6D位姿估计
- (3)基于RGB-D图片的6D位姿估计
- 方法:
- DenseFusion
- poseCNN
- MaskedFusion
一、6D位姿定义
给定输入图片,6D位姿估计是估计从物体坐标系O到相机坐标系C的刚性转换,包括3D旋转R(根据物体的表面纹理信息影响物体外观)和3D平移T(T决定物体在图片中的位置和比例)
二、 问题提出
- 给定单幅RGB图像,估计图像中包含目标物体的6DoF位置姿态
- 6DoF(degree of freedom,即自由度)即6个方向的自由度,6DoF位姿包括了3维位置和3维空间朝向
三、6D位姿求解方法分类
根据输入的数据不同,分为三类
- RGB图像输入
- 点云(point cloud)输入
- RGB+点云输入
四、解决方法
(1)基于RGB图片的6D位姿估计
方法理念
先从输入的图片中提取特征,再将这些特征与已有的3D模型匹配,最后通过PnP(Perspective-n-Point)算法建立2D-3D坐标的对应关系,从而估计目标物体的6D位姿。
注:
1、 基于特征匹配的位姿估计方法速度快,鲁棒性好,但是对于弱纹理物体或者物体间遮挡严重时,基于特征匹配的方法往往会失败
2、 基于模板匹配的方法常用来处理低纹理的物体,通过不同距离的策略匹配输入图片和3D模型,但是当场景混叠或者物体表面发生形变时,基于模板匹配(不好)
3、基于深度卷积网络(CNN)的6D位姿估计直接从RGB图片中估计物体6D位姿(包括:PoseNet:直接从RGB图回归6D相机位姿;聚类模型的3D特征,估计物体6D位姿;单一视图的几何约束,估计3D物体参数并恢复6D位姿;基于SSD框架提出SSD-6D,通过InceptionV4分支将输入映射为6个不同尺度的特征图,再分别与大小为(4+C+V+R)的卷积核进行卷积,以确定类别、2D边界框、视觉点和平面旋转角度,再通过映射关系获取6D位姿)
4、 基于关键点检测将任务解耦为两个阶段,先检测2D图片中物体的关键点坐标,再通过PnP算法估计6D位姿(利用图像分割算法确定输入RGB图片中包含物体的区域,再从分割区域中检测关键点坐标)(包括:通过输出关键点的像素级热力图,解决物体间的遮挡问题;通过YOLO网络同时检测物体并估计其6D位姿;PVNet(2019CVPR),先检测出物体的可见部分,其上的每个像素预测一个指向物体关键点的方向向量,再用PANSAC对关键点进行投票,最后与物体的3D模型匹配,估计其6D位姿;分割驱动的6D位姿估计算法,物体的每个可见部分都会产生局部预测位姿,利用多个局部预测代替全局预测,算法的鲁棒性好;针对无纹理物体提出Pix2Pose,将物体3D模型坐标点转化为图片坐标中的RGB值,利用生成模型补全物体被遮挡的部分,再通过预测彩色图建立2D-3D对应关系,但当处理低纹理物体或低分辨率图片时,基于关键点的检测的方法性能下降,且不能实现端对端的优化)
(2)基于点云信息的6D位姿估计
1、PointNet直接处理点云数据,耦合分类,部分分割和语义分割,利用最大池化(MaxPool)解决云的无序性,利用T-Net保证旋转不变形,进一步用一组稀疏的关键点代表整个输入框架,对小扰动或者缺省值的鲁棒性较好。
2、PointNet++在不同尺度逐层提取局部特征,利用采样层,组合层,特征提取层得到深层特征,利用多尺度和多分辨率组合的方式有效解决点云数据不均匀问题
3、Frustum-PointNet结合2D检测算法来定位目标,再用其对应的点云数据视锥,进行边界框回归,实现3D目标检测和位姿估计
4、深度学习网络VoxelNet将三维云划分为一定数量的Voxel,随机采样和归一化后,对每个非空的Voxel进行特征提取,再经过3D卷积层进一步抽象特征,最后使用RPN(Region Proposal Network)网络对物体进行3D检测与位置回归
(缺点:点云数据量大,冗余度高和非结构化性强,存在特征提取难、计算量大,场景遮挡和空间形变敏感等问题)
(3)基于RGB-D图片的6D位姿估计
方法:
1、将深度信息和RGB信息一起输入神经网络来完成预测(如:densefusion)
2、使用深度信息来对RGB网络的输出进行refinement。不断迭代优化结果(如:poseCNN)
DenseFusion
1、网络使用RGB图像求出颜色嵌入图信息
2、使用深度图求出点云信息
3、将color embedding和geometry embedding两种信息融合后,送入神经网络进行位姿预测
poseCNN
分为三项任务语义分割,3D位置,3D旋转。使用VGG16作为骨干网络,引入了用于对称目标姿态估计的训练损失函数ShapeMatch-Loss,通过在图像中定位其中心并预测其与相机的距离来估计对象的3D平移;通过回归到的四元数表示来估计对象的3D旋转。在网络完成预测后,会调用ICP算法使用深度图来精炼网络
MaskedFusion
MaskedFusion在DenseFusion网络基础上进行修改,主要针对数据融合部分进行改进,在改进后MaskedFusion会消耗更多的训练时间,但是准确度更高,且不会消耗更多的预测时间。
该网络会先将RGB-D信息分为Cropped RGB图像、Cropped Depth图像和Cropped Mask图像一起输入网络,相比较DenseFusion网络更多的考虑了Mask语义信息(其包含了物体的形状信息)
整个结构分为三个子任务:
任务一:image segmentation
通过语义分割对场景中每个对象检测和分类->二进制mask
任务二:6D pose estimation
对每个对象从不同类型的数据中提取特征->逐像素融合->6D pose estimator->6D pose
任务三:pose refinement
优化部分完全采用了densefusion给出的优化网络
All is well !!!