无人机算法如此简单!DroneVis:一个开源库搞定全部UAV感知任务
编辑:计算机视觉工坊添加小助理:dddvision,备注:方向+学校/公司+昵称,拉你入群。文末附行业细分群
0. 这篇文章干了啥?
无人机,也被称为无人驾驶飞行器(UAVs),在包括农业、环境监测、灾害响应和监控在内的多个领域中都已展现出其不可或缺的价值。它们真正的潜力在于它们能够理解周围环境并做出智能决策。这种潜力是通过将计算机视觉算法集成到无人机中来实现的,使它们能够基于实时摄像头捕捉到的图像执行各种任务。
虽然目标检测和跟踪是无人机的重要功能,但它们只是这些设备可以执行的基本任务的一部分。诸如救援和安全行动中的人群计数、监控应用中的行为识别、增强空间感知的深度估计以及监控目的中的面部检测和姿态估计等任务同样重要。不幸的是,以前的工作主要集中在实现特定的目标检测和跟踪模型上,忽视了针对不同用户特定需求而定制的各种模型和任务的需求。
DroneVis为每项任务提供了多种模型选择,为用户提供了根据其偏好定制其方法的灵活性。为了确保鲁棒性,DroneVis包含了一系列广泛的测试用例。此外,我们还提供了全面的文档,概述了库的功能、安装说明以及它所涵盖的各种任务和模型的概述。
1. 论文信息
标题:DroneVis: Versatile Computer Vision Library for Drones
作者:Ahmed Heakl, Fatma Youssef, Victor Parque, Walid Gomaa
机构:埃及日本科技大学、早稻田大学
原文链接:https://arxiv.org/abs/2406.00447
代码链接:https://github.com/ahmedheakl/drone-vis
2. 摘要
本文介绍了DroneVis,这是一个旨在自动化鹦鹉无人机计算机视觉算法的新型库。DroneVis提供了一套多功能,并提供了各种各样的计算机视觉任务以及各种型号可供选择。该库以Python实现,遵循高质量的代码标准,便于根据用户需求轻松进行定制和功能扩展。此外,还提供了全面的文档,包括使用指南和说明性用例。我们的文档、代码和示例可在https://github.com/ahmedheakl/drone-vis中获得。
3. 主要贡献
我们的主要贡献可以总结为以下几点:
(1)引入了DroneVis,这是一个功能强大的库,用于在Parrot无人机上自动化计算机视觉任务,如对象检测、跟踪、分割、人群计数和深度估计。
(2)为库提供了全面的文档和实用的使用示例,使实现变得简单直接。
(3)进行了严格的测试,确保了库的可靠性,测试覆盖率高达83%。
(4)提供了用户友好的控制选项,适用于没有广泛编程知识的用户。
(5)开发了一种手势识别模型,用于直观的远程无人机控制。
(6)为各种计算机视觉任务提供了默认模型,用户可以根据偏好定制和更改这些默认模型。
(7)开发了出色的面部检测功能,特别适用于无人机应用中的远距离面部检测。
4. DroneVis库特性
在本节中,我们将详细阐述DroneVis的关键特性及其对计算机视觉赋能无人机应用发展的贡献。
4.1 集成最先进的计算机视觉算法
DroneVis作为最先进的计算机视觉模型的强大仓库,为用户提供了广泛任务所需的多样化工具包。这些模型包括著名的架构,如Faster R-CNN、YOLOv8、BlazeFace等,仅列举几个。其功能范围广泛,从目标检测/识别、行为识别和人群计数,到面部检测、深度估计和姿态估计,该库使用户能够轻松选择并应用最适合其特定应用需求的模型。
4.2 文档
DroneVis在文档方面以两个关键特性脱颖而出:
贡献者友好的代码库:精心编写的文档使用户能够轻松自定义和扩展库,支持从超参数调整到创建新类别的任务。
全面的用户资源:在GitHub1和ReadTheDocs2上的广泛文档包括模型调整和用例场景的指南,促进了用户社区内的协作和贡献。
4.3 测试演示
DroneVis 提供了一个专门的演示模拟,用于验证库的健壮性和性能。
该应用程序旨在促进对库实时数据处理、推理准确性和检测能力的严格测试和评估。该库在 Intel Core 8 CPU 上实现了每秒至少 4.5 帧(fps)的速率,证明了其提供实时结果的能力。
4.4 测试覆盖率
DroneVis 拥有高代码覆盖率,并在其实现过程中使用了类型提示,以确保库代码库的完整性和可靠性。这种质量保证措施加强了代码的健壮性和可靠性,其代码覆盖率和质量指标始终超过 80%,使用了 pytest 框架。
4.5 广泛的无人机控制
DroneVis 通过提供对无人机操作的全面控制,扩展了其用途,超越了计算机视觉算法。用户可以无缝地执行起飞、降落、重置、紧急响应和校准等关键操作。此外,该库还为用户提供了在各种空间维度上操控无人机的能力,包括向右、向左、向上、向下、向前和向后移动。
4.6 高质量实现
DroneVis 遵循 PEP8 编码标准,确保代码库结构化和连贯性。这种承诺增强了代码的可读性,简化了理解,并促进了协作开发环境,使用户能够自信地做出贡献并扩展库。
4.7 多种用户界面
考虑到用户的不同偏好,DroneVis 提供了多种用户界面以满足不同使用场景的需求。用户可以通过图形用户界面(GUI)、命令行界面(CLI)或创新的基于手势的界面与库无缝交互。后者使用户能够通过直观的手势控制无人机的动作,展示了库在提升用户体验方面的承诺。此外,对于更喜欢传统方法的用户,DroneVis 也支持通过键盘和摇杆控制无人机。
4.8 用户友好的API
DroneVis 提供了一个用户友好且直观的 API,专门设计用于加快在无人机上开发定制计算机视觉应用程序的进程。API 的简单性使用户能够轻松地将他们的算法与库的框架集成。以下代码片段展示了在 DroneVis 中使用 YOLOv8Detection 模型进行对象检测的便捷性:
5. 无人机控制与用户界面
本节中将详细讨论可用的用户界面和替代控制机制,强调它们的特点和用例。此外,我们还探讨了库如何促进笔记本电脑和无人机之间的连接,以实现这些控制机制。
5.1 图形用户界面(GUI)
该库内置了现成的GUI,以方便使用提出的计算机视觉控制,并为用户提供实时、完全的无人机访问权限。GUI使用Tkinter构建,因为它易于使用、响应迅速且渲染效果好。此外,它还是一个跨平台库,可以与几乎所有平台(如Linux、Windows和MAC)进行更平滑的集成。要开始使用,用户只需在终端中输入以下命令:
$ dronevis-gui
此操作将打开GUI窗口,如图2所示。
图2中所示的GUI促进了全面的无人机管理,允许用户通过基本控制、专业控制和重置控制部分来控制无人机的移动。它还提供了使用视觉控制部分在无人机摄像头视频流上执行各种计算机视觉任务的能力。
5.2 命令行界面(CLI)
该库还集成了命令行界面(CLI),这是一种资源高效的用户界面,特别受计算能力有限的设备青睐。CLI 有效管理处理和内存资源,确保与无人机进行有效通信。CLI 主要为缺乏图形用户界面(GUI)窗口的系统而设计,使其非常适合远程服务和GUI交互不可行的情况。与GUI不同,CLI仅依赖于基于文本的命令来控制无人机的移动。它不包含GUI中常见的图形化功能,特别是在视觉任务上下文中。要启动CLI,用户只需在终端中写入以下命令:
$ dronevis
执行此命令将弹出如图3所示的CLI界面。
5.3 键盘和摇杆控制
除了上述用户界面外,DroneVis还支持通过键盘和摇杆来控制无人机。这种控制方法适合熟悉传统遥控设备的用户,并提供了一种直观且响应迅速的无人机操作方式。键盘和摇杆控制在需要精确操控的任务中非常有价值。
5.4 手势控制无人机
虽然用户界面提供了对无人机功能的全面访问,包括通过无人机相机进行的移动控制和各种计算机视觉任务,但它们需要靠近计算机设备。在只需要简单无人机移动控制的情况下,手势控制可以比传统用户界面提供更直观和交互性更强的体验。DroneVis库支持使用手势直接控制无人机,如图4所示。为实现这一功能,使用了Mediapipe手部模型来提取每只手的关键点,为21个关键点生成3D坐标。如图4所示,使用了六种不同的手势来控制无人机。为训练手势分类器模型,收集了包含这六种手势的328张图像的小数据集,如图5所示。模型的输入由Mediapipe提取的63维关键点(21 × 3)组成,代表21个关键点的、和坐标。分类器网络包含一个具有50个单元的全连接层,随后是Leaky ReLU激活函数,以及一个具有6个单元的输出层,对应于六种手势,并随后是softmax激活函数。
层数和大小都是经过实验确定的,以优化性能,确保无人机控制的实时可行性。数据集被划分为80%的训练集、10%的验证集和10%的测试集,通过标签分层来应对轻微的类别不平衡问题。图4展示了示例输出分类,显示了相关的类别标签。
5.5 无人机连接
本节重点介绍了在笔记本电脑和无人机之间建立稳健的连接,以实现在无人机飞行过程中的无缝通信。
在连接到无人机的Wi-Fi网络后,为每个无人机的专用端口启动单独的套接字,每个套接字都设计用于不同的目的。值得注意的是,一个套接字专注于视频流传输,另一个处理控制命令,还有一个用于收集导航数据。这些套接字对于发送请求和检索数据至关重要,在无人机飞行过程中保持无缝通信。为了确保实时和响应式控制,DroneVis为每个连接类型(命令、视频和导航数据)实现了单独的线程。每个线程与指定的端口对齐,提高了无人机通信的效率。有关无人机连接的详细全面信息,可以在ReadtheDocs平台3的无人机连接部分进行探索。
6. 任务与模型
DroneVis库提供了一系列为各种计算机视觉任务设计的模型集合。在本节中,我们将对每个任务进行深入分析,阐述当前任务的特定性质和要求。此外,我们还将概述库中每个任务可用的神经网络模型,我们利用可用的预训练权重而不是从头开始训练模型,以强调它们各自的优点和能力。此外,我们还根据准确性、计算效率等因素(如运行时间)评估并推荐每个任务的最合适模型。
为了测试DroneVis库的能力,我们利用装备有720p高质量摄像头的无人机进行了一系列实验。无人机在埃及-日本科学技术大学校园内飞行,捕获现实世界的影像作为众多计算机视觉任务的基础。这些真实世界的数据使我们能够评估该库在实际场景中的性能和适用性。
对于某些任务,如目标检测、跟踪、姿态估计、分割和深度估计,我们主要依赖无人机拍摄的视频作为输入数据的来源。无人机摄像头获取的高分辨率图像在这些任务中发挥了关键作用,为分析提供了丰富的视觉数据。数据采集过程遵循了伦理准则,并获得了参与个体的口头同意。受试者被告知了研究目标和航拍视频的预期用途,并获得了他们的自愿口头同意。该研究遵循埃及-日本科学技术大学的研究伦理规范。我们也尊重与大学和参与个体之间的数据使用协议的条款和条件。
然而,在某些场景中,我们遇到了限制。例如,动作识别就存在挑战,因为已知的动作识别数据集包含了广泛且复杂的动作,这些动作在大学校园内无法实际执行。在这种情况下,我们转向使用知名数据集中的测试视频来评估库的性能。此外,对于车道和道路检测,我们面临着监管限制,禁止无人机在大学校园外飞行。因此,我们无法依赖无人机拍摄的视频来完成这些任务,而是使用了已知数据集中的测试视频来衡量模型的性能。
7. 总结 & 未来工作
在本研究中,我们引入了DroneVis库,该库为在Parrot无人机上实现计算机视觉算法的自动化提供了全面的解决方案。该库拥有广泛的功能,包括全面的文档、演示测试环境、遵循编码标准以及可靠的测试覆盖率。此外,DroneVis还提供了多样化的用户界面,包括图形界面和命令行界面。值得注意的是,它还通过创新的方法(如手势识别)实现对无人机的控制,极大地扩展了无人机的应用范围。
该库支持广泛的计算机视觉任务,使Parrot无人机适用于从监控和安全到救援和灾害管理等多种应用。此外,对于每项任务,用户都可以灵活地从多种神经网络模型中进行选择,根据自己的具体偏好来调整方法。
在未来的工作中,我们的主要目标是将定位模块集成到库中。这一增强功能将使无人机具备自主导航能力,为其利用开辟新的视野。
对更多实验结果和文章细节感兴趣的读者,可以阅读一下论文原文~
本文仅做学术分享,如有侵权,请联系删文。
计算机视觉工坊交流群
目前我们已经建立了3D视觉方向多个社群,包括2D计算机视觉、大模型、工业3D视觉、SLAM、自动驾驶、三维重建、无人机等方向,细分群包括:
2D计算机视觉:图像分类/分割、目标/检测、医学影像、GAN、OCR、2D缺陷检测、遥感测绘、超分辨率、人脸检测、行为识别、模型量化剪枝、迁移学习、人体姿态估计等
大模型:NLP、CV、ASR、生成对抗大模型、强化学习大模型、对话大模型等
工业3D视觉:相机标定、立体匹配、三维点云、结构光、机械臂抓取、缺陷检测、6D位姿估计、相位偏折术、Halcon、摄影测量、阵列相机、光度立体视觉等。
SLAM:视觉SLAM、激光SLAM、语义SLAM、滤波算法、多传感器融合、多传感器标定、动态SLAM、MOT SLAM、NeRF SLAM、机器人导航等。
自动驾驶:深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器、多传感器标定、多传感器融合、自动驾驶综合群等、3D目标检测、路径规划、轨迹预测、3D点云分割、模型部署、车道线检测、BEV感知、Occupancy、目标跟踪、端到端自动驾驶等。
三维重建:3DGS、NeRF、多视图几何、OpenMVS、MVSNet、colmap、纹理贴图等
无人机:四旋翼建模、无人机飞控等
除了这些,还有求职、硬件选型、视觉产品落地、最新论文、3D视觉最新产品、3D视觉行业新闻等交流群
添加小助理: dddvision,备注:研究方向+学校/公司+昵称(如3D点云+清华+小草莓), 拉你入群。
3D视觉学习知识星球
3DGS、NeRF、结构光、相位偏折术、机械臂抓取、点云实战、Open3D、缺陷检测、BEV感知、Occupancy、Transformer、模型部署、3D目标检测、深度估计、多传感器标定、规划与控制、无人机仿真、三维视觉C++、三维视觉python、dToF、相机标定、ROS2、机器人控制规划、LeGo-LAOM、多模态融合SLAM、LOAM-SLAM、室内室外SLAM、VINS-Fusion、ORB-SLAM3、MVSNet三维重建、colmap、线面结构光、硬件结构光扫描仪,无人机等。
页:
[1]