利用地理空间情报,采用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-python
,torch
,pandas
等必需的库以及其他必需的依赖项,以便使用此包。
导入 cv2
导入 urllib.request
从 ultralytics 导入 YOLO, checks, hub
从 google.colab.patches 导入 cv2_imshow
如上所示,我们导入了实验中将要用到的所有必要库。除了ultralytics
模块之外,还有用于热修复的cv2_imshow
。这是为解决cv2
在_Google Colab_中的问题而使用的热修复版本。urllib.request
用于从公共存储下载图像样本。
深度学习模型 YOLOv8 设计用于物体检测,通过将输入图像分割成网格的方式运作。然后,它为每个网格单元内的物体预测边界框和类别置信度。该模型的高效性在于它可以通过一次前向传递处理整个图像。
通常,为了创建模型,我们需要正确准备数据集,为此需要为每张图片添加_图片_和标签,从而教会模型识别物体。然而,已经存在一个数据库,其中包含了任何项目的初期阶段所需的大部分数据集。今天,我们将在实验中使用它。让我们去Roboflow网站。
AeroSat 数据集, 概要 (roboflow.com)
如上图所示,你需要为项目选择一个合适的数据集资源。在我们这个例子中,我选择了模型类型为yolov8
,项目类型为物体检测
,并输入了aerial
作为搜索关键词。系统提供了许多数据集选项,我根据图像的数量选择了更适合我们的需求的一个:1192张图片和1个类别
。
下载数据集
一旦确定数据集符合你的需求,你就可以选择适合的格式来下载它。在我们这个情况中,我选择了_YOLOv8_格式,因为我们之前约定使用它。
导出为ZIP文件的YOLOv8格式
选择“ZIP 文件”作为存储数据集的选项,如上图,然后按照后续指示下载。
当你准备好了,你可以解压文件并探索数据集的结构和图像,以及标签。在大多数情况下,你会看到三个文件夹:test
,train
,valid
,还有一些文件,其中一个文件是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):
无人机的来源:
- 静态图片:Aerial_AirBase.jpg —
- 机场视频:AirBase_Video.mp4
发挥你的想象力,创造一个惊人的解决方案!
联系我们吧如果你对本文中提到的任何内容或其他问题有任何疑问,可以在推特上问我,欢迎提问。
共同学习,写下你的评论
评论加载中...
作者其他优质文章