为了账号安全,请及时绑定邮箱和手机立即绑定

军用侦察小技巧:利用YOLOv8目标检测模型计数敌机

利用地理空间情报,采用YOLOv8目标检测技术,并结合由侦察无人机捕获的空中图像来统计敌方飞机的数量,为军事行动的规划提供支持。

AI系统识别出了敌方机场的飞机(使用YOLOv8)

你们中的许多人可能已经从我早期的一篇文章《No Such Agency 和 “The Machine”》中读到过,我在那篇文章中描述了被称为 “The Machine”全球监控体系架构 的各个组成部分。这一基础设施包括在世界各地部署的各种工具和方法,使政府能够全方位地监控个人、社会行为,甚至是全球范围内的军事设施。地理空间情报(GEO) 在这一过程中扮演了关键角色。

广告:如果你或你认识的人对 低代码、AI 和聊天机器人 开发领域的专家感兴趣,我的朋友来自 cosmith.io 提供顶级的开发和集成服务。

首先,在这篇文章中,我们将探讨地理空间情报(GEOINT)作为一种追踪对手军事基地及其飞机的工具。通过有效监控这些基地及其飞机,这有助于我们充分准备针对这些基地的作战计划。

YOLOv8 目标检测

YOLOv8(由Ultralytics开发的)是一个流行的实时物体检测系统,在包括军事监视和侦察在内的各种应用中被广泛使用。它设计用于实时检测图像或视频帧中的物体。特别是在军事场景中,快速且准确地识别例如车辆、人员或设备对于态势感知和目标跟踪至关重要。

使用PyTorch结合深度学习和卷积神经网络(CNNs),YOLOv8能够检测场景中的多个对象,实现了快速和高精度。这就是我们选择它来做我们任务的原因。

先决条件

首先,我决定在 Google Compute Engine 后端服务使用 Python 3,并通过 Google Colab 运行代码。接下来,我们来安装依赖项。

运行以下命令来安装ultralytics库:

!pip install ultralytics

在安装过程中,它会安装 opencv-pythontorchpandas 等必需的库以及其他必需的依赖项,以便使用此包。

导入 cv2  
导入 urllib.request  

从 ultralytics 导入 YOLO, checks, hub  
从 google.colab.patches 导入 cv2_imshow

如上所示,我们导入了实验中将要用到的所有必要库。除了ultralytics模块之外,还有用于热修复的cv2_imshow。这是为解决cv2在_Google Colab_中的问题而使用的热修复版本。urllib.request用于从公共存储下载图像样本。

YOLOv8(一种目标检测模型)

深度学习模型 YOLOv8 设计用于物体检测,通过将输入图像分割成网格的方式运作。然后,它为每个网格单元内的物体预测边界框和类别置信度。该模型的高效性在于它可以通过一次前向传递处理整个图像。

通常,为了创建模型,我们需要正确准备数据集,为此需要为每张图片添加_图片_和标签,从而教会模型识别物体。然而,已经存在一个数据库,其中包含了任何项目的初期阶段所需的大部分数据集。今天,我们将在实验中使用它。让我们去Roboflow网站。

AeroSat 数据集, 概要 (roboflow.com)

如上图所示,你需要为项目选择一个合适的数据集资源。在我们这个例子中,我选择了模型类型为yolov8,项目类型为物体检测,并输入了aerial作为搜索关键词。系统提供了许多数据集选项,我根据图像的数量选择了更适合我们的需求的一个:1192张图片和1个类别

下载数据集

一旦确定数据集符合你的需求,你就可以选择适合的格式来下载它。在我们这个情况中,我选择了_YOLOv8_格式,因为我们之前约定使用它。

导出为ZIP文件的YOLOv8格式

选择“ZIP 文件”作为存储数据集的选项,如上图,然后按照后续指示下载。

当你准备好了,你可以解压文件并探索数据集的结构和图像,以及标签。在大多数情况下,你会看到三个文件夹:testtrainvalid,还有一些文件,其中一个文件是data.yaml,描述了数据和类别。

接下来,因为我们需要用到YOLOv8,我们需要去Ultralytics Hub,注册,创建项目、模型,并上传数据集后,最后准备好进行模型训练。

Ultralytics HUB新建项目

如上图所示,我输入了项目名称 AER_AIR_04s,简短说明 使用航拍图像在机场进行飞机检测,还提供了一张样本图片以便在项目列表中正确识别该项目。你也可以照做。

在下一步中,你需要前往“数据集”,从你的下载文件夹中上传ZIP文件,选择数据集类型Detect,数据集的名称以及描述,如下所示。

上传数据集从ZIP文件。

点击“创建”按钮,上传完成后,你将看到数据集列表,其中也会看到你的新数据集。

飞机检测数据集

只需查看细节,检查图像及其标签,接着点击“训练模型”按钮继续进行 YOLOv8 模型的训练。

训练 YOLOv8 模型(一种目标检测模型)

在接下来的窗口中,你需要从列表中选择项目,输入模型名称 YOLOv8sAir(在我的示例中),选择快速优化的 YOLOv8架构 YOLOv8s,然后点击“ 继续 ”按钮即可。

选择模型名称及其架构类型(例如 YOLOv8s)

Ultralytics Hub 提供了多种训练模型的选项,但我们将会使用——‘Google Colab’。

训练YOLOv8模型的参数

如图所示,您将获得类似下面所示的认证密钥和网址,用于模型训练。https://hub.ultralytics.com/models/BN8V8tA1pOt6thjZKq6V

只需复制整个代码并粘贴到你的 Google Colab 中。

    hub.login('[YOUR_AUTH_KEY]')  // 使用你的授权密钥登录

    model = YOLO('https://hub.ultralytics.com/models/BN8V8tA1pOt6thjZKq6V')  // 加载模型
    results = model.train()  // 开始训练模型

接下来,进入“运行时”菜单,选择“更改运行时类型为”,并选择“T4 GPU”选项,以使用NVIDIA T4 GPU来加速训练。

英伟达的T4 GPU

一完成它,你就可以像平时在 Google Colab 脚本中操作一样,开始 YOLOv8 模型训练

在 Google Colab 上进行训练

这样的大规模数据集训练过程大约需要 3–4小时。不过,你不仅可以监视 Google Colab 进度(这可能更为方便),还可以通过 YOLOv8 网页上的专门进度条来查看。

训练流程在Ultralytics Hub

正如我之前提到的,这可能需要一段时间。完成后,请转到“ 部署”选项卡并下载最终的模型(*.pt)文件。然后,您可以使用 YOLOv8 包 在任何设备上(包括 Raspberry Pi)和智能应用来使用该模型,以识别机场或野外的物体,或者在战场上的物体,甚至可以在 侦察无人机 上使用,以识别您任务中的物体。

YOLOv8 使用教程

截至这一点,你已经有了一个 21.4 MB 大小的 PyTorch (*.pt) 文件,其中包含 YOLOv8 模型 的权重。这让你可以在任何应用程序中只需几行代码就可以使用它。

方便起见,我已经将_PT-file_以及我们实验中要用到的图像和视频素材上传到持久的区块链存储Arweave。为了下载这些文件并将它们保存到我们_Google Compute Engine_的工作目录里,我们需要写并执行以下代码。

    yolov8sair_url = 'https://6bq43uyscbhniu4kvl6hayy3zosqjnl5x2v2jm7zlfse6nnqrqsa.arweave.net/8GHN0xIQTtRTiqr8cGMby6UEtX2-q6Sz-VlkTzWwjCQ'  
    urllib.request.urlretrieve(yolov8sair_url, 'yolov8sair.pt')  

    source_file = 'https://6x77tjsjpqn6ze2k7izx36xgtipzff6yi2jfnp2xxf6lvmtyy7oa.arweave.net/9f_5pkl8G-yTSvozffrmmh-Sl9hGkla_V7l8urJ4x9w'  
    urllib.request.urlretrieve(source_file, 'Aerial_AirBase.jpg')  

    source_video = 'https://3tghzdwlhmyajv5eadufzesdo7epc5queknepym6hv2p737mgvxa.arweave.net/3Mx8jss7MATXpADoXJJDd8jxdhQimkfhnj10_-_sNW4'  
    urllib.request.urlretrieve(source_video, 'airport_video_source.mp4')

如你所见,这里有三个文件:yolov8sair.pt 是模型权重文件,Aerial_AirBase.jpg 是来自侦察无人机的示例图像,我们将用它来进行物体检测;而 airport_video_source.mp4 是一个视频源示例,稍后我们再用它来做物体识别。

    model = YOLO('yolov8sair.pt')  # 加载模型

    results = model.predict('Aerial_AirBase.jpg')  # 进行图像预测
    annotated_frame = results[0].plot()  # 获取带有标注的图像
    cv2_imshow(annotated_frame)  # 显示标注后的图像

根据训练好的模型,我们创建一个YOLO对象。然后,我们尝试在图像文件Aerial_AirBase.jpg中寻找任何对象,最后我们显示结果中的标注帧,索引为0的那帧。

使用yolov8sair模型来进行目标识别。

根据上面的图片,检测到了三架飞机,概率大约都在 84% 左右,显示出高度的置信度。在这种情况下,可以轻松地通过计数 results[] 数组中的对象数量来统计它们。

信心和概率水平会因天气条件而有所不同。然而,尽管存在明显的不利因素,例如多云天气,这种方法在制定军事行动计划和支持作战行动中仍然重要。

如你刚刚所见,其易用性,只需几行代码,因此可以应用于各种应用程序,包括自主飞行的无人机,包括那些使用小型飞行控制器的无人机。

只需想象,你可以构建的智能应用,通过融入这种目标检测机制。想想那些装备了自动导航系统和目标检测与跟踪能力的作战无人机。让你的想象力引领你。

还有一个不错的军事方案的例子。

    model = YOLO('yolov8sair.pt')  

    # 视频流中的物体识别  
    cap = cv2.VideoCapture(f"airport_video_source.mp4")  
    img_array = []  

    while cap.isOpened():  
        success, frame = cap.read()  

        if success:  
            results = model(frame)  
            annotated_frame = results[0].plot()  
            img_array.append(annotated_frame)  
        else:  
            break  

    cap.release()  

    # 将保存为输出视频文件  
    # 设置视频的宽和高
    size = img_array[0].shape[1], img_array[0].shape[0]  # (384, 640)  
    writer = cv2.VideoWriter(f"airport_video_output.mp4", cv2.VideoWriter_fourcc(*'mp4v'), 25, size)  
    # 对每一帧进行处理
    for frame in img_array:  
        img_n = cv2.resize(frame, size)  
        writer.write(img_n)  
    # 释放资源
    writer.release()

这涉及从视频流中进行目标检测,我们从airport_video_source.mp4文件中提取视频流。然后,它将视频分成帧,在每一帧上检测飞机,并最后合成输出为airport_video_output.mp4文件。

你可以从_Google Compute Engine_的工作目录里下载这个文件。我相信你对此应该已经很熟悉了。

视频流的目标检测

看看上面的视频文件。虽然大多数飞机都成功检测到了,但并不是所有的都被正确识别。想想你可以怎样提高模型的准确度,并在评论中分享你的建议。

X档案

以下是本文中用于演示的YOLOv8对象检测模型的完整文件列表如下。

PyTorch 模型(点击链接查看模型 YOLOv8sAir):

无人机的来源:

代码链接:Google Research Colab

发挥你的想象力,创造一个惊人的解决方案!

联系我们吧

如果你对本文中提到的任何内容或其他问题有任何疑问,可以在推特上问我,欢迎提问。

推特:https://twitter.com/dmytro_sazonov 的账号

低代码、AI和聊天机器人的开发最棒的专家

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消