当前位置: 首页 > news >正文

低成本、高泛化能力的无人机自主飞行!VLM-Nav:基于单目视觉与视觉语言模型的无地图无人机导航

  • 作者:Gobinda Chandra Sarker1^{1}1, AKM Azad2^{2}2, Sejuti Rahman1^{1}1, Md Mehedi Hasan1^{1}1
  • 单位:1^{1}1达卡大学,2^{2}2伊玛目穆罕默德·伊本·沙特伊斯兰大学
  • 论文标题:VLM-Nav: Mapless UAV-Navigation Using Monocular Vision Driven by Vision-Language Model
  • 论文链接:https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5231854
  • 项目主页:https://gcsarker.github.io/vlmnav/
  • 代码链接:https://github.com/gcsarker/vlm_nav

主要贡献

  • 提出了无人机自主导航系统 VLM-Nav ,该系统仅依赖单目视觉输入,通过深度估计和视觉语言模型(VLM)实现高效避障和路径规划。
  • 该系统无需预训练地图或外部人类指令,具有更好的泛化能力,能够在未见过的环境中自主导航。
  • 与传统的基于强化学习(RL)或深度学习(DL)的无人机导航方法相比,VLM-Nav在未见环境中表现出更好的泛化能力,且对训练数据的需求更少。
  • 通过在 AirSim 模拟器中进行的实验验证了系统的有效性,VLM-Nav 在复杂环境中实现了接近完美的任务完成率。

研究背景

  • 无人机(UAV)在包裹递送、农业、监视和搜索救援等领域具有巨大的应用潜力,因此对安全、成本效益高且智能的导航系统的需求日益增长。
  • 传统的无人机导航方法主要依赖于激光雷达(LiDAR)等昂贵传感器,且需要大量的训练数据和复杂的路径规划算法。这些方法在动态或未知环境中表现不佳,且成本较高。
  • 近年来,视觉语言模型(VLM)和大型语言模型(LLM)在图像识别、目标检测和语义分割等任务中取得了显著进展,为无人机导航提供了新的思路。

导航任务

  • 目标:VLM-Nav 系统的目标是引导多旋翼无人机(UAV)从初始位置 (xstart,ystart)(x_{\text{start}}, y_{\text{start}})(xstart,ystart) 自主飞行到目标位置 (xgoal,ygoal)(x_{\text{goal}}, y_{\text{goal}})(xgoal,ygoal)
  • 飞行条件:无人机以恒定速度 vvv 飞行,并保持初始高度 hhh,仅在需要避障时调整高度。

观测空间

  • 观测空间定义:无人机需要从环境中获取状态信息以安全导航,即确定每个时间步应采取的动作。观测空间 OOO 可以通过以下公式表示:
    O={Irgb,Ddepth,dleft,dright,ϕ} O = \{I_{\text{rgb}}, D_{\text{depth}}, d_{\text{left}}, d_{\text{right}}, \phi\} O={Irgb,Ddepth,dleft,dright,ϕ}
    其中:
    • IrgbI_{\text{rgb}}Irgb:通过单目相机捕获的 RGB 图像。
    • DdepthD_{\text{depth}}Ddepth:通过深度估计模型从 RGB 图像生成的深度图。
    • dleftd_{\text{left}}dleftdrightd_{\text{right}}dright:分别表示左侧和右侧距离传感器测量的距离。
    • ϕ\phiϕ:无人机前进方向与目标位置之间的夹角。

动作空间

  • 动作定义:无人机在每个时间步观察周围环境后生成低级控制命令。动作空间包含以下五个离散动作:
    • Forward:向前飞行 1 秒。
    • Yaw Left:逆时针旋转 25°。
    • Yaw Right:顺时针旋转 25°。
    • Up:向上飞行 1 秒。
    • Down:向下飞行 1 秒。

模拟环境

  • 环境选择:为了测试和优化导航算法,研究者使用了 AirSim 模拟器,它提供了逼真的 3D 环境,允许在安全、可控的条件下进行实验。

  • 具体环境
    • 环境 A:简单的单障碍环境,尺寸为 30 m × 30 m,障碍物的宽度和高度在每次导航轨迹中随机缩放 0.5 到 5 倍。
    • 环境 B:由 AirSim 提供的 Blocks 环境,包含多个不同形状的障碍物,尺寸约为 220 m × 100 m。
    • 环境 C:使用 Unreal Engine 市场中的 Downtown West 包创建的自定义环境,包含城市环境中的各种物体,如建筑、食品车、长椅、岩石、海报等。

研究方法

深度估计

  • 背景:由于单目相机无法直接感知深度信息,因此需要使用深度估计模型将RGB图像转换为深度图。

  • 方法:研究中使用了 DepthAnything V2 模型,这是一个预训练的零样本深度估计模型,能够处理各种场景并生成高质量的深度图。
    • 模型架构:DepthAnything V2 采用编码器-解码器结构,编码器使用 Vision Transformer(ViT-L),解码器使用 DPT。
    • 训练方法:该模型使用了6200万张自动标注的无标签图像进行训练,并通过伪标签技术提升模型的泛化能力。
    • 输出处理:模型输出的深度图被缩放到 (0-255) 范围内,并转换为单通道图像。为了适应VLM的输入需求,深度图被反转,使得较近的物体具有较大的像素值。
  • 性能优势:DepthAnything V2 在深度估计的准确性和泛化能力上优于其他模型,如 MiDaS,且计算效率更高。

视觉语言模型

  • 背景:VLM在图像识别、目标检测和语义分割等任务中表现出色,研究中利用VLM的视觉问答(VQA)能力来指导无人机避障。

  • 模型选择:研究中使用了两种VLM模型:Gemini-1.5-flashGPT-4o
    • Gemini-1.5-flash:由Google DeepMind开发,基于Transformer Decoder架构,能够处理多模态数据(如图像、文本和视频),具备强大的推理和规划能力。
    • GPT-4o:由OpenAI开发,是GPT架构的一个变体,具有更大的上下文窗口和更快的处理速度,适用于图像、文本和视频任务。
  • 工作流程
    • 将深度图和预设的提示(prompt)发送给VLM模型。
    • 提示内容是询问VLM无人机应采取的方向以避开障碍物。
    • VLM模型返回建议的方向,并附带详细的解释。
    • 通过关键词搜索从VLM的输出文本中提取方向(如左、右或任意方向)。

近物检测

  • 背景:为了评估前方是否存在障碍物,需要对深度图进行分析。

  • 方法
    • 裁剪深度图:将深度图裁剪为 i×ji \times ji×j 的形状,以排除地面并专注于前方障碍物。
    • 二值化处理:使用阈值 σd\sigma_dσd 对深度图进行二值化处理,忽略超出一定距离的障碍物。
    • 连通组件分析:使用“spaghetti”算法进行连通组件分析,识别深度图中的障碍物。
    • 区域划分:将深度图划分为三个区域(P1、P2、P3),用于判断障碍物的位置和方向。
  • 作用
    • P1和P3区域帮助无人机判断是否安全转弯。
    • P2区域用于检测前方是否有障碍物,如果检测到障碍物,则向VLM请求反馈。

导航模块

  • 背景:导航模块是一个全连接网络(FCN),用于综合VLM的反馈、距离传感器读数、航向角等信息,生成最终的导航动作。
  • 输入参数
    • POD模块的输出(三个区域的障碍物检测结果)。
    • 左侧和右侧距离传感器的读数。
    • 航向角 ϕ\phiϕ
    • VLM模块的反馈(建议的动作方向)。
  • 训练方法
    • 在简单的环境A中,由人类操作员手动飞行无人机,记录飞行轨迹。
    • 收集10,000步的飞行数据,包括输入参数和人类操作员的动作。
    • 使用这些数据训练导航模块,使其能够模仿人类的飞行决策。

结果与讨论

实验设置

  • 模拟环境:所有实验均在 AirSim 模拟器中进行,该模拟器与 Unreal Engine 4.27 集成,提供了逼真的 3D 环境。
  • 硬件配置:实验使用了配备 Nvidia GeForce MX550 GPU 和 16 GB 内存的硬件平台,确保了 3D 环境的流畅渲染和实时数据处理。
  • 环境配置
    • 环境 A:简单的单障碍环境,尺寸为 30 m × 30 m,障碍物的宽度和高度在每次导航轨迹中随机缩放 0.5 到 5 倍。
    • 环境 B:由 AirSim 提供的 Blocks 环境,包含多个不同形状的障碍物,尺寸约为 220 m × 100 m。
    • 环境 C:使用 Unreal Engine 市场中的 Downtown West 包创建的自定义环境,包含城市环境中的各种物体,如建筑、食品车、长椅、岩石、海报等。

定量分析

深度估计算法比较
  • 方法:研究中比较了四种深度估计方法:MiDaS (DPT)、MiDaS (Swin V2)、DepthAnything V1 和 DepthAnything V2。
  • 评估指标
    • Delta (𝛿):计算深度预测值在一定阈值内的比例,通常使用多个阈值(如 𝛿1 < 1.25, 𝛿2 < 1.25², 𝛿3 < 1.25³)。
    • 绝对相对误差:计算预测深度值与真实深度值之间的绝对误差,归一化到真实深度值。
    • 结构相似性指数:衡量预测深度图与真实深度图在结构、亮度和对比度上的相似性。
    • 推理时间:计算从单张场景图像生成深度图所需的时间。
    • 参数数量:模型训练权重的数量,单位为百万。
  • 结果
    • DepthAnything V2 在所有指标上均优于其他方法,具有更高的 Delta 值、更低的 AbsRel 值和更高的 SSIM 值,同时计算效率更高。
    • DepthAnything V1DepthAnything V2 的性能接近,但 V2 在环境 B 和 C 中表现略好。

导航模块性能
  • 评估指标
    • 精确率:正确预测的动作数量与总预测数量的比值。
    • 召回率:正确预测的动作数量与应预测为正确的总动作数量的比值。
    • F1分数:精确率和召回率的调和平均值。
  • 结果
    • GeminiGPT-4o 模型在未见环境(环境 B 和 C)中均表现出高精度和高召回率,F1 分数接近 90%。
    • Gemini 模型在导航新环境时表现略优于 GPT-4o

整体导航性能
  • 评估指标
    • 任务完成率:无人机成功到达目标位置(距离目标小于 3 米)的轨迹百分比。
    • 碰撞率:无人机与障碍物碰撞的次数占飞行总距离的百分比。
    • 轨迹长度比:无人机飞行路径长度与人类操作路径长度的比值。
  • 结果
    • VLM-Nav 在所有测试环境中均实现了接近完美的任务完成率(0.98),碰撞率极低,轨迹长度比接近 1。
    • DepthAnything V2 的碰撞率低于 DepthAnything V1,表明其深度估计更准确。

定性分析

  • 飞行路径可视化
    • 环境 A、B 和 C:展示了在三个不同环境中生成的飞行路径,无人机成功避开了所有障碍物并到达目标位置。
    • 路径比较:将 VLM-Nav 生成的飞行路径与人类操作的飞行路径进行比较,结果表明 VLM-Nav 生成的路径与人类操作路径非常接近。

  • VLM 输出的一致性
    • 复杂指令问题:当给 VLM 提供复杂指令时,其输出可能不一致。研究中通过使用更简单的提示来减少这种不一致性,确保更可靠的输出。

消融研究

  • 深度估计的重要性:深度估计模块帮助 VLM 更好地理解场景中的障碍物距离,从而选择最优动作。
  • 近物检测模块的局限性:仅依赖 POD 模块进行导航在某些情况下是不够的,VLM 的全局分析能力在复杂场景中至关重要。
  • VLM 输出的一致性问题:复杂的指令可能导致 VLM 输出不一致,简单的提示和导航模块的结合可以提高系统的可靠性和一致性。

结论与未来工作

  • 结论
    • VLM-Nav 通过结合深度估计和视觉语言模型,实现了在复杂未知环境中的高效自主导航。
    • 该方法具有成本低、泛化能力强、对训练数据需求少等优点。
  • 未来工作
    • 探索开发专门针对无人机导航的 VLM,使其能够直接处理 RGB 图像而无需深度估计。
    • 研究动态障碍物的避障能力,例如通过时空图神经网络等方法预测障碍物的运动模式。
    • 在实际场景中进行测试,验证系统的鲁棒性和实时性。

http://www.dtcms.com/a/291790.html

相关文章:

  • C++类和对象(3)
  • 从零搭建 OpenCV 项目(新手向)--第一天初识OpenCV与图像基础
  • MCP:Cline+DeepSeek在VSCode上配置
  • TDengine 计算百分位函数使用手册
  • .net web 中如何优雅地使用 redis?
  • MFC类Qt的自动布局框架
  • 景区负氧离子监测设备:守护清新,赋能旅游
  • 【kubernetes】-2 K8S的资源管理
  • 学习笔记-关于中华心法问答系统的环境配置和源代码理解
  • 基于Vue+ElementUI的借还款利息计算器
  • Java 动态导出 Word 登记表:多人员、分页、动态表格的最佳实践
  • SpringBoot集成PDFBox实现PDF导出(表格导出、分页页码、电子签章与数字签名)
  • RISC-V基金会Datacenter SIG月会圆满举办,探讨RAS、PMU性能分析实践和经验
  • Rust实战:决策树与随机森林实现
  • 【vscode】vscode中python虚拟环境的创建
  • 激光雷达-自动驾驶的“三维感知中枢“
  • IntelliJ IDEA (2024.3.1)优雅导入 Maven 项目的两种方式详解
  • 【Java企业级开发】(六)Java框架技术-Maven和MyBatis
  • Docker容器 介绍
  • Maven 环境配置全攻略:从入门到实战
  • Kafka灰度方案
  • 两个android,一个客户端一个服务器端
  • 【菜狗学聚类】时间序列聚类主要方法—20250722
  • zmaiFy来说软字幕和硬字幕有什么优缺点?
  • 【LINUX】CentOS Stream 9 手动配置网络
  • [hot 100]两数之和-Python3-Hash Table
  • 归一化 vs 标准化:数据预处理终极指南
  • Matplotlib绘制各种图参考
  • 力扣刷题 -- 101.对称二叉树
  • JAVA API (三):从基础爬虫构建到带条件数据提取 —— 详解 URL、正则与爬取策略