Boundary Attention——谷歌提出边界注意力模型实现超越像素级检测精度

简介

谷歌的最新研究工作提出的参数化的交汇空间方法为解决低分辨率图像中的目标检测和图像分割等任务提供了新的可能性。该方法通过引入交汇空间参数化,克服了低分辨率图像中信息丢失的问题,使计算机视觉系统能够更好地理解图像中的几何结构和特征。

在这项研究中,提出了一种名为 Boundary Attention 的模型,该模型能够在任何分辨率下找到微弱的边界,并推断图像中的几何原语,如边缘、角、交叉点和均匀外观区域。该模型的输出不仅能够用于目标检测和图像分割,还可以应用于RGBD图像的填充和非照片真实主义风格化。

这项研究的重要性在于它为计算机视觉领域带来了潜在的开创性研究。通过引入交汇空间参数化和Boundary Attention模型,研究人员提出了一种全新的方法,可以在低分辨率图像中更准确地捕捉和理解关键特征,为目标检测、图像分割、图像修复等任务提供了新的思路和方法。

这一研究成果的应用潜力广泛,可以在各种实际场景中发挥作用,包括但不限于医学影像分析、自动驾驶、安防监控等领域。随着该方法的进一步发展和优化,预计将在未来为计算机视觉技术的发展和应用带来更大的推动力。

论文地址:https://arxiv.org/abs/2401.00935

问题背景

研究背景主要是解决在噪声严重影响下的图像边缘检测问题。作者认为,这个问题的解决完全依赖于对边界的基本拓扑和几何属性的强大模型,即边界是由连接角点或交叉点的局部平滑曲线构成的。

受早期计算机视觉工作的启发,该模型提供了一种可以学习的无光栅边界推断方法,能够从深度学习中受益,同时实现了许多经典自下而上技术的优点,如对噪声的鲁棒性、亚像素精度和信号类型之间的适应性。

这意味着该模型结合了深度学习的能力与传统自下而上技术的优点,以应对在噪声干扰下的图像边缘检测问题。通过学习边界的基本拓扑和几何属性,模型能够更准确地推断图像中的边界,从而提高边缘检测的准确性和鲁棒性。这一方法的创新之处在于它将深度学习与传统技术相结合,从而克服了传统方法在处理噪声严重影响下的图像边缘检测问题时的局限性。
在这里插入图片描述

模型原理

Image representation
如下图所示,首先,模型采用了密集的邻域注意力,使用密集的、步幅为 1 的 token。虽然在图中以非重叠的形式呈现,但实际上它们是重叠的,这样设计是为了更清晰地展示结构。整个模型对离散空间的平移是不变的,这意味着它适用于任何分辨率的图像。每个 token 编码一个自适应大小的几何原语,用于表示像素周围未光栅化的本地边界。通过边界注意力,这些 token 逐渐变得几何一致。模型的输出是一个重叠的原语字段,这直接暗示了对输入图像的边界感知平滑和图像边界的无符号距离映射。
在这里插入图片描述

Boundary Primitives
在这部分内容中,作者主要讨论了如何表示图像中的局部区域的几何结构,并介绍了如何在图像处理中利用这些结构。具体来说,作者定义了一个更大的分区簇,以包含更多种类的局部边界结构,例如边缘、角点和交叉点等。为了描述这些局部结构,并将它们与图像的其他部分连接起来,作者提出了边界注意力机制。

边界注意力机制通过在像素周围密集地应用局部注意力操作,逐步优化与每个像素相关的局部边界变量场。这使得模型能够从输入图像中提取边界信息,并生成一系列可重叠的几何原语。这些几何原语用于生成图像边界的无符号距离函数、边界感知的平滑通道值,以及与每个像素相关的软局部注意力分布。

在下图 中,作者展示了通过沿着光滑的轨迹在几何原语空间中取样,得到一系列几何原语的实例。其中选择一个进行放大操作,并伴随着对应的距离图在右侧进行可视化展示。这样的操作有助于理解模型如何从图像中提取局部几何结构,并利用这些结构进行图像边界的建模和处理。
在这里插入图片描述

聚集和切片操作

聚集和切片操作是一种用于处理图像边界信息的方法,主要应用于上述提到的边界注意力模型。

  • 聚集操作:将相邻像素的信息汇聚到一起,形成一个更高维度的表示,以便网络学习有意义的隐藏状态。这样的操作有助于将局部信息整合成更全局的视角,从而帮助网络更好地理解图像的整体结构和特征。

  • 切片操作:将这些高维度表示分割成更小的块,以便进行局部操作和分析。切片操作使得网络可以在局部区域进行更细粒度的处理,从而能够更准确地捕捉图像中的细微结构和特征。

这两种操作相互配合,有助于网络在不同尺度上捕捉边界信息,从而提高边界定位的精度和鲁棒性。

关于输出的可视化,如下图所示,模型的输出结果可以包括:

  • 场景的边界感知平滑:表示网络对图像边界的感知和理解程度,可以帮助了解模型对图像中不同区域的边界结构的处理情况。

  • 图像边界的全局无符号距离函数:可用于可视化图像边界的全局边界图,这有助于理解模型对边界的定位和分割效果。

  • 与每个像素相关的软局部注意力图:表示模型在局部区域对每个像素的关注程度,可以帮助理解模型对不同像素的重要性和影响程度。

通过这样的可视化,可以更直观地了解模型在边界检测和分割任务中的表现和输出结果。
在这里插入图片描述

除了前面提到的输出可视化,作者还展示了如何通过查询像素周围的几何注意力图来生成空间注意力图。具体地,作者通过将输出字段的任何部分展开到它所包含的重叠区域中,来生成空间注意力图。如上图的底部两行所示,展示了这一过程的结果。

这种方法的核心思想是利用几何注意力图来指导空间中不同像素之间的关系,从而产生更加精确和全局的空间注意力图。通过这样的空间注意力图,模型可以更好地理解图像中不同区域之间的关联性和重要性,从而进一步提高图像处理任务的性能和效果。

模型架构

本文提出的网络具有较小的参数规模,通过迭代地优化场来逐步细化每个像素周围的局部边界。主要构件包括邻域MLP混合器(MLP-Mixer)、边界注意力模块以及聚集与切片操作等组件。训练过程中使用了四种全局损失函数(针对全局平均场)和两种局部损失函数(针对每个局部块)。
在这里插入图片描述
模型的架构如上图所示,其中采用了名为"边界注意力"的机制,通过密集且重复地应用,逐步优化一个变量场,该场包围每个像素的局部边界信息。模型的输出是一系列重叠的几何原语,可用于多种任务,包括生成图像边界的无符号距离函数、边界感知的通道值平滑以及与邻域相关的每像素软局部注意力映射。

网络的训练分为两个阶段:

  1. 首先训练邻域MLP混合器与第一个边界注意力块。
  2. 然后将第二个边界注意力块与初始权重复制添加到网络中,并对整个网络进行端到端的重新训练。

在第一阶段的训练中,作者将损失应用于网络的第3轮和第4轮迭代,而在端到端的优化阶段,将损失应用于第7轮和第8轮迭代。为了鼓励网络分配足够的容量以产生高质量的输出,作者将最终损失的权重设定为上一损失的三倍,以便梯度信息在网络中共享。

实验结果

对噪声水平的性能
在这里插入图片描述
在这里插入图片描述

如上图和表 1 所示,在较低噪音水平下,本文方法优于所有 baseline 方法,并且在较高噪音水平下与 Junction 领域相媲美,同时速度快了数个数量级。

亚像素精度

在图像或视觉任务中能够超越像素级别的精确度。当一个算法或模型能够对目标或边界的位置进行更精细的定位,超过图像的原始像素边界时,就称之为亚像素精度。

为了测量亚像素精度,作者使用了包含重叠的圆和三角形对的高分辨率图像,获得了精确的二进制边界图。随后,他们对这些图像进行下采样至较低分辨率(125 × 125),并添加了不同程度的高斯噪声,作为模型的输入。为了评估模型的预测效果,将输出上采样回原始高分辨率(500 × 500)。相较于传统方法,本文使用了一种直观的参数形式,通过增加补丁步幅和相应地调整补丁大小,实现了保持模型输出在上采样时边界准确性。整体而言,实验结果表现出模型对于亚像素精度的处理能力,即在高分辨率图像中能够提供更为精确的目标位置定位。
在这里插入图片描述
此外,还评估了模型在原始的 500×500 二进制图上的上采样输出,通过变化评估度量的最小距离阈值来衡量预测与真实结果的接近程度。图 7 的结果表明,即使输入图像包含加性高斯噪声,模型的 F-score 在所有匹配阈值上仍然保持较高水平。
在这里插入图片描述

线性插值

该实验观察到网络在隐藏状态中学到了一个空间平滑的连接流形。图 9 的可视化结果显示了这个学习的连接空间的一些特性。结果表明,嵌入空间呈现平滑的特性,有趣的是,它学会将零与近乎相等的角度和接近补丁中心的顶点关联起来。
在这里插入图片描述

时间推移输出演化

实验结果显示在细化过程中距离图的演变。图 10 的可视化结果表明,早期迭代是探索性和无结构的,而后续迭代逐渐趋于一致,呈现出更加有序和一致的区域边界。这突显了网络在细化过程中逐渐完善和协调局部边界信息的能力。
在这里插入图片描述

真实图像测试结果

尽管在合成数据上进行训练,本文的方法可以在 ELD 中存在的多个真实传感器噪声水平上胜过现有的 SOTA 方法,在高噪声水平下产生清晰且定义良好的边界。
在这里插入图片描述

  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,下面是使用最大角度法提取点云孔洞边界的MATLAB代码: ```matlab % 读取点云数据 pc = load('point_cloud.txt'); % PCA特征提取 [coeff, score, latent] = pca(pc); % 筛选主成分 [~, idx] = max(abs(coeff(:))); [i, j] = ind2sub(size(coeff), idx); % 提取孔洞边界 x_min = min(pc(:, i)); x_max = max(pc(:, i)); hole_boundary = pc(pc(:, i) == x_min | pc(:, i) == x_max, :); % 最大角度法提取孔洞边界 n = size(hole_boundary, 1); if (n <= 2) error('Point cloud has less than three points!'); end % 计算点云的凸壳 k = convhull(hole_boundary(:, 1), hole_boundary(:, 2)); % 最大角度法提取孔洞边界 angles = zeros(n, 1); for i = 1:n p1 = hole_boundary(i, :); p2 = hole_boundary(mod(i, n) + 1, :); p3 = hole_boundary(mod(i + 1, n) + 1, :); v1 = p1 - p2; v2 = p3 - p2; angles(i) = acosd(dot(v1, v2) / (norm(v1) * norm(v2))); end [max_angle, max_idx] = max(angles); if (max_angle > 90) p1 = hole_boundary(max_idx, :); p2 = hole_boundary(mod(max_idx, n) + 1, :); boundary = [p1; p2]; else boundary = hole_boundary(k, :); end % 可视化 scatter3(pc(:, 1), pc(:, 2), pc(:, 3), 'filled'); hold on; scatter3(boundary(:, 1), boundary(:, 2), boundary(:, 3), 'filled'); ``` 这个代码首先进行了PCA特征提取,然后根据主成分方向提取了点云中的孔洞边界。接着,使用MATLAB自带的`convhull`函数计算了孔洞边界的凸壳。最后,使用最大角度法提取了孔洞边界。如果最大角度大于90度,则直接连接最大角度对应的两个点;否则,使用凸壳作为孔洞边界。 希望这个代码对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值