导读
我们提出了新颖的高效线段检测与描述器,用于同时在图像中检测线段并提取其描述符。我们设计了一种单阶段紧凑型模型,并提出使用中点、角度和长度作为线段的最小化表示形式,这也保证了中心对称性。
摘要
我们提出了新颖的高效线段检测与描述器(Efficient Line Segment Detector and Descriptor,简称ELSD),用于同时在图像中检测线段并提取其描述符。不同于传统流水线分别进行检测与描述的方式,ELSD使用共享特征提取器来完成检测与描述的任务,为如SLAM和图像匹配等高层次任务实时提供必要的线特征。首先,我们设计了一种单阶段紧凑型模型,并提出使用中点、角度和长度作为线段的最小化表示形式,这也保证了中心对称性。我们引入了非中心抑制法来过滤由线条交叉导致的破碎线段。设计了精细偏移预测以优化中点定位。其次,将线描述分支与检测分支整合,并采用端到端的方式联合训练这两个分支。实验表明,所提出的ELSD在Wireframe数据集和YorkUrban数据集上均实现了当前最佳性能,无论是在准确性还是效率方面。ELSD在线匹配任务上的线描述能力也超越了先前的工作。
1. 引言
图像表示是许多计算机视觉任务(如SLAM、运动恢复结构(SfM)及图像匹配)中的一个关键问题。局部点特征在这些任务中得到了广泛应用,而最近的研究开始探索结构性特征以实现更优的几何表示 。线段是最常见的人工环境中结构性特征。可靠地提取线段并在帧间进行匹配对于上述任务至关重要。
近期,基于卷积神经网络(CNN)的线段检测模型显著优于传统方法。这些模型包括两个阶段:首先检测节点,然后生成线段候选,并最终将每个线段的嵌入送入分类器。尽管两阶段方法可以实现高性能,但它们的运行速度无法满足实时应用的需求。TP-LSD首次通过引入线段的三节点表示实现了紧凑的一阶段检测。然而,TP-LSD 分别预测两个端点,未能利用线段的中心对称特性。因此,预测的根点可能不是两个预测端点的中点,甚至这三个点可能不在同一直线上。此外,当线条相互交叉时,根点的预测变得模糊不清,从而导致许多错误的属于断裂线段的根点被检测出来。另外,TP-LSD 在训练过程中没有区分难易样本。一些难检的线段根点可能未被正确检测。
线段描述子为了在高维度量空间中表示线段,要求线段描述子使得同一线条在相邻帧之间在这个度量空间内相近。目前存在一些基于CNN的线描述子 ,但是这些线描述子是单独设计的,并且尚未与线段检测器紧密结合。分开执行检测和描述也较为耗时。
为此,我们提出了ELSD,它能够以端到端的方式同时预测线段并推断线描述子。1) 我们引入了一阶段架构,该架构使用中心-角度-长度(CAL)表示法来向量化线段。我们的线检测器由两个模块组成:(i) 定位模块和 (ii) 回归模块。2) 如图3b所示,当线条相交时,中间点可能会引起检测上的不确定性,我们引入了线中心性来过滤掉属于断裂线段的虚假中间点,并采用改进的Focal Loss来更多地关注困难情况下的中间点。3) 在回归模块中,预测了几何图来提供旋转角和长度,并且我们通过预测细粒度偏移量来精炼中间点的位置,以补偿定位精度。4) 在线描述子分支中,我们通过对每条预测线段进行线池化来获得其描述子。该描述子通过随机仿射变换自监督学习训练。ELSD的流程如图2所示。
总结而言,主要贡献如下:
我们提出了一种能够在端到端方式下同时检测线段并推断线描述子的流水线。据我们所知,这是首次在一个紧凑的神经网络中统一了线检测器和描述子的工作。骨干网络中的主要计算资源被两个任务共享,并且两个任务分支可以联合训练,对检测性能几乎没有损失。
我们利用中心-角度-长度(CAL)表示法来编码线段,该表示法只需预测四个参数。为克服线条相交时的检测不确定性,我们提出了非中心抑制机制以去除断裂线段的中间点。通过偏移回归进一步精炼了中间点位置,从而使线段定位更加精确。
我们提出的ELSD在Wireframe和YorkUrban数据集上均达到了当前最佳的性能水平,不仅在准确性和效率上表现出色,而且其轻量版本在单个GPU(RTX2080Ti)上实现了107.5 FPS的速度,性能相当。
2. 相关工作
2.1 线段检测
基于深度学习的线段检测方法因其显著的表现而受到广泛关注。AFM提出了线段图的区域分割图和吸引场图,并通过一个挤压模块生成线段。L-CNN首次为线框解析器提出了两阶段流水线。它首先预测连接点图来生成线段建议,并利用LoI池化收集这些建议的特征。然后,一个线验证网络对建议进行分类并移除错误的线段。PPGNet使用图模型来表示连接点之间的关系。HAWP提出了一种4D整体吸引场图来生成线段建议,并通过连接点热图来细化这些建议。HT-HAWP结合了霍夫变换和HAWP模型,在线段检测方面取得了优异的结果。作为首个一阶段线段检测器,TP-LSD提出了一种三点表示法来编码线段,并以端到端的方式预测每条线段的两个端点。LETR应用了从粗到细粒度的变压器来进行线段检测。我们的ELSD与TP-LSD具有类似的流水线结构。我们使用CAL表示法来编码线段,并可以直接在图像中检测可能的语义线段,无需额外分类。
2.2 物体检测
最近,一些基于关键点的物体检测器取得了显著的性能提升。CornerNet通过一对角点关键点来定义每个物体,并将所有检测到的角点关键点组合形成最终的检测边界框,这种方法需要更复杂的后处理。CenterNet通过物体边界框的中心点来建模物体,并使用关键点估计方法找到中心点并回归其大小。FCOS将包含物体的所有像素视为候选位置,并提出了中心性(center-ness)来表示所有候选位置的重要性。PolarNet基于极坐标学习角点对,避免了在笛卡尔坐标系中学到的偏移量的大方差。这些基于关键点的方法具有良好的检测能力,速度快且结构简洁。受此启发,我们提出了一种新的线段表示方法,并进一步设计了一个基于关键点的线段检测器。
2.3 线段描述
类似于基于描述子的关键点匹配,线段匹配也是基于比较两帧中相同线段的描述子。MSLD通过计算线段邻域内像素梯度的均值和方差来构建线段描述子。LBD提出了一种线带描述子,在带状区域内计算梯度直方图,具有更高的鲁棒性和效率。近年来,一些基于深度学习的方法被用于学习线段描述子。LLD和 DLD使用卷积神经网络学习线段描述子,并取得了显著的性能。
3. 方法
3.1 线段表示
线段具有两个特性:1、由于中心对称性,中点决定了线段的位置,然后几何特征由角度和长度确定。2、由于线段是直线,其方向可以从局部部分一致地测量,这使得学习更容易并且需要较小的感受野。因此,我们提出了中心-角度-长度(CAL)表示法来向量化线段,该表示法只有四个参数:二维坐标、旋转角度和总长度。相比之下,TP-LSD中的三点表示有六个参数需要预测,这是冗余的,并且预测结果可能不满足中心对称性。给定角度,长度,以及中心点,线段的两个端点可以表示为:
3.2 整体网络架构
如图2所示,我们提出的ELSD包括一个骨干网络、一个线检测分支和一个线描述分支。我们的骨干网络是一个U形网络,包含一个编码器和两个解码器块。骨干网络接收尺寸为3 × 512 × 512的图像作为输入,并输出尺寸为128 × 128 × 128的共享特征。在骨干网络之后,架构分为两部分:一部分用于线检测,另一部分用于线描述。线检测分支可以从图像中预测线段。通过将共享特征和预测的线段输入到线描述分支中,我们可以进一步获得线描述符。ELSD可以在单次前向传递中产生线段并进一步提取固定维度的线段描述符。此外,与传统的先检测线段再计算线描述符的流水线不同,ELSD在这两项任务之间共享了大部分参数,从而减少了计算成本并提高了紧凑性。
3.3 线检测分支
我们的线检测分支以从骨干网络获取的共享特征作为输入,并分为两个模块:1) 定位模块,包含线中点检测头和线中心度检测头。在非中心抑制(NCS)中,这两个头组合起来以获得更准确的中心检测;2) 回归模块,包含几何回归头和细粒度偏移回归头。回归模块的输出是一对由(ρ, θ)组成的几何图和一对细粒度偏移图。最后,将两个模块的输出结合起来生成带有两个对称端点的中点作为线段检测结果。
3.3.1 定位模块
类似于TP-LSD,我们使用可变形卷积、两次空洞卷积(膨胀率=2)和标准卷积层来获得自适应的空间采样和较大的感受野,以预测中点图。此外,我们利用线中心度,即在线上的点离中点的距离有多近,来区分整条线的中点和碎片线的中点。线中心度通过下式计算:
其中, 分别是从线段上的点到两个端点的距离。显然,当该点为中点时等于1,当该点接近端点时逐渐减小至0。
线中心度模块与定位模块具有相同的架构。我们将预测的线中点图和线中心度图分别记作和。如图3所示,我们提出了非中心抑制(Non-Centerness Suppression, NCS)来过滤属于碎片线段的错误局部中点,并获得更准确的中心置信图,如公式(3)所示:
NCS的有效性解释如下。中点检测旨在获得精确的位置,但由于线条交叉容易导致误检。如图3所示,当一条线段与其他线条相交时,其两个端点和交点形成两条较短的碎片线段。虽然这些碎片线段的中点没有标注为真实值且不希望被检测到,但由于碎片线段满足线段定义,因此检测器倾向于检测它们。相比之下,如图3所示,线中心度不是精确的,但在全局线段上提供了非局部分布。这种非局部分布对于推理更为重要,并包含了潜在交叉线条的全局结构信息。也就是说,中点只能标记线段而没有意识到全局结构,而线中心度图则可以通过非局部非线性的多峰二维分布进一步编码全局结构信息。因此,通过公式(3)融合线中点图和线中心度图以抑制误检并获得最终中点。这样有效地缓解了TP-LSD遇到的模糊问题。
3.3.2 回归模块
我们的回归模块包含两个分支:精细偏移回归分支和几何回归分支。精细偏移回归分支用于预测由于下采样比率引起的中心偏移。通过将相应的偏移量加到预测中点的位置上,可以获得精炼的亚像素中点。几何回归分支可以预测相对于中点的角度和长度。我们的两个回归分支都包含两个3×3卷积层、一个1×1卷积层以及一个反卷积层。反卷积层用于将输出图恢复到256×256的尺寸。我们可以通过输出图上的中心位置 来索引相关的角度和长度。然后,可以通过公式(1)获得线段。
我们使用CAL表征而非笛卡尔坐标系表征,因为角度属于线段本身的几何属性。由于可以从线段的局部部分感知角度信息,因此预测角度比预测坐标更容易且更精确。在第4.3节中,我们在相同设置下进行了实验以比较CAL表征和笛卡尔坐标系表征的效果。
3.4 线段描述符分支
给定一组线段,线段描述符分支的目标是为每个线段学习一个固定长度的描述符,该描述符用于根据它们描述符之间的距离来区分不同的线段。首先,我们在来自主干网络的共享特征图上应用两次步长为1的3×3卷积。然后通过双线性插值将这个中间特征图调整至256×256。所得到的特征图称为密集描述符图,并用于接下来的线段池化(Line Pooling)。
线段池化(Line Pooling):类似于目标检测中使用的RoIPool和RoIAlign,线段池化用于将旋转的窄ROI挤压成一个描述符向量。如图4所示,线段的ROI定义为中心位于该线段的旋转边界框,具有与线段相同的长度和角度。ROI的宽度是一个超参数,取决于所需的感受野大小。然后,我们通过双线性插值从密集描述符图中裁剪出固定大小的线特征图。假设存在N个候选线段,每个线特征图的大小为,其中C是密集描述符图的通道维度,和分别代表线特征图的高度和宽度。进一步地,我们将一个步长为1的深度卷积及步长为S的最大池化应用于线特征图。最终,得到的特征向量被展平并送入全连接层,然后进行归一化,产生固定长度的最终描述符,记作d。
自监督学习:我们对图像应用随机仿射变换来生成同一场景不同视角的一对图像,假设平面场景或远距离场景在真实环境中是常见的。我们使用的仿射变换由一系列变换组成,例如平移、缩放、旋转和透视失真,涵盖了大多数由相机运动导致的视角变化。在输入图像上应用随机仿射变换后,我们可以获得图像到图像的确切变换。因此,我们只需通过将线段的一个端点从一张图像转换到另一张图像,并检查两个相应端点的距离是否足够接近即可标记匹配或非匹配线段。
在从头开始训练时,受到L-CNN中线采样模块(采用静态线采样器和动态线采样器来训练分类器)的启发,我们使用静态线段和动态线段来训练描述符。在训练阶段,静态线段是指注释的地面实况数据,而动态线段是指由检测分支预测的那些随模型训练进程变化的线段。因为在训练早期阶段线段检测不够准确,我们只使用那些与GT数据足够接近的检测到的线段作为动态线段。需要注意的是,在训练线段描述符分支时,提出的ELSD是在图像对的小批量上进行训练的。我们可以在数据准备期间获得一对图像中静态线段集的地面实况对应关系。一对动态线段的地面实况对应关系可由其最近的静态线段给出。如果一对动态线段的最近静态线段匹配,则标记这对动态线段为匹配;否则标记为非匹配。ELSD的整体训练过程如图5所示。总的来说,使用静态线段进行训练有助于初始阶段启动描述符训练。而使用动态线段进行训练则有助于将描述符与检测器的实际预测相结合。
3.5 损失函数
3.5.1 总损失
训练ELSD的总损失由线检测器损失和线描述符损失组成。需要注意的是,ELSD 的输入是一对带有随机仿射变换的图像,这些图像既包含GT线段也有GT线段与预测线段间的GT对应关系。这使我们能够同时优化这两个损失。给定一对图像,总损失可以表示为:
此处的表述意在说明如何结合线检测器与线描述符的损失来进行联合优化,具体损失函数的形式和细节需要参考原论文中的数学公式和实现方式。
我们在本工作中经验性地设置 λp=0.9, λd=0.1。
3.5.2 线检测器损失
在线检测器分支的训练阶段,四个输出头包括线中点图、线中心度图、几何图以及精细偏移图。这些图的真值(ground truth)是从原始线段标签生成的。线段检测的总损失如公式 (5) 所示:
其中,权重 = {25, 10, 1, 3}。
定位损失:给定一张图像,对于每个具有连续值的真实中点p,我们通过向下取整和向上取整来构造包含中点附近四个像素的中点置信图,并记所选像素集为v。然后使用二维高斯核 来计算v中每个像素的置信度,并通过除以v的最大值来归一化这些置信度。如果一个像素的置信度被多次分配,则保留其最大值。整个过程可以表示为:
然后我们采用了CornerNet方法中的变体Focal Loss:
其中和是超参数,N是图像中的中点数量。我们设 = 2和 = 4。
根据公式 (2),我们可以获得真值中心度图。然后我们使用加权二元交叉熵BCE损失来监督中心度的学习过程。
回归损失:假设真实的角度和长度分别为 ,相应的预测角度和长度分别为 。我们使用 损失和平滑的 损失作为几何回归损失,定义如下:
其中 = {300, 10}。此外,为了补偿由于下采样比率 (s) 导致的中点坐标离散化误差,我们额外预测了每个中点的精细偏移图 。偏移量使用损失函数进行训练:
注意,只有那些真实置信分数等于 1 的中点才会参与回归损失的计算。
3.5.3 线描述符损失
我们利用 Facenet中提出的三重损失(triplet loss)来学习线描述符。由于描述符经过 归一化,两个描述符之间的余弦相似性可以表示为 ,其中 是两个描述符。给定图像对 及其线段集合 ,设 是图像 的第 i 个线段及其对应的描述符,是图像 中与之匹配的线段的描述符,是图像 中与之不匹配但余弦相似性最大的线段的描述符。那么从图像 到图像 的难例负样本三重损失可以表示为:
其中 。N是图像A中线段的数量,m是间隔边距,用于同时增强匹配线段的一致性和非匹配线段的差异性。如第 3.4 节所述,我们既有静态线段也有动态线段,因此描述符损失的整体损失可以表示为:
其中 分别代表根据公式10计算的动态和静态描述符损失。本文中设置 和,这里的 E表示整个训练过程的总周期数,e 表示当前周期。简而言之,我们期望在训练初期更多地依赖静态损失,在检测器训练良好后更多地依赖动态损失,从而使描述符能够适应实际的检测结果。
4. 实验
4.1 实验设置
实现细节:我们使用 ResNet34和可选的 Hourglass 网络作为骨干网络。对训练集进行了标准的数据增强,包括水平/垂直翻转和随机旋转。输入图像调整为 512 × 512 的尺寸。我们的模型在四个 NVIDIA RTX 2080Ti GPU 和一个 Intel Xeon Gold 6130 2.10 GHz CPU 上使用 ADAM[14] 优化器训练了总共 170 个周期。初始学习率、权重衰减和批量大小分别设置为 1e−3、1e−5 和 16。在第 100 和 150 个周期时,学习率除以 10。
数据集:我们在 Wireframe 数据集上训练并评估我们的模型,该数据集包含 5000 张用于训练的图像和 462 张用于测试的图像。为了验证泛化能力,我们进一步在包含室内场景和室外场景的 YorkUrban 数据集上进行了评估,该数据集包含 102 张测试图像。
结构平均精度度量:线段的结构平均精度(sAP)基于预测端点与真实值之间的 L2 距离。如果距离小于某个阈值 ,则预测的线段被视为真阳性(TP),否则视为假阳性(FP)。我们设阈值 = 5, 10, 15并报告相应的结果,分别记作 sAP5, sAP10, sAP15。
基于热图的度量:基于热图的 F 值和平均精度是用于框架解析和线段检测中的典型度量。首先,我们将预测的线和真实值线分别光栅化转换为两个热图。然后可以计算像素级别的精确度和召回率PR曲线。最后,我们可以利用 PR 曲线来计算 和 。
4.2 在线段检测上的对比实验
我们将提出的 ELSD 方法与现有的线段检测方法及框架解析方法进行了比较。我们的模型使用 ResNet34 作为骨干网络,并且为了与其他方法公平比较,我们也更改了骨干网络为 Hourglass(标记为 Ours-HG)。Ours-Lite 是我们模型的一个更快版本。在 Ours-Lite 中,我们将输入图像调整为 256 × 256,并在骨干网络中添加了一个解码器。因此,每个头的输出图像是 256 × 256。表1展示了基于 sAP、APH、FH 和 FPS 的线段检测定量结果。
我们的 Ours-Res34 模型在两个数据集上达到了最高的 sAP,帧率为 42.6 FPS。它在 Wireframe 和 YorkUrban 数据集上的 msAP(sAP 的均值)指标上分别比 HAWP 高出 2.3% 和 1.8%。此外,当我们替换骨干网络为 Hourglass 网络(Ours-HG)时,在 Wireframe 数据集上仍能达到相当的 sAP 结果。由于 HAWP 和 L-CNN 是两阶段方法,它们的推理速度受到限制。此外,它们的线段依赖于一对连接点,而这些连接点通常是局部特征,包含较少的全局信息。另一方面,得益于更准确的中点检测和更紧凑的线表示方法,我们的方法优于 TP-LSD。为进一步比较,我们评估了类似于 L-CNN 中提出的连接点 AP 的中点 AP。ELSD 的中点平均 AP 比 TP-LSD 高出 2.9%,这意味着 ELSD 中的中点预测更为准确。
在基于热图的度量方面,ELSD 在 Wireframe 数据集上表现出显著的结果(APH=87.2),并且在 FH 指标上也取得了相当的成绩。由于我们的模型预测了线的角度,仅一线段的角度预测误差就能产生大量错误像素,但这对 sAP 影响较小。因此,我们模型在基于像素的度量指标上的改进不如 sAP 明显。
我们的轻量级模型可以达到 107.5 FPS,比其他基于学习的方法快 1.4 至 48.9 倍,同时精度下降有限。我们使用 Ours-Res34 作为代表模型,并在图 6 中描绘了两个数据集上的精确度和召回率曲线。我们的 ELSD 在 Wireframe 数据集上特别是在 sAP 指标上优于其他线段检测方法。此外,ELSD 在 YorkUrban 数据集上的泛化能力优于其他两阶段方法。
4.3 线段检测的消融研究
我们在 Wireframe 数据集上进行了消融实验,结果如表 2 所示。
NCS(Non-Complete Segment 抑制):NCS 用于抑制断裂线段的中点并保留整个线段的中点。根据编号 3 和编号 1 的对比,这将 sAP 10 从 0.680 提升到了 0.689。
描述符(Descriptor):检测和描述的多任务学习导致检测准确性 sAP 10 几乎没有减少,从 0.689 微降至 0.685,见No. 1 和No. 2 的对比。
上采样(Upsample):为了实时检测线段,我们使用了 128 分辨率的共享特征图,这与 L-CNN 和 HAWP 的设置相同。然而,相比于更高分辨率,在 128 分辨率下预测中心要困难得多。通过上采样中点图、中心性图、几何图以及精细偏移图到 256 分辨率来解决这个问题。因此,sAP 10 从 0.658 提升到了 0.689,见No. 4 和No. 1 的对比。因为我们只进行了一次双线性插值或反卷积上采样,所以几乎没有影响推理速度。
Focal Loss:我们使用了一种变体的Focal Loss代替标准的二元交叉熵(BCE)损失来训练中点图。由于我们将中点预测视为一个二分类问题,所使用的Focal Loss能够聚焦于那些难以分类的中点样本。引入Focal Loss后,sAP 10 从 0.660 提升到了 0.689,见No. 5 和No. 1 的对比。
CAL 表示:提出的 CAL 表示与 TP-LSD 中的三点表示进行了对比。通过替换三点多边形表示(Tri-points)为 CAL 表示,sAP 10 从 0.679 提升到了 0.689,见No. 6 和No. 1 的对比。这是因为三点多边形需要回归更多参数(4 对 2),而角度相比位移更容易学习。
4.4 线段描述的对比实验
为了评估线段描述符的性能,我们将我们的方法与 LBD和 LLD 进行了比较。我们在 ScanNet 数据集的一个子集上测试了所有算法,ScanNet 是一个带有 3D 相机姿态注释的 RGB-D 视频数据集。我们选择了大约 1000 对具有较大视角变化、旋转变化和尺度变化的图像对进行定量评估。
进一步计算由我们的模型检测到的线段对应的线描述符。然后,我们通过检查对应线段的重投影误差是否低于某个阈值来获得图像对的真实匹配线段。找到最近邻来进行描述符匹配,并执行交叉验证,从而得到预测的对应线段。我们报告召回率、精确度和 F 值来评估不同的描述符。在实验中,我们使用了 OpenCV 实现的 72 维 LBD 描述符,以及作者提供的预训练 LLD 描述符模型。同时,我们的模型分别设置了描述符长度为 256、64 和 36。
结果如表 3 所示。我们的描述符在各个方面显著优于 LBD 和 LLD,尤其是在召回率方面。LBD 描述符是基于人工设计的,可能不是最优解。LLD 描述符和其他类似的基于学习的描述符是通过给定的线检测器(如 Edlines)检测到的线段训练的。然而,这些检测到的线段与数据集中标注的线段之间存在差距。相比之下,我们的描述符与我们的线检测器配合良好,因为它们共享大部分参数和表示,并且其训练是耦合的,可以进一步降低计算成本。ELSD(以 ResNet34 作为骨干网络)同时具备线检测器和线描述符,总体推理速度可以达到 38 FPS。此外,64 维描述符的表现与 256 维描述符相同,并且在准确性上优于 36 维描述符。
5. 结论
本文提出了一种快速且准确的模型 ELSD,该模型能够在单次前向传递中同时检测线段及其描述符,允许两项任务共享计算和表示。为了检测线段,我们首先利用 Center-Angle-Length (CAL) 表示法来编码线段,充分挖掘线段的几何特性。此外,引入了一个中心性图来通过非中心性抑制 (NCS) 过滤错误的线段。我们提出的线检测器在两个基准上的准确性和效率方面都达到了最先进的水平。此外,我们的模型还实现了单个 GPU 上的实时速度。轻量级模型可以达到 107.5 FPS 的高速度,同时保持相当的性能,因此对于许多需要高实时性能的高层次任务(如 SLAM 和 SfM)非常有用。
—END—
论文链接:https://arxiv.org/pdf/2104.14205v1
请长按或扫描二维码关注本公众号
喜欢的话,请给我个在看吧!