利用地理空间情报,采用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
发挥你的想象力,创造一个惊人的解决方案!
联系我们吧如果你对本文中提到的任何内容或其他问题有任何疑问,可以在推特上问我,欢迎提问。
推特:https://twitter.com/dmytro_sazonov 的账号
共同學習,寫下你的評論
評論加載中...
作者其他優質文章















