利用环境中的 fiducial 标记作为视觉地标,无人机(UAVs)可以快速构建精确的地图并安全高效地导航空间,从而解锁与人类流畅协作和共存的可能性。
现有的 fiducial 标记方法依赖于手工制作的特征提取,这牺牲了准确性。另一方面,用于标记检测的深度学习 Pipeline 无法满足导航应用程序所需的实时运行时限制。
在这项工作中,作者提出了 YoloTag --一个基于实时 fiducial 标记的局部定位系统。YoloTag 使用轻量级的 YOLO v8 目标检测器在图像中准确检测 fiducial 标记,同时满足导航所需的运行时限制。
检测到的标记后被高效的视角 n 点算法用于估计 UAV 的状态。然而,这种局部定位系统引入了噪声,导致轨迹跟踪不稳定。
为了抑制噪声,作者设计了一个高阶Butterworth 滤波器,通过频域分析有效地通过频率域分析消除噪声。
作者对算法通过在室内环境中的真实机器人实验进行了评估,以多种距离指标对比作者的方法与其他方法的轨迹跟踪性能。
YoloTag检测器代码在 https://github.com/RedwanNewa... 处可获得.
I Introduction
视觉 fiducial 标记的潜力不仅局限于增强现实,还可在人机交互等领域发挥重要作用。配备了 fiducial 标记追踪的机器人可以准确地确定相对于摄像头的自身位置和姿态。这使得机器人可以在摄像机视野内定位自身,而无需依赖 GPS 或其他外部定位系统。然而,同时检测和区分多个 fiducial 标记的精确性和连续性对于精确和连续的机器人姿态估计至关重要。随着机器人穿过环境,算法必须无缝跟踪每个标记的变化,并将更新的摄像头视角与机器人的动作关联起来。
基于视觉的定位方法主要包括相对视觉定位(RVL)和绝对视觉定位(AVL)。RVL 技术如视觉测速(VO)[2,3,4]和视觉同时定位和映射(VSLAM)[5,6,7,8]通过跟踪帧间的视觉特征逐步估计机器人的自身体态,并将未探索的环境进行映射。然而,它们在长时间的漂移存在问题。绝对视觉定位(AVL)[9,10]旨在通过匹配图像与地理参考地图实现无漂移全局定位,但精度有限。
无人驾驶飞机(UAVs)可以利用 fiducial 标记作为视觉地标进行定位和映射,在受控、低纹理和计算受限的环境中取得巨大优势。然而,现有的 fiducial 标记系统主要依赖人工设计的图像处理技术确定黑白模式,如 ARToolKit [12],AprilTag [13,14] 和 ChromaTag [15]。这些系统在遇到遮挡和照明条件变化时往往难以保证鲁棒性。最近的研究集中在通过深度神经网络提高标记鲁棒性 [16,17,18]。新应用包括水下地标用于导航 [19] 和端到端学习的标记生成和检测 [20]。算法改进 [21,22,23] 也增强了检测效率和可扩展性。然而,现有的 fiducial 标记基础定位在检测速度、准确性和假阳性拒绝方面仍存在局限,尤其是在低分辨率、遮挡、不均匀照明和透视失真等困难条件下。
在本文中,作者提出了 YoloTag,通过将高性能的 YOLOv8 模型与深度学习目标检测技术相结合,实现快速、可靠的多标记检测和 3D 姿态估计,同时满足实时性能要求。通过在大量真实的 UAV 图像数据集上训练 YoloTag,它可以学习到如何有效地处理实际部署过程中遇到的各类复杂性。这些包括处理来自多视角的标记姿势的变化,跟踪 UAV 移动和变形过程中的地标,处理变化的照明条件,克服部分遮挡,并具有对传感器噪声的鲁棒性。YoloTag 的端到端深度学习架构将多个检测到的标记的信息无缝融合为一个连续的联合 3D 姿态估计,这为实时的、针对性强的工作流程提供了精确的、连续的自我定位能力。
II Realtime Fiducial Marker Detection using Deep Learning
在本研究中,作者的目标是从无人机机身上的摄像头捕获的全视角图像中计算无人机的状态。这些图像包含 fiducial 标记。图1 展示了基于 YOLO v8 的实时 fiducial marker 检测架构,由三个主要组件组成:Backbone 层、 Neck 和 Head 。
Backbone 层是模型的基础特征提取器。它利用修改的 CSPDarkNet-53 网络来改进梯度流动。该 Backbone 层对输入图像执行 5 次下采样操作,创建一个具有 Level P1 到 P5 的多尺度特征金字塔。较小的 Level 捕获更细的细节,而较大的 Level 提供语义和上下文信息。为了增强表示, Backbone 层集成轻量级 C2f 模块,将来自不同层的低级和高 Level 特征结合。它还使用标准的卷积、BN 和 SiLU 层来提取空间模式、归一化激活和引入非线性。最后,空间金字塔池化融合模块生成固定大小的输出。
Neck 模块专注于在视觉定位的背景下检测小、远程物体的关键挑战。为此,它采用了一个结合特征金字塔网络(FPN)和路径聚合网络(PAN)结构的二流特征金字塔网络。FPN 采用自上而下的方法,在每个尺度上上采样和合并深度语义丰富的特征与 Backbone 层的横向输出。这保留了帮助小目标检测的高级提示。同时,PAN 采用自下而上的方法,下采样低级特征(如颜色、边缘和轮廓)并与 FPN 输出的每个尺度合并。这保留了 Backbone 层加深过程中失去的细粒度空间细节。语义和空间流的互补融合提供了全面的多尺度特征表示。
最后, Head 包含两个解耦的分支用于分类和边界框回归。
III 4D Pose Estimation for quadrotor UAVs
作者为四旋翼无人机开发了一种室内定位系统,它通过在环境中视觉检测独特的光标进行基于标记的位置估计。这类似于基于标志的无人机定位,在那里,无人机用视觉标志代替更通用地标进行检测和识别。特别地,作者可以在环境中放置个标记,当无人机飞行路径将其带入接近时,这些标记就能被检测到。
随着标记的增加,组合使用的似然度可以平均出单个测量的小错误,从而在使用局部化时得到更好的精度和准确性。
IV Noise Suppression
将YOLO V8与EPnP算法结合会得到噪声状态估计,这会导致长时间内轨迹跟踪误差增大。为了获得平滑的状态估计,必须过滤掉这种噪声。为了减小噪声对状态估计的影响,作者实现了一个阶Butterworth低通滤波器,在通频带中提供最大平坦的幅度响应,在截止频率处实现平滑过滤。最大平坦幅度响应允许在截止频率周围实现平滑过渡。这种过渡防止了震荡伪影的产生。在之后,频率成分逐渐衰减,这逐渐降低传感器噪声存在的高频分量。
图1(a)显示了原始信号和滤波信号的对比情况,清楚地展示了噪声减少的结果,以及过滤过程引起的相位偏移和幅值减小的影响。图1(b)揭示了经过滤波后的频率成分变化。对这种傅里叶变换进行分析极大地有助于选择适当的截止频率来设计滤波器。图1(c)和图1(d)展示了滤波器对某些频率无损通过,同时逐渐衰减其他频率,提供了关于关键属性,如通频带、衰减、整体频率响应和频率间相位变化的可视化信息。值得注意的是,图1(c)代表Bode相位图,图1(d)代表Bode幅度图。作者从相位图中获得相位移动,从幅度图中获得幅度(以分贝为单位)。这些分析有助于全面理解通过仔细的时间和频率域比较以及滤波器对信号特性的影响,从而为设计和实现最优滤波器提供有价值的信息。对于Butterworth滤波器,观察到的主要缺点是输出信号中存在延迟。然而,这种延迟可以通过使用2阶Butterworth滤波器来减轻,特别是考虑到这种阶数固有的较低延迟。此外,通过利用30帧每秒(FPS)的输入帧率和强大的计算单元,作者可以有效地克服延迟。综上所述,本文的详细分析强调了2阶Butterworth滤波器在平滑轨迹和减小标记检测噪声方面的有效性,突显了在轨迹分析和相关应用中提高数据质量的实用价值。
V Experiments
该实验在配备Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz和NVIDIA Quadro P2200 GPU的台式计算机上进行,该计算机配备了5GB的GPU内存和32GB的RAM。系统的运行环境是Ubuntu 20.04 LTS,并结合了ROS Noetic。用于捕捉目标环境中的真实轨迹,使用了 VICON Motion Capture System。在墙壁上布置了8个来自36h11家族的Apriltag标记作为地标。这些标记按顺序从1到8排放,每个标记的大小为0.2米。所有评估YoloTag性能的实验中,都使用了Parrot Bebop2四旋翼无人机。Bebop2通过搭载的bebop2 autonomy ROS外壳,与台式计算机建立了无线连接。通过机载摄像头捕获的图像进行了处理,以估计Bebop2的状态。
然后,通过台式计算机发出的命令,使用PID控制器实现了Bebop2的运动实时控制。YoloTag检测器使用ROS平台实现。
Dataset Generation
在获得训练、验证和测试图像的过程中,Bebop2在测量为6.10米×5.85米×2.44米的封闭室内环境中飞行,如图2(a)和2(b)所示。八个Vicon摄像头安装在速度轨道上,以捕捉UAV的运动全息图,如图2(a)。在墙上粘贴了八个带有唯一ID的静止定位标。每个标记的中心与地面的距离精确为0.724米。此外,相邻标记之间的距离为0.58米。这使得当UAV出现在摄像机视野内时,可以区分标记,从而通过标记估计UAV的状态,如图2(b)所示。为了生成数据集,进行了多次实验,以每秒30帧(FPS)的速度,分辨率为856×480像素的摄像头图像捕获。Vicon标记用于捕获所有实验的 GT 轨迹。训练图像序列和 GT 轨迹以ro sbag格式记录下来。
Training YOLO v8 with Fiducial Markers
为了训练YOLO v8模型,作者使用了9128张图像作为训练集,5016张图像作为验证集,以及3148张图像作为测试集。作者使用Apriltag检测器进行初始化的自动标注。然而,由于Apriltag检测器无法准确标注到每个图像中的所有标记,作者使用一个在线工具手动标注,用于在缺少必要视觉标记的范围内绘制边框。为了实现实时性能,作者训练了一个轻量级的YOLO V8模型,该模型已在MS-COCO数据集上进行预训练。YOLO V8模型经过10个epoch的训练,使其能够在图像帧中分类和定位标记。
Trajectory Tracking Performance
YoloTag 旨在为实际场景中的基于视觉的自主导航任务设计。为了展示其能力,作者将多个坐标检测方法下的轨迹跟踪性能进行了比较。评估的两个轨迹为:一个螺旋八路径和一个正方形八路径。对于螺旋路径,由于在每一个点方向都发生变化,因此优先考虑平滑性和适应性是至关重要的。因此,最小跳跃轨迹更优,因为它们能够最小化瞬间反冲并实现平滑、连续的运动。而正方形路径,由于转弯急剧且方向变化较少,因此可能优先考虑简单性和可预测性。因此,常常选择保持恒定速度的轨迹,因为它们提供直接的控制和沿直线段的一致运动。
图3:数据集是在一个测量为6.10米×5.85米×2.44米的封闭环境中,使用Bebop2飞行的。采用Vicon运动捕捉系统(图2(a))捕获无人机的运动,同时使用搭载的相机捕获坐标标记(图2(b)),从而生成 GT 数据。
图4展示了由Apriltag、DeepTag和YoloTag生成的三种不同轨迹,以及用红线表示的 GT 轨迹。绿色线代表使用Apriltag检测器生成的轨迹,而紫色线表示由DeepTag检测器生成的轨迹。蓝色线说明提出YoloTag检测器所生成的轨迹。如图4所示,其他方法生成的轨迹都是嘈杂的并显著偏离 GT 轨迹。相比之下,YoloTag集成了一种二阶Butterworth滤波器来降低估计轨迹中的噪声,提供了优于DeepTag ROI(感兴趣区域)细化方法的优势。Butterworth滤波器在降噪、平滑突变的优点以及适应不同条件方面非常出色。此外,它们能够集成时间信息对先验状态进行连续检测和跟踪,如图(a)a所示,从而提高估计轨迹的精确性和稳定性。
Benchmark
表1总结了三个标签检测系统YoloTag, Apriltag和DeepTag的结果,它们都在Hausdorff Distance,Discrete Frechet Distance和Runtime这些指标上进行了评估。与DeepTag和其他方法相比,如AprilTag,YoloTag在大多数情况下都展现了优越的性能,在螺旋八和矩形八的所有标记上,对三个指标都取得了最佳的结果。
Hausdorff Distance通过考虑一个轨迹上的最近点与另一个轨迹上的给定点之间的最大偏差来量化两个轨迹之间的最大偏差。Discrete Frechet Distance通过量化连接比较轨迹上最接近点的绳子的最小长度。YoloTag在螺旋八模式上取得了0.2464的最小Hausdorff Distance和0.4404的最小矩形八,尽管AprilTag检测器在矩形八上的距离稍低(0.384)。然而,尽管距离略低,但AprilTag检测器的轨迹比YoloTag的轨迹明显的噪声更大。
对于Discrete Frechet Distance,YoloTag检测器再次在螺旋八和矩形八分别取得了最低值2.16和2.064。DeepTag检测器,使用MobileNet的单框检测器(SSD),在两个轨迹上都表现出次优的轨迹跟踪性能,具有最高的Hausdorff和Discrete Frechet距离。对于螺旋八轨迹,DeepTag检测器取得了0.968的最小Hausdorff Distance和2.3832的最小Discrete Frechet Distance。对于矩形轨迹,它达到了0.9177的最小Hausdorff Distance和2.276的最小Discrete Frechet Distance。
DeepTag检测器相对于YoloTag检测器性能较差的的原因主要是其依赖于效率较低的MobileNet Backbone 网络SSD,以及专注于没有利用连续图像信息的、计算成本较高的帧级标签检测。
尽管有AprilTag检测器的GPU实现版本可以运行更快,但性能比CPU版本要差。虽然AprilTag检测器的CPU版本在检测性能上优于DeepTag检测器,但面临着检测鲁棒性问题。逐个估计每个标签的位姿降低了性能,虽然将AprilTag检测算法与EPnP算法结合可以改善轨迹跟踪。然而,将AprilTag检测算法与YoloTag检测算法结合提高轨迹跟踪性能。
但是,AprilTag检测器在实时跟踪中频繁无法检测到所有标记,对运动模糊和噪声的鲁棒性较差。虽然YoloTag检测器可以通过训练不同数据集来提高性能,但是AprilTag检测器受到依赖传统图像处理技术和预定义标记设计的限制,缺乏YoloTag检测器的泛化性。在运行时基准测试中,支持GPU加速的YoloTag检测器超过了基于CPU的、用C++编写的AprilTag检测器和同样支持GPU加速的、基于Python的DeepTag检测器。充分利用YOLOv8的轻量级架构,YoloTag检测器在NVIDIA Quadro P2200 GPU上实现了55 FPS,而AprilTag检测器在实时跟踪中仅达到24 FPS。当处理用于导航的8个标记时,DeepTag检测器仅 managed 3 FPS,使其复杂的工作流程不适合此类任务。因此,YoloTag检测器在本地化准确性指标(如Hausdorff和Discrete Frechet距离)以及处理速度方面明显优于AprilTag和DeepTag检测器,使其成为导航任务中稳健且高效的多标记轨迹跟踪的首选选择。
VI Conclusion
本文介绍了YoloTag,一种专为视觉无人飞行器导航任务设计的新的 fiducial 标志物检测架构。YoloTag采用轻量级 YOLO v8 目标检测器进行精确标志物检测,并采用高效的多
参考
[1].YoloTag: Vision-based Robust UAV Navigation with Fiducial Markers.
作者:小书童
来源:集智书童
推荐阅读
- SGLang:LLM推理引擎发展新方向
- CUDA-MODE课程笔记 第7课: Quantization Cuda vs Triton
- CUDA-MODE 第一课课后实战(上)
- 一文弄懂 LLM 结构化数据生成原理
欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区嵌入式AI专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。