文章目录
解决什么问题
一个分离R和T的基于坐标的6D估计方法,能处理纹理缺失和遮挡的问题
本文创新点
- 提出CDPN 分离R和T的估计
- 提出Dynamic Zoom In(DZI)让位姿的估计对于检测误差更鲁棒,而且对特定的检测器不敏感
就是说什么样的size都能检测到?
答:不是,是说即使检测效果不是那么好,通过DZI也能得到一个不错的效果 - 实时,两阶段目标级别的坐标估计
- SITE 尺度不变性的位移估计
- 不需要预训练就能做多种检测
意思是不是就是说和PVNet不一样,不是每个网络只能训练一个物体?
答:不是,还是一种权重对应一种物体,至于这个不需要预训练,不知道神恶魔意思
本文IDEA来源
旋转和平移具有明显不同的性质,并受到不同因素的影响。
例如,图像中物体的大小和位置对旋转的影响很小,但对平移的影响很大。
相反,图像中物体的外观对旋转的影响很大,而对平移的影响很小。
[28] ,证实了直接从图像回归T的效果不错
方法
方法概述
-
先用检测器将物体的bbox检测出来,然后做DZI处理,输入到后面的网络中
为什么不用语义分割和实例分割:
语义分割:不方便处理一个图像中的多物体
实例分割:推理很慢,不能满足实时需求用两阶段的方法来做分割:
用一个检测器将物体检测出来并且裁剪,有了DZI,即使检测有一些误差也没有关系,快就够了,不需要那么精准。
分割直接和坐标回归融合在一块我这里为什么没有想,他为什么要把分割和坐标回归搞一块,这两个性质之间有什么共同点吗?
做了实验之后,才注意到这一点,什么样的值可以放到一个网络中去预测,这也是一个问题 -
预测裁剪出来的物体的分割图,预测每个属于该物体的像素在物体坐标系中的3D位置,然后用RANSAC/PnP来得到R
所以,对应关系为什么是这样的,为什么直接从图像估计平移,而不是旋转?或许跟前文提到的对应有关,外观会很大程度影响R,而很少影响T,所以图像就不用来观测R?就只是利用图像的外观位置,而不利用图像的外观?
那既然外观很能反映R,为什么不用图像预测R?
还是说"很大程度影响”和“很大程度反映”是两回事?虽然关联性很大但是不方便利用?
答:利用每个像素预测出来的3D坐标来预测R,就是用的外观。外观不只是颜色,还有“每个部位的位置信息,这也是外观”,所以是利用这个“外观”,不同的部位对应的位置知道了,那么就容易得出R -
对于裁剪的图,预测物体中心点和实际中心点的偏移,然后通过SIFT得到T
Dynamic Zoom In
一句话概括
生成很多size的检测框,根据均值和方差选出一个
解决的点
图片中物体的尺寸能随着到摄像机的距离随意改变,这极大的增加了回归出坐标的难度。如果物体很小的话们也很难利用特征
有那种特别小的车,是不是挺适合的?
所以作者根据检测缩放到一个固定的大小
大小都固定了,那坐标必然不是根据这个检测框里的物体决定的吧,应该是和检测的结果相关?
答:缩放后可以再映射回去
既然想检测的很鲁棒,就得考虑检测误差
是不是可以把车之间的不同大小当成一种误差来看?
答:不知道,感觉可以在,无论是error还是scale,本质就是一个数,能起到作用就行了
DZI方案能更好的适应多种检测,而不是每个类单单训练一种检测器
优点
- 使得带有检测误差的位姿估计模型也能鲁棒
- 因为训练过程是独立的,所以提高了系统的关于检测的可拓展性
- 通过更多的训练样本,提高了位姿估计的表现
是因为有很多很多框,所以训练样本更多吗?
训练是独立的,就是说检测和后面的处理并没有什么联系,所以只要检测器做的好就ok?
答:训练样本,看代码没多啥,或许是因为将很多预测出来的框合成一个,所以说训练样本更多吧;
应该不是检测器的问题,DZI就是为了解决检测器效果不是特别好的问题
细节
- 给定包含目标对象的图片,还有位置和尺寸,然后从公式1定义的被截断的正态分布里采样位置和。
- 采样的范围依赖于物体的高,宽,还有参数。
- 然后用和来提取目标,并且resize到一个固定的大小,resize的时候要保持长宽比不变,有必要的话就pad
这个和尺寸是什么呢,原始的图片会有这个?看样子是采集了很多很多的框,然后去一个均值之类的东西?就像下图?
答:和尺寸都是根据预测出来的框得出的,应该是接在DZI之后的操作。
是目标的中心的位置
是对应的的真实框的size
是标准正态分布
是累积分布函数
是限制采样范围的参数
来控制分布的形状
涉及到太多数学知识,回头再说
旋转
坐标置信度映射
原理
用物体的所有像素来预测3D坐标,来实现高效率
每个像素还预测一个置信度,来表示是不是属于这个物体
将坐标回归和分割搞一块的原因是:他们的输出size相同(因为都是每个像素都进行预测),他们的值具有精确的位置对应关系
难道说,像素的置信度分数也能作为坐标回归的权重吗?最终影响点的预测?
答:这里不是这个意思,应该就是说最后算loss的时候,都是精确对应的。不过这个权重思想或许有用
操作
网络:先用一个backbone提取特征。
然后,引入一个旋转头,由卷积和反卷积层够构成,最后处理成一个4通道的卷积置信度Map(),其中三个是坐标映射,还有一个单通道的置信度映射。
中每个像素都会编码3D坐标,每个通道道标一个坐标系。
Masked Coordinates-Confidence Loss
解决的点
为了解决背景的问题,背景的真实坐标咱并不知道,有些方法给指定了特殊值,这样起效是因为他们用的分类,而不是回归
是不是类似Multi Bin这样的方法?分类是指分成了很多个区间,然后分配到对应区间
答:应该就是,代码里也是用的bin
直接回归连续的坐标的方法,会促进网络在坐标map的物体边缘上预测出尖锐的边缘,这很有挑战性,而且趋向于生成错误的坐标
就是说,到了物体边缘,深度差很多,这样回归出来的值就差很大,就很尖锐,是这个意思吗?所以作者在后面只用了前景mask
答:做了实验,确实是效果很差,偏的蛮多的。作者说的分类,是指对应的3D坐标来分类,对于2D像素的预测,我不给你那么多的自由度,不让你做连续的值的会用,用bin\分类来束缚,能将值约束到一个还可以接受的范围内
操作
为了解决这个问题,提出了Masked Coordinates-Confidence Loss(MCC Loss)
就坐标Map而言,直接计算前景的loss。
用真实值的mask来计算
对于置信度map,用全部区域的loss
这个不用全部区域就没搞了
这样坐标预测不受没用的区域的影响,更准
是坐标map的通道数
是真实map
是预测map
是Hadamard积
Building 2D-3D Correspondences
解决的点
由于变焦,RGB图片上的尺寸通常和坐标图中的不同。
为了建立3D和2D的对应,将预测出来的坐标再映射到RGB图像中,这次的映射是不带预测的损失的。
指定RGB图像中物体的中心和尺寸是和,在坐标map中是和
map为什么也是2维的?这里是映射完了之后是这个?
这个操作是啥?
这个map是指resize之后?应该不是吧?
答:预测出3D还要跟2D做PnP,但是不能直接和DZI生成后的做,那样的话就不是原图的R,t了,所以现在要再映射回去
对于是映射到RGB的像素。
{ }代表无边界操作。
旋转用带有RANSAC的pnp就能算出来。
位移
作者做了实验,证明他们的方法更适合旋转的估计,而不适合位移:
和3D坐标都是从网络估计出来的,用PnP来求得
所以上面的映射为什么没用? 这个又是什么?
???不是直接回归T,用PnP求R吗?
答:这部分是作者做实验的部分,由这些推理出:应该直接从RGB图像回归出T
做了全面的分析,发现主要是3D坐标的缩放误差,很影响的深度.
不同物体的不同的,生成不平衡的位移表现。
所以,作者直接从图像学习,来避免的影响。
直接从图像估计的合理性:物体的位置和尺寸与到摄像机的距离直接相关。
那从图像就能知道到摄像机的距离?又没有预测深度,怎么搞?
是带有参数的神经网络
Scale-invariant Translation Estimation
这一块没有代码
一句话概括
预测图像中心和物体中心的差距(),然后结合DZI的输出()和相机的内参信息,求出
解决的点
在backbone中单独搞一个网络来预测,这种方法很不效率。
然而我就是这么做的
从检测的对象中估计很高效,但是有问题
应该就是那个相对问题
作者提出SITE,先从采样的局部patch中计算全局图像信息(包括位置和尺寸)。
啥意思,找的是啥,是每个检测出来的目标的吗?
然后,在backbone上加一个额外的位移头来预测尺度不变的位移。
表示从包围盒的中心到物体中心的偏移。
神奇,这个有什么用呢?或许真的是两步走?
找到物体的中心有什么用呢?还是说用来调整框?
中心点匹配上了又能怎么样???更好预测T?
回归的是相对偏移,而不是绝对偏移,对于DZI是恒定的,是缩放的深度。
跟yolo的思想一样,回归比例
都这么做说明还是这样更稳定
预测的是比例的话,即使对图片进行了缩放,也没有影响
下面这个式子,所以是计算出来的还是回归出来的
应该是算出来的,预测出来的是
然后,通过结合和来得到最终的
是物体的中心的射影
是原始图像的中心
是原始图像的被采样的物体的size
是DZI中的resize比例
的范围是
?
应该不是,看比例
位移头的loss是:
是预测的值
是真实值
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而不是坐标来估计位移,效果不一定更好,但是在所有的类上表现更均衡。
总结
- 分析问题的方法,对于R和T的影响因素的分析,是Idea的关键
- 训练的方法
- 关于T的处理还不太明白为什么有效
来源:CSDN
作者:KirutoCode
链接:https://blog.csdn.net/McEason/article/details/104041196