一、介绍
首先看一下时间线:
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位移、