Press "Enter" to skip to content

ImVoteNet:论文回顾与代码分析

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

实现最先进的算法似乎是一项相对简单的任务。从某个存储库复制粘贴几行代码,然后就可以了!即使我们考虑令人讨厌的编译错误和不兼容的版本错误,实现别人的代码也不值得称赞。然而,如果在花了一周的时间尝试解决令人沮丧的错误之后,您的模型最终得到了训练,但仍然不能在一组随机的图像和点云上使用它,那该怎幺办?要理解为什幺无法立即进行ImVoteNet演示,恐怕您必须继续阅读。如果这看起来有点乏味,你可以直接跳到我的GitHub账户,立即尝试3D物体检测演示。 here

 

话虽如此,让我们来看看这篇论文是关于什幺的。

 

引言

 

“ImVoteNet”一词只不过是“Image”和“VoteNet”的混合词。这里的Image指的是简单的RGB图像,而VoteNet是作者建立该网络的另一个3D对象检测架构。VoteNet论文于2019年发表,展示了仅使用点云输入的最先进的性能。 ImVoteNet VoteNet

 

但是,点云数据有其固有的局限性。它们稀疏,缺乏颜色信息,并且经常受到传感器噪声的影响。另一方面,图像具有高分辨率和丰富的纹理。此外,图像可以覆盖由于反射表面而经常出现的有源深度传感器的“盲区”。因此,作者得出结论,2D信息可以补充点云提供的3D几何图形,这反过来又是该体系结构背后的动机。

 

本文介绍了一种稳健的2D和3D数据融合技术,将最新成果提高了5.7MAP。这里的“map”指的是模型已经训练过的具有挑战性的太阳RGB-D数据集中10类对象的平均精度。 SUN RGB-D dataset

 

ImVoteNet架构

 

为便于理解,我们将上述结构分为3个部分:

 

让我们把这几个版块分别撞击一下,彻底了解一下:

 

1.提取图片选票

 

ImVoteNet的官方存储库直接从预先训练的更快的RCNN模型中提供2D探测。通过使用这些下载的检测文本文件中提供的信息,以几何、语义和纹理线索的形式生成2D图像投票。

在深入研究什幺是“图像投票”或“线索”之前,让我们先简要了解一下RCNN的输出速度是什幺,因为它用于提取上述线索。

 

根据ImVoteNet的官方存储库:

我们可以看到,来自预先训练的更快的RCNN模型的2D检测被直接提供给下载。预先训练的模型本身不提供下载。下载并解压缩给定文件将生成与数据集中的每个图像相对应的.txt文件。

 

每个.txt文件包含100行,对应于每个图像检测到的100个对象。下面是示例文本文件的前几行:

让我们快速分析一下这些值是什幺:

对于每一行,首先我们有来自模型训练过的10个类的类标签。这10门课是床、桌子、沙发、椅子、卫生间、书桌、梳妆台、床头柜、书架和浴缸。
接下来的3个值是冗余常量。
接下来的4个值以Xmin、Ymin、XMax和Ymax的顺序定义边界框,其中最小值定义边界框的左上角,最大值定义边界框的右下角。请注意,这些值未标准化。(图片大小:730像素宽x 530像素高)
最后一个值是客观性分数,它是一个介于0到1之间的浮点值。它简单地定义了检测器对它所说的检测到的对象的置信度。

下面是一个代码片段,它加载给定的文本文件,并根据我们提取讨论的线索的要求对其进行处理。

 

几何、语义和纹理线索的提取

 

 

几何线索

 

首先,什幺是形象投票?

 

引用作者的话说,“图像投票在几何部分只是一个连接图像像素和该像素所属的2D对象边界框中心的矢量。”

 

几何提示:将图像投票提升到3D

 

借助固有的相机矩阵,可以将图像平面中的2D对象中心表示为连接3D对象中心和相机光学中心的3D空间中的射线,从而可以将图像平面中的2D对象中心表示为连接3D对象中心和相机光学中心的3D空间中的射线。这如下图所示。

设P=(x1,y1,z1)-点云中对象表面上的点

 

C=(x2,y2,z2)-三维对象的中心点

 

P=(u1,v1)-点P在2D图像上的投影

 

C=(u2,v2)-点C在2D图像上的投影

 

我们可以观察到,2D投票将3D对象中心的搜索空间减少到只有z值改变的线(线OC)。

 

此外,我们可以将PC矢量,即从点P到投票中心的真3D投票表示为

以及PC,即假设焦距f为

Y维的相似关系为v1/f=y1/z1和v2/f=y2/z2

 

因此,我们计算伪3D投票向量PC‘,其中C’在射线OC上,如下所示

假设点P的表面深度和中心深度相同,考虑到对象离相机不是很近的事实,这是合理的。

 

因为我们假设Z1=Z2,所以上面提到的深度关系表示错误(导出后沿x轴)

根据PC‘和OP,我们可以得到真实的几何提示

在执行了一项规范之后,

让我们讨论一下上面方程式中的三个维度。首先,曲面点P需要通过2D图像传递给它的几何信息,并且正是在这种情况下,搜索空间被压缩到1D(射线OC‘)。计算的是2D图像投影到3D的位置。最后一个维度是到3D表面点的光线方向信息,以补偿由于深度近似(Z1=Z2)引起的误差。

 

目前,我们对图像投票是什幺有一个直观的认识,如2D边界框的空间坐标所表示的。然而,每个图像投票也会使用其语义和纹理线索进行增强。让我们来看看它们是如何定义的。

 

语义线索

 

与稀疏点云相比,RGB图像可以更好地表达图像内容的语义。这种来自2D图像的输入将有助于区分具有相似几何形状的类别,例如桌子与桌子或床头柜与梳妆台。语义提示背后的思想是用一个简单的单热点类向量来表示在图像中检测到的每个边界框,该向量具有该类的置信度分数。

 

对应于特定边界框的这一热编码矢量被传递到在该2D框内投影的所有3D点。如果一个三维点落入多个2D长方体,则会复制该点,而未落入任何长方体的点将使用全零特征向量填充。总而言之,我们将提取一个10维语义线索向量(与10个SUN RGB-D类相关联)。

 

纹理线索

 

简单地说,纹理提示是图像的原始RGB像素值。它们的重要性在于,与点云不同,2D RGB图像捕获非常密集的高分辨率信号,进而显示良好的纹理内容。首先,首先将三个通道图像像素归一化为[-1,1],然后转换为一维。请注意,我们将提取一个3维纹理线索矢量。

 

请注意,除了这些提示之外,还提供相机参数(内在(CALIB_K)和外在(CALIB_RTILT)矩阵)和常量值(比例)作为输入,以帮助将这些提取的特征提升到3D。在进入下一节之前,我们先简要讨论一下这些输入的作用。

在SUN RGB-D数据集中定义了五个坐标系。其中两个是直立的深度坐标(Z是上轴,Y是向前的,X是向右的)和相机坐标,如上图所示。直立坐标由Rtilt倾斜,因此Z为重力方向。点云输入(下面讨论)以直立坐标表示,因此3D伪投票也需要转换到相同的坐标。这是因为网络无法估计沿Z相机方向的深度位移,因为从相机到直立坐标的旋转角度对于网络是未知的。

2.深坑投票

 

该体系结构的这一部分基于VoteNet,这是一个前馈网络,输入3D点云并输出用于3D对象检测的对象建议。让我们粗略地看一下VoteNet管道。

 

输入为N×3的点云,即由具有3个坐标属性的N个点组成的点云。首先,点云通过PointNet++骨干网络作为特征提取器。

特征提取器对M个种子点进行采样,同时还用C维特征向量增加每个点。因此,每个点都与3+C(坐标+深度)特征的属性相关联。

 

然后通过多层感知器(MLP)推送这些功能以生成投票。这正是ImVoteNet架构的基础。

注意,K个种子等同于M个种子,而F维向量只不过是来自VoteNet管道的C维向量。

 

然而,对于VoteNet,选票由另一个点云网络直接处理,以生成对象建议和分类分数,而对于ImVoteNet,它们与提升的2D选票融合,进行多塔训练。ImVoteNet选择了多模型方法,这将在下一节讨论。

 

总结;

 

以下是在上面讨论的两个部分的代码实现过程中使用/观察到的一些见解:

输入点云由20K(=N)个随机采样点组成。点云也是通过从飞翔上的深度图像中随机亚采样点来扩大的。使用翻转、沿上轴均匀旋转[-30,30]度、均匀缩放[-.85,1.15]等增强技术。
20k点云输入由PointNet++主干转换为1024(=M)个种子。每个种子与其3个空间坐标和256(=F)维特征向量相关联。
总结2D图像投票生成流水线,每个复制的种子点都有以下图像投票特征的串联来增强其特征:5维提升的几何线索(2个用于投票,3个用于射线角度)、10维(每类)语义线索和3维纹理线索。因此,融合的种子点与其3个空间坐标和274(=F‘)维特征向量相关联。

3.特征融合和多塔训练

 

因此,现在我们从点云主干网络获得了K x(3+F‘)Dim提升的2D投票和K x(3+F)Dim 3D点要素。这些特征被进一步串联起来进行训练。

如上图所示,我们有三个训练塔:形象塔、连接塔和点塔。各自的输入仅为图像特征、关节特征和仅点云特征。每个塔都有相同的检测3D对象的目标任务,但它们都有自己的3D投票和盒子提案网络参数和自己的损失。之所以有三个独立的训练塔,是为了避免级联设计。例如,如果3D对象建议仅基于2D对象检测输出,则2D中错过的对象也将在3D中错过。

 

然而,对于这样一个多塔网络结构,由于学习速度的不同,两种模式可能最终会被第三种模式所主导。这可以通过渐变混合来避免,而渐变混合本身就是另一个新概念,不幸的是它超出了本文的范围。 gradient blending

 

因此,最终训练损失是三个检测损失的加权和:

请注意,在推断时,仅使用连接塔来最小化计算开销。

 

结论

 

本文讨论了ImVoteNet的体系结构,将其分为三个部分,以便对3D对象检测流水线有一个全面的了解。与以正确格式生成模型输入有关的代码片段也支持它。

 

参考文献

 

https://arxiv.org/abs/2001.10692 https://arxiv.org/abs/2001.10692

 

https://github.com/facebookresearch/imvotenet https://github.com/facebookresearch/imvotenet

 

https://www.programmersought.com/article/80886180098/ https://www.programmersought.com/article/80886180098/

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注