CDPN论文解读

夙愿已清 提交于 2020-01-20 12:14:34

解决什么问题

一个分离R和T的基于坐标的6D估计方法,能处理纹理缺失和遮挡的问题

本文创新点

  1. 提出CDPN 分离R和T的估计
  2. 提出Dynamic Zoom In(DZI)让位姿的估计对于检测误差更鲁棒,而且对特定的检测器不敏感

    就是说什么样的size都能检测到?
    答:不是,是说即使检测效果不是那么好,通过DZI也能得到一个不错的效果

  3. 实时,两阶段目标级别的坐标估计
  4. SITE 尺度不变性的位移估计
  5. 不需要预训练就能做多种检测

    意思是不是就是说和PVNet不一样,不是每个网络只能训练一个物体?
    答:不是,还是一种权重对应一种物体,至于这个不需要预训练,不知道神恶魔意思

本文IDEA来源

旋转和平移具有明显不同的性质,并受到不同因素的影响。
例如,图像中物体的大小和位置对旋转的影响很小,但对平移的影响很大。
相反,图像中物体的外观对旋转的影响很大,而对平移的影响很小。

[28] ,证实了直接从图像回归T的效果不错

方法

方法概述

在这里插入图片描述

  1. 先用检测器将物体的bbox检测出来,然后做DZI处理,输入到后面的网络中

    为什么不用语义分割和实例分割:
    语义分割:不方便处理一个图像中的多物体
    实例分割:推理很慢,不能满足实时需求

    用两阶段的方法来做分割:
    用一个检测器将物体检测出来并且裁剪,有了DZI,即使检测有一些误差也没有关系,快就够了,不需要那么精准。
    分割直接和坐标回归融合在一块

    我这里为什么没有想,他为什么要把分割和坐标回归搞一块,这两个性质之间有什么共同点吗?
    做了实验之后,才注意到这一点,什么样的值可以放到一个网络中去预测,这也是一个问题

  2. 预测裁剪出来的物体的分割图,预测每个属于该物体的像素在物体坐标系中的3D位置,然后用RANSAC/PnP来得到R

    所以,对应关系为什么是这样的,为什么直接从图像估计平移,而不是旋转?或许跟前文提到的对应有关,外观会很大程度影响R,而很少影响T,所以图像就不用来观测R?就只是利用图像的外观位置,而不利用图像的外观?
    那既然外观很能反映R,为什么不用图像预测R?
    还是说"很大程度影响”和“很大程度反映”是两回事?虽然关联性很大但是不方便利用?
    答:利用每个像素预测出来的3D坐标来预测R,就是用的外观。外观不只是颜色,还有“每个部位的位置信息,这也是外观”,所以是利用这个“外观”,不同的部位对应的位置知道了,那么就容易得出R

  3. 对于裁剪的图,预测物体中心点和实际中心点的偏移,然后通过SIFT得到T

Dynamic Zoom In

一句话概括

生成很多size的检测框,根据均值和方差选出一个

解决的点

图片中物体的尺寸能随着到摄像机的距离随意改变,这极大的增加了回归出坐标的难度。如果物体很小的话们也很难利用特征

有那种特别小的车,是不是挺适合的?

所以作者根据检测缩放到一个固定的大小

大小都固定了,那坐标必然不是根据这个检测框里的物体决定的吧,应该是和检测的结果相关?
答:缩放后可以再映射回去

既然想检测的很鲁棒,就得考虑检测误差

是不是可以把车之间的不同大小当成一种误差来看?
答:不知道,感觉可以在,无论是error还是scale,本质就是一个数,能起到作用就行了

DZI方案能更好的适应多种检测,而不是每个类单单训练一种检测器

优点

  1. 使得带有检测误差的位姿估计模型也能鲁棒
  2. 因为训练过程是独立的,所以提高了系统的关于检测的可拓展性
  3. 通过更多的训练样本,提高了位姿估计的表现

    是因为有很多很多框,所以训练样本更多吗?
    训练是独立的,就是说检测和后面的处理并没有什么联系,所以只要检测器做的好就ok?
    答:训练样本,看代码没多啥,或许是因为将很多预测出来的框合成一个,所以说训练样本更多吧;
    应该不是检测器的问题,DZI就是为了解决检测器效果不是特别好的问题

细节

  1. 给定包含目标对象的图片,还有位置Cx,yC_{x,y}和尺寸S=max(h,w)S=max(h,w),然后从公式1定义的被截断的正态分布里采样位置C~x,y\tilde{C}_{x,y}S~\tilde S
  2. 采样的范围依赖于物体的高hh,宽ww,还有参数α,β,γ,ρ\alpha,\beta,\gamma,\rho
  3. 然后用C~x,y\tilde{C}_{x,y}S~\tilde S来提取目标,并且resize到一个固定的大小,resize的时候要保持长宽比不变,有必要的话就pad

    这个Cx,yC_{x,y}和尺寸S=max(h,w)S=max(h,w)是什么呢,原始的图片会有这个?看样子是采集了很多很多的框,然后去一个均值之类的东西?就像下图?
    答:Cx,yC_{x,y}和尺寸S=max(h,w)S=max(h,w)都是根据预测出来的框得出的,应该是接在DZI之后的操作。
    在这里插入图片描述

在这里插入图片描述
1公式1
(x,y)(x,y)是目标的中心的位置
(h,w)(h,w)是对应的的真实框的size
s=max(h,w)s = max(h,w)
ϕ\phi是标准正态分布
Φ\varPhi是累积分布函数
α,β,γ,ρ\alpha,\beta,\gamma,\rho是限制采样范围的参数
σx,σy,σs\sigma_x,\sigma_y,\sigma_s来控制分布的形状

涉及到太多数学知识,回头再说

旋转

坐标置信度映射

原理

用物体的所有像素来预测3D坐标,来实现高效率

每个像素还预测一个置信度,来表示是不是属于这个物体

坐标回归和分割搞一块的原因是:他们的输出size相同(因为都是每个像素都进行预测),他们的值具有精确的位置对应关系

难道说,像素的置信度分数也能作为坐标回归的权重吗?最终影响点的预测?
答:这里不是这个意思,应该就是说最后算loss的时候,都是精确对应的。不过这个权重思想或许有用

操作

网络:先用一个backbone提取特征。
然后,引入一个旋转头,由卷积和反卷积层够构成,最后处理成一个4通道的卷积置信度Map(H×W×4H \times W \times 4),其中三个是坐标映射McoorM_{coor},还有一个单通道的置信度映射MconfM_{conf}
McoorM_{coor}中每个像素都会编码3D坐标,每个通道道标一个坐标系。

Masked Coordinates-Confidence Loss

解决的点

为了解决背景的问题,背景的真实坐标咱并不知道,有些方法给指定了特殊值,这样起效是因为他们用的分类,而不是回归

是不是类似Multi Bin这样的方法?分类是指分成了很多个区间,然后分配到对应区间
答:应该就是,代码里也是用的bin

直接回归连续的坐标的方法,会促进网络在坐标map的物体边缘上预测出尖锐的边缘,这很有挑战性,而且趋向于生成错误的坐标

就是说,到了物体边缘,深度差很多,这样回归出来的值就差很大,就很尖锐,是这个意思吗?所以作者在后面只用了前景mask
答:做了实验,确实是效果很差,偏的蛮多的。作者说的分类,是指对应的3D坐标来分类,对于2D像素的预测,我不给你那么多的自由度,不让你做连续的值的会用,用bin\分类来束缚,能将值约束到一个还可以接受的范围内

操作

为了解决这个问题,提出了Masked Coordinates-Confidence Loss(MCC Loss)

就坐标Map而言,直接计算前景的loss。

用真实值的mask来计算

对于置信度map,用全部区域的loss

这个不用全部区域就没搞了

这样坐标预测不受没用的区域的影响,更准

在这里插入图片描述
nc=3n_c=3是坐标map的通道数
MiM_*^i是真实map
Mi~\tilde{M_*^i}是预测map
ο\omicron是Hadamard积

Building 2D-3D Correspondences

解决的点

由于变焦,RGB图片上的尺寸通常和坐标图中的不同。
为了建立3D和2D的对应,将预测出来的坐标再映射到RGB图像中,这次的映射是不带预测的损失的。

指定RGB图像中物体的中心和尺寸是(cu,cv)(c_u,c_v)(S~x,S~y)(\tilde{S}_x,\tilde{S}_y),在坐标map中是(ci,cj)(c_i,c_j)(Sx,Sy)(S_x,S_y)

map为什么也是2维的?这里是映射完了之后是这个?
这个操作是啥?
这个map是指resize之后?应该不是吧?
答:预测出3D还要跟2D做PnP,但是不能直接和DZI生成后的做,那样的话就不是原图的R,t了,所以现在要再映射回去

在这里插入图片描述
对于(u^,v^)(\hat u,\hat v)是映射到RGB的像素。
{ }代表无边界操作。
旋转用带有RANSAC的pnp就能算出来。

位移

作者做了实验,证明他们的方法更适合旋转的估计,而不适合位移:
Pu,vP_{u,v}和3D坐标Qx,y,xQ_{x,y,x}都是从网络估计出来的,用PnP来求得TT
在这里插入图片描述

所以上面的映射为什么没用QQ? 这个PP又是什么?
???不是直接回归T,用PnP求R吗?
答:这部分是作者做实验的部分,由这些推理出:应该直接从RGB图像回归出T

做了全面的分析,发现主要是3D坐标Qx,y,zQ_{x,y,z}的缩放误差δscale\delta_{scale}δscale\delta_{scale}很影响TT的深度TzT_z.

不同物体的不同的δscale\delta_{scale},生成不平衡的位移表现。

所以,作者直接从图像学习TT,来避免δscale\delta_{scale}的影响。

直接从图像估计的合理性:物体的位置和尺寸与到摄像机的距离直接相关。

那从图像就能知道到摄像机的距离?又没有预测深度,怎么搞?
在这里插入图片描述
GG是带有参数ww的神经网络

Scale-invariant Translation Estimation

这一块没有代码

一句话概括

预测图像中心和物体中心的差距(TGT_G),然后结合DZI的输出(TST_S)和相机的内参信息,求出TT

解决的点

在backbone中单独搞一个网络来预测TT,这种方法很不效率。

然而我就是这么做的

从检测的对象中估计TT很高效,但是有问题

应该就是那个相对问题

作者提出SITE,先从采样的局部patch中计算全局图像信息TGT_G(包括位置Cx,yC_{x,y}和尺寸(h,w)(h,w))。

啥意思,找的是啥,是每个检测出来的目标的吗?

然后,在backbone上加一个额外的位移头来预测尺度不变的位移TS=(Δx,Δy,tz)T_S = (\varDelta _x,\varDelta_y,t_z)

Δx,Δy\varDelta _x,\varDelta_y表示从包围盒的中心到物体中心的偏移。

神奇,这个有什么用呢?或许真的是两步走?
找到物体的中心有什么用呢?还是说用来调整框?
中心点匹配上了又能怎么样???更好预测T?

回归的是相对偏移,而不是绝对偏移,对于DZI是恒定的,tzt_z是缩放的深度。

跟yolo的思想一样,回归比例
都这么做说明还是这样更稳定
预测的是比例的话,即使对图片进行了缩放,也没有影响

下面这个式子,所以TST_S是计算出来的还是回归出来的
应该是算出来的,预测出来的是OO

在这里插入图片描述
然后,通过结合TST_STGT_G来得到最终的T=(Tx,Ty,Tz)T = (T_x,T_y,T_z)
在这里插入图片描述
(Ox,Oy)(O_x,O_y)是物体的中心的射影
(Cx,Cy)(C_x,C_y)是原始图像的中心
(h,w)(h,w)是原始图像的被采样的物体的size
rr是DZI中的resize比例

rr的范围是

应该不是,看比例

位移头的loss是:
在这里插入图片描述
*是预测的值
~\tilde {*}是真实值

SITE能处理包围盒的中心和物体中心不一致的情况,还能处理遮挡的情况

换句话说,通过预测包围盒的中心的偏移,处理遮挡情况?反正包围盒是能预测出来的,曲线救国?

训练

作者发现,比起位移头,旋转头更难训练

首先,用backbone来训练旋转头来预测坐标置信度map,backbone用在ImageNet训练的权重来初始化,旋转头从零开始训练
然后,固定住backbone来训练位移头,也是从零开始

最后,同时微调带有两个头的backbone

用 with no grad 来固定?
答:是,但是,我尝试了类似的操作:先全部一起训练十个epoch,再固定住backbone,同时训练旋转head和位移head,又训了十个后准确度还下降了,应该不是过拟合的问题

数据准备

在数据集中,计算了每个类的角度范围,并且随机生成旋转,位移也根据数据集的平均值和方差来随机产生,然后用这两个东西来做render。

实验

度量:
2D Projection, 5cm 5 和 ADD

在DZI和MCC上做的Ablation研究。就是控制变量法

比较了基于检测的框架和基于分割的框架:
基于分割时用的Mask-RCNN,基于检测用的YoloV3
检测的效果更好

这里的基于是什么意思,以某一项为主导?检测不也用到分割了吗?
或许从头再捋一遍的时候就知道了?

在这里插入图片描述

使用SITE而不是坐标来估计位移,效果不一定更好,但是在所有的类上表现更均衡。

总结

  1. 分析问题的方法,对于R和T的影响因素的分析,是Idea的关键
  2. 训练的方法
  3. 关于T的处理还不太明白为什么有效
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!