一、介绍
首先看一下时间线:
PoseCNN(2018.05)→DOPE(2018.07)→Yolo-6D(2018.12)
PoseCNN是三者里最早发布的文章,对后续的文章会起到一定的借鉴作用。比如,DOPE在处理遮罩问题,回归2D中心点时就借鉴了PoseCNN中向量领域的概念,这个方法待会会在PoseCNN的部分提到。另外,在精度方面,DOPE也拿PoseCNN进行对标。
值得一提的是,这三种算法均是以2D图像为输入。
(1)PoseCNN:将2D图像中的像素直接回归到6D位姿(R,t);
(2)DOPE:先预测图像中的9个关键点,然后用PnP算法回归到6D位姿(生成3Dbbox);
(3)Yolo-6D:利用yolo的算法对每个网格生成9个关键点的bbox,然后利用PnP算法回归到6D。
这三种算法的关键都是找到2D图像中物体的中心,然后回归到相机坐标系下物体的质心。
下面将具体介绍这三种算法的实现过程。
二、PoseCNN
1. 主要贡献:
(1)提出了用Hough voting的方法(参考ISM这篇论文,见文末链接)来预测出2D中心点,再加上预测物体到相机的距离来计算出物体的3D位置T。这种方法对于处理遮罩问题具有很好的效果。
(2)提出了ShapeMatch-Loss,损失函数,即计算预测出来的3D点到真实3D模型的最近点之间的loss,而不是去算预测点到它对应点之间的loss,这样可以处理对称的物体,防止它因为出现多个groundtruth的情况下,局部loss太大,影响模型精度。
(3)提出了新的数据集,YCB-Video dataset,视频数据集。
2. 实现细节
(1)模型框架
骨架是VGG16
这个网络主要包含了三个阶段。
第一个阶段是特征提取,通过卷积层和池化层对对不同分辨率的图片进行特征提取,最终得到一个通道数为512的feature map。
第二阶段是嵌入网络,通过转置卷积核来放大图片分辨率。
第三阶段是来对每一个像素进行分类(即作语义分割),并对每一个像素计算一个到中心点的向量来进行投票,得到2D中心点(Hough voting)。另外,通过ROI pooling层来筛选bbox,根据非极大值抑制原则。最后,通过三个全连接层来回归物体的旋转姿态R。
输出分为三部分:语义分割、3D位移、3D旋转
(2)3D位移估计
根据公式:
cx,cy是物体中心的2D坐标;fx,fy是相机的焦距;px,py是像素点坐标;Tx,Ty,Tz即3D位置
根据上式,我们只要确定物体2D中心坐标以及Tz(物体与相机之间的距离),即可确定3D坐标。
物体2D中心坐标的确定:
本文采用基于Hough voting的方法,灵感来源于Implicit Shape Model(ISM),对于每一个像素点p=(x,y)T,可以得到:
注意:这边进行了归一化处理,nx,ny都是单位向量,这样能够确保尺度不变。
关于LOSS:
u是类别label,v是ground-truth bbox。
loss包含了像素点的分类误差和像素点的定位误差。
对于背景的ROIs而言,没有所谓的bbox的ground truth,所以它的定位误差Lloc可以被忽略。因此bbox回归的误差可以表示为:
(3)3D旋转估计
关于对应点的均方误差计算:PoseLoss
关于最近点的均方误差计算(处理对称物体):SLoss
(4)评估标准(ADD指标)
非对称物体:
对称物体:
3. 关于尺度、实例化、遮罩和对称性的问题
(1)尺度:用了多尺度训练,在不同的层使用分别率不一样的图片进行特征的提取。
(2)实例化:使用了语义分割加像素点投票,即标记像素加聚类。
(3)遮罩:ISM(隐式形状模型)
(4)对称:ShapeMatch-Loss
4. 缺点
(1)缺少足够的数据集
(2)把相机参数放到了网络权重里,换一台相机可能会影响精度。
(3)需要ICP(Iterative Closest Point)算法进行优化
(4)未提及验证速度,是否能实时。
三、DOPE
1. 主要贡献:
(1)与PoseCNN不同,它没有对每一个像素进行预测,它预测是9个关键点。
(2)使用了合成数据,确保了数据量充足。
(3)结合了随机领域和写实照片,去让合成数据跟贴近现实。
(4)在机器人操作系统中进行了验证。
2.实现细节:
网络骨干:VGG-19,全卷积层网络。
输入:640x480x3的2D图片
输出:belief maps 和 vector field
belief maps:8个角点和1个中心点作为通道。它是置信图,是一个图像中所有像素所满足的分布,在本文中,从中提取单独的目标,通过寻找超过一定阈值的belief maps上的局部峰值位置,来定位物体。每一个物体的belief map有9个像素点。
vector field:8个向量(从角点指向中心点)
Ground Truth:belief maps的groudtruth是角点位置的2D高斯分布,σ = 2像素;vector field的groundtruth是指向对象质心的向量的归一化x和y分量。
Training:L2 均方误差损失
关于随机领域和写实照片:
3. 关于数据集、速度和抓取
数据集:结合了随机领域和增强现实的合成数据集
速度:全卷积层以及简化的single-shot belief map结构,速度快于PoseCNN,可实现实时。
抓取:进行了真实世界的抓取演示
4. 缺点
(1)无法解决对称问题。
(2)缺少闭环的refine过程。
(3)没有做验证速度对比实验。
四、Yolo-6D
1. 主要贡献:
(1)将目标检测yolo算法框架应用到了位姿估计。
(2)同时在所有网格中进行预测,提高了预测效率。
(3)实时检测,速度为50fps 在TitanX GPU上,并做了详细的速度对比分析。
(4)不需要3D模型数据去进行优化。
2. 实现细节
(1)数据集为LINEMOD
(2)网络骨架是darknet-19
(3)输入:416x416x3的2D图片
(4)输出:13x13x(9x2+1+C)
(5)Ground Truth:真实3D框到2D的投影点
在已知一组点云数据后,这样取点:
(6)Loss:IOU+坐标定位误差+分类误差
其中值得一提的是它的IOU函数:
这样做的目的是简化计算,不用算3D重合部分的凸包。
关于检测效果:
3. 关于速度和遮罩
(1)速度:做了速度对比,与SSD-6D和BB8
(2)遮罩:每个网格最多产生5组关键点,即允许一个网格内有5个物体相互遮罩。
4. 缺点
(1)缺少足够多的数据集。
(2)缺少在真实世界中机器人抓取的算法验证。
以上观点仅代表个人看法,如有错误请指正。
参考文献:
PoseCNN:
https://arxiv.org/abs/1711.00199
YOLO-6D:
https://arxiv.org/abs/1711.08848
DOPE:
https://arxiv.org/abs/1809.10790?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%253A+arxiv%252FQSXk+%2528ExcitingAds%2521+cs+updates+on+arXiv.org%2529