使用计算机视觉进行无人机检测
摘要
随着技术的创新,安全正在成为需要处理的最大问题。无人机的可访问性呈指数增长,对一般安全构成了巨大威胁。在过去几年中,无人机的使用有所增加。请记住这里的安全问题,建议使用解决方案。首先,检测无人机,然后跟踪它们的路径。
对于物体检测,计算机视觉深度学习算法非常有效。输入由 YOLO 处理,YOLO 是一种用于实时目标检测和跟踪的神经网络。
2.1 了解无人机的概念
根据标题“UAV detection and tracking using computer vision”,UAV(无人驾驶飞行器) 是一种没有飞行员的飞机,可以远程控制或机载计算机。
无人机可用于农业、科学研究、天气预报、运输和交付、救援行动和医疗保健等有益目的。可用于攻击、导弹攻击、目标杀伤等灾难用途。
2.2 什么是计算机视觉?
计算机视觉 是使计算机以人眼视觉的方式查看、识别和处理图像并提供适当输出的科学领域。计算机视觉几乎用于所有领域,即:
- 物体、人脸检测
- 机器人手术和医学诊断
- 图像处理
- 农业
- 太空技术(NASAs Mars Rover 包括模拟地球地形、检测路径障碍物以及拼接全景图像的能力) 计算机视觉的应用如图 1.4 所示
2.3 什么是图像处理技术?
图像处理 计算机视觉使用该技术来执行不同的任务。为提高图像质量或在获得图像堆栈后获得特定结果所执行的操作和方法称为图像处理。
图像处理被认为是当今信息技术发展最迅速的领域之一,在所有业务领域都有越来越多的应用。图像处理的应用有:
图像处理用例
图像处理可用于以下领域:
- 机器人
- 医疗
- 模式识别
- 视频处理
- 人脸检测
2.4 软件要求
- 蟒蛇
- Spyder
- Python
- Open-CV 库
3。目标检测算法
目前有很多用于对象检测的算法。其中一些如下:
- 瞧,琼斯
- 卷积神经网络 (CNN)
- 你只看一次 (YOLO)
- 单次检测器 (SSD)
- 区域卷积神经网络 (R-CNN)
表 3.1:检测算法
算法 | 说明 | 强度 | 弱点 |
VOILA AND JONES (中提琴-琼斯乐队 算法由 Paul Viola 和 Michael Jones 于 2001 年设计) | 主要目的是人脸和物体检测。它可以实时检测物体。 当我们给图像算法看较小的子区域并尝试通过查看每个子区域中的特殊特征来找到对象时。 Viola and Jones 算法使用 Haar-like 特征检测物体 |
|
|
CNN(卷积神经网络)由 Kunihiko Fukushima 于 1980 年引入 | 受生物学启发的层次模型,可以训练以执行检测、识别和分割的真实性。 它基本上是一种深度学习算法,它将图像作为输入,它为图像中存在的对象分配可学习的权重和偏差,并区分一个和另一个 |
|
|
YOLO (你只看一次) | 是实时检测算法。它将神经网络算法应用于图像,并将图像划分为 S x S 网格,并在图像周围制作边界并预测每个边界的可能性。它使用回归。 |
| 1.每个网格单元检测一个对象。 2. 追求高性能而不是准确性。 |
SSD(单发检测器) | 这种方法只需要单次就可以检测到多个物体这种方法非常快。它是为实时实现而设计的。它包含两个组件主干和 SSD 头。 |
|
|
这里会用到Yolo神经网络算法。该算法对于实时实现来说非常快。它使用神经网络算法将图像划分为 S x S 网格,并在图像周围制作边界以预测每个边界的可能性。检测算法见表4.4。
3.1 跟踪算法
检测到物体后,下一个焦点在轨道上。如果检测到的物体是风筝或鸟,则不需要跟踪,但如果检测到的物体是无人机,则目标被跟踪。
很多算法都用于对象跟踪。但是再次使用 YOLO 进行跟踪,因为该算法快速准确,并且可以检测和跟踪,直到目标移出相机范围。
4。 建议设计的实施
这里是建议设计的实现。在其中执行在软件上运行项目所需的所有步骤。
4.1 初始阶段
- 图像处理需要好的CPU/GPU,选择CPU。从网站安装 anaconda Anaconda 安装如图 4.1 所示
- Anaconda Navigator安装完成后,在环境对话框的帮助下创建环境,选择python版本。
- 成功创建环境后,下一步就是安装 Spyder,因为它易于使用。然后通过命令 pip install cv2 安装 open CV。
4.2 准备数据集
- 收集许多不同空中物体的图像,如无人机、鸟类、飞机、直升机、风筝和气球。
注意: 制作数据集不仅仅是收集图像。给出图像的名称,并告诉这些特定对象在每个图像中的位置。为此,一个名为 Labellmg 的软件可以 使用,它将图像转换为文本文件。如图4.6所示
- 一旦制作了所有对象的 Txt 文件。将所有图像和文本文件放入一个 zip 文件中。此外,为包含的类命名文件。
4.3 YOLO 配置
要进行配置,请按以下步骤操作:
- 用 YOLO v3 安装暗网。
- 要配置 YOLO,在 darknet/data 中创建一个文件夹,包括之前制作的数据集的所有图像和 .txt 文件。
- 要制作自定义配置文件,请在 cfg 的 YOLO v3 中进行必要的修改,根据类和步骤调整批次、细分和最大批次。
- 输入类数的时候,改变YOLO上面的卷积层。同样设置random为1。cfg参数见表4.1
表 4.1:CFG 参数
名称 | 说明 |
批处理 | 前向传播中使用了多少图像和标签来计算梯度并通过反向传播方法更新权重。 |
细分 | 批次被细分为许多“块”。块的图像是并行运行的。 |
步骤 | 500,1000:在 500 和 1000 批次后调整学习率。 |
图层(过滤器) | 一层有多少个卷积核。 |
图层(随机) | 放入 YOLO 层。如果设置为 1,则通过每隔几批将图像大小重新调整为不同大小来进行数据增强,用于泛化对象大小。 |
- 通过 data/obj.names 创建一个自定义对象文件夹,其中写入了我们想要检测的所有名称,如无人机、无人机、鸟类、风筝等。
- 在obj.data类数中,包含并保存了train.txt、valid、names和weights文件夹。
- 在 train.txt 中保存图像的所有数据和名称。
4.4 在你的数据集上训练 YOLO
针对定制数据集的 YOLO 训练也是通过暗网完成的。克隆并启用暗网以及启用开放式 CV。通过获取上面创建的 ZIP 文件夹、.cfg 文件、.names 文件、obj.data 文件和 train.txt 文件,然后为 YOLO v3 的训练配置暗网网络,计算执行次数。
经过数千次迭代(根据我们的 CPU 能力可能需要大约 2 小时),经过训练的数据集将准备好使用并与我们的系统集成,并告知平均损失。
4.5 图像和视频输入测试代码
在为自定义数据集训练 YOLO 后,开始在您的训练数据集上测试代码,称为 YOLO 权重。在这种情况下,它有 4 个类。
尝试不同的 YOLO 检测。大权重在准确性方面很好,但由于每秒帧数较低,处理速度有点慢。制作无人机、鸟类的视频,并将这些数据作为代码的输入。使用给定 fps 和阈值的标签,将成功检测和跟踪所有对象。
现在可以通过网络摄像头的实时输入来测试代码的实时场景,改变我们的摄像头飞行我们的无人机的范围并记录结果,您将看到所需的输出“无人机的检测和跟踪”。
工业技术