DPOD: 6D Pose Object Detector and Refiner
<DPOD>
Dpod: 6d pose object detector and refiner目录
Motivation
- 相关研究
- full 6D detection from RGB images
- SSD6D
- YOLO6D -> real
- AAE
- PoseCNN -> real
- PVNet -> real
- BB8
- iPose
- datasets
- LineMOD
- OCCLUSION
- refiners:在检测后还要再进行一次refinement
- full 6D detection from RGB images
Pipeline |
大概思路
- 首先,每个物体都有一个具体的材质图-三维模型对应;知道材质图上的uv坐标就知道物体模型三维坐标系下的坐标;vice versa.
- 然后,在预测的时候,事实上是预测RGB中的每个像素都属于哪个物体,属于那个物体的材质图中的哪一个uv像素;
- 这样,知道了RGB中的每个点对应物体的材质uv图,也就知道了每个点对应物体的三维坐标系值;这样一来,其实对于每个物体,就相当于知道了一些关键点的在物体三维坐标系下的坐标和图像坐标以及相机内参矩阵,于是可以利用PnP算法来计算相机在物体坐标系下的外参;反过来就知道了物体在相机坐标系下的坐标
- $\Delta$ 即关键feature是不直接预测rotations itself (因为会有pose ambiguity问题),而是预测uv map;
- 思考:我们如果同时预测$cos(\theta)$和$sin(\theta)$,是不是就可以避免这个问题?
- 预测的输出要满足$cos(\theta)^2+sin(\theta)^2=1$,这样可以吗?
- 搜索了一圈以后的回答: 似乎存在一个explicitly normalized 操作 现在这些回归四元数q的方法都可以做到这一点
- 只预测$cos(\theta)$ 不够,不够一圈;那么预测$tan(\theta)$可以吗?可能不如预测cos,sin的语义更强,毕竟旋转矩阵操作的时候本身就是由sin,cos构成的
- 预测的输出要满足$cos(\theta)^2+sin(\theta)^2=1$,这样可以吗?
- 思考:我们如果同时预测$cos(\theta)$和$sin(\theta)$,是不是就可以避免这个问题?
- correspondence mapping ==(2D-3D correspondence)==
- 有一个三维模型数据集
- 数据集中的每一个三维model的材质都是用correspondence map来建模的
- 用simple spherical 或者 cylindrical投射的方式给物体上材质
- 这样便建立了一个bijective(双射)函数:
- 给定一个材质图上的u,v点,我们便知道了其三维模型坐标;
- 给定了三维模型坐标,可以计算出材质图上的u,v点
- pipeline
- correspondence block
- 有3个通道的输出,预测3个信息:ID,u,v值
- 也就是预测图片中的每个像素属于哪个ID,以及属于那个ID的材质图中的哪个point
- pose block 负责预测pose
- 给定一个估计的ID mask,我们可以观察哪些物体在图片中被检测到了、以及他们的2D位置;
- correspondence 把每一个2D point映射到一个真实三维模型的坐标系下
- 这个三维坐标系其实是模型定义材质时候的那个三维坐标系
- 然后就可以用PnP算法来计算6D Pose;
- 相当于给定了一些关键点的2D坐标、3D坐标、相机内参矩阵,估计相机外参矩阵
- 相机外参矩阵是相机在物体三维模型坐标系下的位置,事实逆一下就是物体在相机坐标系下的位置
- correspondence block
- pose refinement
- Q: what?