基于 YOLOv8 的目标检测实例应用

开发
在本文中,我们将深入探讨地理空间情报(GEOINT)作为跟踪敌方军事空军基地的工具。

通过使用 YOLOv8 目标检测和侦察无人机拍摄的航空图像来利用地理空间情报(GEOINT)统计敌方飞机,从而规划军事行动。

使用 YOLOv8 识别敌方空军基地的飞机

在本文中,我们将深入探讨地理空间情报(GEOINT)作为跟踪敌方军事空军基地的工具。通过有效地监控这些位置及其飞机,可以为针对它们的作战行动进行充分准备。

YOLOv8 目标检测

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

通过将 PyTorch 与深度学习和卷积神经网络(CNN)结合使用,YOLOv8 展示了同时检测场景中多个物体的能力,具有良好的速度和精度。因此,我们选择在任务中使用它。

前提条件

首先,我选择在 Google Compute Engine 后端使用 Python 3,并在 Google Colab 中执行代码。让我们安装依赖项。

!pip install ultralytics

在安装过程中,它会安装 opencv-python、torch、pandas 以及此包所需的其他依赖项。

import cv2
import urllib.request

from ultralytics import YOLO, checks, hub
from google.colab.patches import cv2_imshow

如上所述,我们导入了实验中将要使用的所有必要库。除了 ultralytics 模块外,还有 cv2_imshow,这是一个在 Google Colab 中正确工作的 cv2 热修复程序。urllib.request 用于从公共存储下载图像示例。

YOLOv8 模型

YOLOv8 是为目标检测设计的深度学习模型,它通过将输入图像分割成网格,然后预测每个网格单元中物体的边界框和类别概率。该模型的高效性在于其能够在单次前向传递中处理整个图像。

通常,为了创建模型,我们需要通过为每个图像添加图像和标签来正确准备数据集,以教模型识别物体。然而,现有的数据库已经包含了任何项目初期所需的大多数数据集。今天,我们将在实验中使用这些数据集。让我们访问 Roboflow 网站。

AeroSat 数据集 > 概览(roboflow.com)

如上图所示,您需要为项目找到合适的数据集。在我们的示例中,我选择了 yolov8 作为模型类型,目标检测作为项目类型,并输入 aerial 作为搜索词。系统提供了广泛的数据集列表,我根据图像数量选择了一个更符合我们需求的数据集:1192 张图像和 1 个类别。

下载数据集

一旦确定数据集适合您的任务,您需要通过选择适当的导出格式下载它。在我们的场景中,我选择了 YOLOv8 格式,因为我们之前已经决定使用它。

导出至 YOLOv8 格式的压缩文件

选择 ZIP 文件作为存储建议数据集的选项,如上图所示,并按照进一步的说明下载。当您准备好后,可以解压文件并探索数据集的结构和包含的图像及其标签。在大多数情况下,您会看到三个文件夹:test、train 和 valid,以及一些文件,其中一个是描述数据和类别的 data.yaml。

接下来的步骤,由于我们要使用 YOLOv8,我们必须前往 Ultralytics Hub,注册,创建项目、模型,并上传数据集,最终准备好您的模型进行训练。

在 Ultralytics HUB 创建新项目

如上图所示,我输入了项目名称 AER_AIR_04s,简短描述为通过航空图像在空军基地检测飞机,并添加了一个示例图像,以便在我的列表中正确识别此项目。您可以照此操作。

接下来的步骤是转到“Datasets”并从下载文件夹中上传 ZIP 文件,选择数据集类型 Detect、数据集名称和描述,如下所示。

从 ZIP 文件上传数据集

点击“Create”按钮并完成上传过程后,您将看到数据集列表,其中包含您的新数据集。

航空飞机检测数据集

深入检查图像及其标签,然后按“Train model”按钮继续 YOLOv8 模型训练。

训练 YOLOv8 模型

在下一个窗口中,您需要从列表中选择项目,输入模型名称 YOLOv8sAir,选择 YOLOv8 架构 YOLOv8s,并点击“Continue”按钮。

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

Ultralytics Hub 提供了广泛的选项来训练模型,但我们将使用以下选项——“Google Colab”。

YOLOv8 模型训练的参数

如上图所示,您将获得认证密钥和 URL(https://hub.ultralytics.com/models/BN8V8tA1pOt6thjZKq6V)用于模型训练。只需复制整个代码并将其粘贴到您的 Google Colab 中。

hub.login('[YOUR_AUTH_KEY]')

model = YOLO('https://hub.ultralytics.com/models/BN8V8tA1pOt6thjZKq6V')
results = model.train()

接下来,导航到“Runtime”菜单,选择“Change runtime type”,并选择“T4 GPU”以加速训练,使用 NVIDIA T4 GPU 作为加速器。

Nvidia Tesla T4 GPU

完成后,您可以像通常在 Google Colab 脚本中那样启动 YOLOv8 模型训练过程。

在 Google Colab 中训练

对于如此大的数据集,训练过程大约需要 3-4 小时。然而,您不仅可以在 Google Colab 列表中监控进度,这可能不太方便,还可以使用 YOLOv8 模型网页上的特殊进度条。

在 Ultralytics Hub 中训练过程

如前所述,这可能需要一些时间。完成后,导航到“Deploy”选项卡并下载最终模型(*.pt)文件。然后,您可以使用 YOLOv8 包在任何设备上,包括 Raspberry Pi 和智能应用程序中,使用此模型进行目标检测,识别空军基地或战场上的目标,甚至在侦察无人机上进行您的任务。

YOLOv8 的使用

到目前为止,您已经拥有了 YOLOv8 模型的 PyTorch (*.pt) 文件,该文件大小为 21.4 MB。这使我们可以在任何应用程序中使用它,只需几行代码。为了方便起见,我将 PT 文件、实验中将使用的图像和视频源上传到持久区块链存储 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')

# Object Detection in Video-stream
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()

# Saving to output video file
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 的工作目录中下载此文件。我相信您已经熟悉这个过程。

视频流中的目标检测

责任编辑:赵宁宁 来源: 小白玩转Python
相关推荐

2024-11-18 17:31:27

2023-02-02 09:00:00

检测模型YOLOv8存储

2024-01-29 09:29:02

计算机视觉模型

2024-07-11 08:25:34

2024-09-09 16:35:10

YOLO模型

2024-10-25 08:30:57

计算机视觉神经网络YOLOv8模型

2024-05-15 09:16:05

2024-08-06 11:01:03

2023-12-11 10:18:38

YOLOv8检测器实战

2024-07-01 12:55:50

2024-11-28 10:04:14

2024-07-04 09:22:24

2022-06-24 11:14:00

美团开源

2024-08-27 12:40:59

2024-10-10 17:05:00

2024-10-16 16:49:44

定向边界框目标检测YOLOv8

2024-10-07 11:12:55

2024-05-28 10:04:00

2022-10-14 16:18:40

MobileNetAndroid端模型训练

2024-11-27 10:27:56

点赞
收藏

51CTO技术栈公众号