YOLOff: You Only Learn Offsets for robust 6DoF object pose estimation
1.背景信息
- 输入RGBD图像
- 基于投票方法,基于点对匹配方法
- 最大的创新点在于在scene点云上估计3D关键点的方法,通过神经网络估计patch的3D中心点到3D关键点的向量,而不是直接估计3D关键点。这样的方法对待估计量增加了一个目标物体直径D的约束,作者说这更有利于算法学习。但是文章中也并没有比较估计向量和直接估计3D关键点的差异性。
2. 方法
2.1 2D Localization
- 从输入的RGB图像中提取小图像块
I i I_{i} Ii是第i个小图像块, b i b_{i} bi是与之对应的label.
对于 b i b_{i} bi的获得,并不需要人工标注,将3D目标model通过groundtruth的pose变换到相机坐标系下,然后求目标的2D投影作为二进制mask,将这个小图像块中二进制mask像素所占的比例作为 b i b_{i} bi - 分类网络具有与VGG相似的结构,但是层数和神经元更少,因为我们输入的是小图像块(大小48*48)
- 训练阶段
- 推理阶段
- 为什么不直接用语义分割网络?小图像块并没有特别的优势,如果只是为了分类,把目标的mask拿到的话。后面可以看到,使用小图像块数量越多,运行速度越慢。
2.2 3D points prediction
- 先从在世界坐标系中的object model用最远点采样的方法选择M个点(本文实验中M=9)作为关键点集
S
S
S, 根据
T
T
T, 把M个点变换到相机坐标系下,成为点集
S
T
S_{T}
ST.
- 对于第i个小图像块,求这个小图像块中心点像素在相机坐标系下的3D坐标。
3. 生成groundtruth的3D向量集
这里的 I i ′ I_{i}^{'} Ii′是小图像块分类之后,属于前景的那些小图像块(分类会给出置信概率,如果这个概率大于阈值,认为是前景目标);这里的 Y j Y_{j} Yj是指在 S T S_{T} ST中M个关键点中的第j个。
4.训练
5. 推理和投票
2.3 3D-3D Correspondence alignment
3.实验
1. 取小图像块细节
滑动窗口的方法取,背景希望更多一点,背景小块:前景小块=9:1
策略:
先以非重叠的方式提取(或者大步长的方式提取),然后输入到CNN网络中粗略地估计对象的边界框。
再在边界框定义的区域密集提取patch。
2. patch分类准确度
3. 3D点回归准确度
4. 目标位姿估计准确度
5. 推理时间
总体来说推理速度相当不快,在上面的与densefusion对比结果中使用的是m/n=8/4的配置,看到下表,推理需要2844ms,这还不算ICP的时间。如果取较大的patch或者较大步长的patch,准确度应该是不如densefusion的。
Voting的时候可以进行并行处理,因为M个点的voting任务彼此无关。
4.读后感
1. 为什么要用patch?为什么不考虑语义分割
2. 明确了自己采集类似于lineMOD这种训练数据集的mask数据标注方法:将3D模型从世界坐标系通过groundtruth的pose变换到相机坐标系下,然后求在相机视角下的2D投影即为groundtruth的mask。
3. acquire了一种表示3D关键点的方法,通过图像小块的中心(或者不用小块而用语义分割,使用dense逐点)与选定的关键点之间的向量来表示3D关键点。这种表示方法限制了向量在一个球内,有助于学习优化。
4. 第二种见到的投票方法-meanshift(在densefusion中用的是最大投票的方法,是第一种见到的投票方法)。