自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于 YOLOv8 的目標(biāo)檢測實(shí)例應(yīng)用

開發(fā)
在本文中,我們將深入探討地理空間情報(bào)(GEOINT)作為跟蹤敵方軍事空軍基地的工具。

通過使用 YOLOv8 目標(biāo)檢測和偵察無人機(jī)拍攝的航空?qǐng)D像來利用地理空間情報(bào)(GEOINT)統(tǒng)計(jì)敵方飛機(jī),從而規(guī)劃軍事行動(dòng)。

使用 YOLOv8 識(shí)別敵方空軍基地的飛機(jī)

在本文中,我們將深入探討地理空間情報(bào)(GEOINT)作為跟蹤敵方軍事空軍基地的工具。通過有效地監(jiān)控這些位置及其飛機(jī),可以為針對(duì)它們的作戰(zhàn)行動(dòng)進(jìn)行充分準(zhǔn)備。

YOLOv8 目標(biāo)檢測

YOLOv8 是由 Ultralytics 開發(fā)的流行實(shí)時(shí)目標(biāo)檢測系統(tǒng),廣泛應(yīng)用于包括軍事監(jiān)視和偵察在內(nèi)的各種應(yīng)用。它旨在實(shí)時(shí)檢測圖像或視頻幀中的物體。在軍事場景中,快速準(zhǔn)確地指示車輛、人員或設(shè)備等目標(biāo)對(duì)于態(tài)勢感知和目標(biāo)跟蹤至關(guān)重要。

通過將 PyTorch 與深度學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò)(CNN)結(jié)合使用,YOLOv8 展示了同時(shí)檢測場景中多個(gè)物體的能力,具有良好的速度和精度。因此,我們選擇在任務(wù)中使用它。

前提條件

首先,我選擇在 Google Compute Engine 后端使用 Python 3,并在 Google Colab 中執(zhí)行代碼。讓我們安裝依賴項(xiàng)。

!pip install ultralytics

在安裝過程中,它會(huì)安裝 opencv-python、torch、pandas 以及此包所需的其他依賴項(xiàng)。

import cv2
import urllib.request

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

如上所述,我們導(dǎo)入了實(shí)驗(yàn)中將要使用的所有必要庫。除了 ultralytics 模塊外,還有 cv2_imshow,這是一個(gè)在 Google Colab 中正確工作的 cv2 熱修復(fù)程序。urllib.request 用于從公共存儲(chǔ)下載圖像示例。

YOLOv8 模型

YOLOv8 是為目標(biāo)檢測設(shè)計(jì)的深度學(xué)習(xí)模型,它通過將輸入圖像分割成網(wǎng)格,然后預(yù)測每個(gè)網(wǎng)格單元中物體的邊界框和類別概率。該模型的高效性在于其能夠在單次前向傳遞中處理整個(gè)圖像。

通常,為了創(chuàng)建模型,我們需要通過為每個(gè)圖像添加圖像和標(biāo)簽來正確準(zhǔn)備數(shù)據(jù)集,以教模型識(shí)別物體。然而,現(xiàn)有的數(shù)據(jù)庫已經(jīng)包含了任何項(xiàng)目初期所需的大多數(shù)數(shù)據(jù)集。今天,我們將在實(shí)驗(yàn)中使用這些數(shù)據(jù)集。讓我們?cè)L問 Roboflow 網(wǎng)站。

AeroSat 數(shù)據(jù)集 > 概覽(roboflow.com)

如上圖所示,您需要為項(xiàng)目找到合適的數(shù)據(jù)集。在我們的示例中,我選擇了 yolov8 作為模型類型,目標(biāo)檢測作為項(xiàng)目類型,并輸入 aerial 作為搜索詞。系統(tǒng)提供了廣泛的數(shù)據(jù)集列表,我根據(jù)圖像數(shù)量選擇了一個(gè)更符合我們需求的數(shù)據(jù)集:1192 張圖像和 1 個(gè)類別。

下載數(shù)據(jù)集

一旦確定數(shù)據(jù)集適合您的任務(wù),您需要通過選擇適當(dāng)?shù)膶?dǎo)出格式下載它。在我們的場景中,我選擇了 YOLOv8 格式,因?yàn)槲覀冎耙呀?jīng)決定使用它。

導(dǎo)出至 YOLOv8 格式的壓縮文件

選擇 ZIP 文件作為存儲(chǔ)建議數(shù)據(jù)集的選項(xiàng),如上圖所示,并按照進(jìn)一步的說明下載。當(dāng)您準(zhǔn)備好后,可以解壓文件并探索數(shù)據(jù)集的結(jié)構(gòu)和包含的圖像及其標(biāo)簽。在大多數(shù)情況下,您會(huì)看到三個(gè)文件夾:test、train 和 valid,以及一些文件,其中一個(gè)是描述數(shù)據(jù)和類別的 data.yaml。

接下來的步驟,由于我們要使用 YOLOv8,我們必須前往 Ultralytics Hub,注冊(cè),創(chuàng)建項(xiàng)目、模型,并上傳數(shù)據(jù)集,最終準(zhǔn)備好您的模型進(jìn)行訓(xùn)練。

在 Ultralytics HUB 創(chuàng)建新項(xiàng)目

如上圖所示,我輸入了項(xiàng)目名稱 AER_AIR_04s,簡短描述為通過航空?qǐng)D像在空軍基地檢測飛機(jī),并添加了一個(gè)示例圖像,以便在我的列表中正確識(shí)別此項(xiàng)目。您可以照此操作。

接下來的步驟是轉(zhuǎn)到“Datasets”并從下載文件夾中上傳 ZIP 文件,選擇數(shù)據(jù)集類型 Detect、數(shù)據(jù)集名稱和描述,如下所示。

從 ZIP 文件上傳數(shù)據(jù)集

點(diǎn)擊“Create”按鈕并完成上傳過程后,您將看到數(shù)據(jù)集列表,其中包含您的新數(shù)據(jù)集。

航空飛機(jī)檢測數(shù)據(jù)集

深入檢查圖像及其標(biāo)簽,然后按“Train model”按鈕繼續(xù) YOLOv8 模型訓(xùn)練。

訓(xùn)練 YOLOv8 模型

在下一個(gè)窗口中,您需要從列表中選擇項(xiàng)目,輸入模型名稱 YOLOv8sAir,選擇 YOLOv8 架構(gòu) YOLOv8s,并點(diǎn)擊“Continue”按鈕。

選擇模型名稱及其架構(gòu)(YOLOv8s)

Ultralytics Hub 提供了廣泛的選項(xiàng)來訓(xùn)練模型,但我們將使用以下選項(xiàng)——“Google Colab”。

YOLOv8 模型訓(xùn)練的參數(shù)

如上圖所示,您將獲得認(rèn)證密鑰和 URL(https://hub.ultralytics.com/models/BN8V8tA1pOt6thjZKq6V)用于模型訓(xùn)練。只需復(fù)制整個(gè)代碼并將其粘貼到您的 Google Colab 中。

hub.login('[YOUR_AUTH_KEY]')

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

接下來,導(dǎo)航到“Runtime”菜單,選擇“Change runtime type”,并選擇“T4 GPU”以加速訓(xùn)練,使用 NVIDIA T4 GPU 作為加速器。

Nvidia Tesla T4 GPU

完成后,您可以像通常在 Google Colab 腳本中那樣啟動(dòng) YOLOv8 模型訓(xùn)練過程。

在 Google Colab 中訓(xùn)練

對(duì)于如此大的數(shù)據(jù)集,訓(xùn)練過程大約需要 3-4 小時(shí)。然而,您不僅可以在 Google Colab 列表中監(jiān)控進(jìn)度,這可能不太方便,還可以使用 YOLOv8 模型網(wǎng)頁上的特殊進(jìn)度條。

在 Ultralytics Hub 中訓(xùn)練過程

如前所述,這可能需要一些時(shí)間。完成后,導(dǎo)航到“Deploy”選項(xiàng)卡并下載最終模型(*.pt)文件。然后,您可以使用 YOLOv8 包在任何設(shè)備上,包括 Raspberry Pi 和智能應(yīng)用程序中,使用此模型進(jìn)行目標(biāo)檢測,識(shí)別空軍基地或戰(zhàn)場上的目標(biāo),甚至在偵察無人機(jī)上進(jìn)行您的任務(wù)。

YOLOv8 的使用

到目前為止,您已經(jīng)擁有了 YOLOv8 模型的 PyTorch (*.pt) 文件,該文件大小為 21.4 MB。這使我們可以在任何應(yīng)用程序中使用它,只需幾行代碼。為了方便起見,我將 PT 文件、實(shí)驗(yàn)中將使用的圖像和視頻源上傳到持久區(qū)塊鏈存儲(chǔ) Arweave。要下載這些三個(gè)文件并將它們保存到我們的 Google Compute Engine 的工作目錄中,我們需要編寫并執(zhí)行以下代碼。

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')

如您所見,有三個(gè)文件:yolov8sair.pt 是模型的權(quán)重文件,Aerial_AirBase.jpg 是我們將在實(shí)驗(yàn)中用于目標(biāo)檢測的偵察無人機(jī)拍攝的圖像示例,airport_video_source.mp4 是將用于目標(biāo)識(shí)別的視頻源示例。

model = YOLO('yolov8sair.pt')

results = model.predict('Aerial_AirBase.jpg')
annotated_frame = results[0].plot()
cv2_imshow(annotated_frame)

這里我們基于訓(xùn)練好的模型創(chuàng)建 YOLO 對(duì)象。然后,我們嘗試預(yù)測并找到 Aerial_AirBase.jpg 圖像中的任何物體,最后顯示結(jié)果中的第0個(gè)標(biāo)注框。

使用 yolov8sair 模型進(jìn)行目標(biāo)檢測

如上圖所示,檢測到三架飛機(jī),概率均約為 84%,表明高度的置信度。在這種情況下,您可以通過自動(dòng)統(tǒng)計(jì) results[] 數(shù)組中的物體列表來輕松統(tǒng)計(jì)它們。置信度和概率水平可能會(huì)因天氣條件而異。然而,盡管存在如天氣陰云等顯著缺點(diǎn),這種偵察方法在規(guī)劃軍事行動(dòng)和支持戰(zhàn)斗行動(dòng)中仍具有重要意義。

正如您所見,其易用性只需幾行代碼即可使其在各種應(yīng)用中得以使用,包括小型飛行控制器的自主無人機(jī)。想象一下,通過結(jié)合這種目標(biāo)檢測機(jī)制,您可以構(gòu)建的智能應(yīng)用程序。想象一下,配備自動(dòng)駕駛儀、目標(biāo)檢測和跟蹤能力的作戰(zhàn)無人機(jī),直到摧毀目標(biāo)。讓您的想象力引導(dǎo)您。

另一個(gè)您可以用于軍事解決方案的好例子:

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()

這涉及從視頻流中進(jìn)行目標(biāo)檢測,在我們的例子中從 airport_video_source.mp4 文件中提取。然后,它將視頻分成幀,檢測每幀上的飛機(jī),并將它們編譯到 airport_video_output.mp4 文件中。

您可以從 Google Compute Engine 的工作目錄中下載此文件。我相信您已經(jīng)熟悉這個(gè)過程。

視頻流中的目標(biāo)檢測

責(zé)任編輯:趙寧寧 來源: 小白玩轉(zhuǎn)Python
相關(guān)推薦

2024-11-18 17:31:27

2023-02-02 09:00:00

2024-01-29 09:29:02

計(jì)算機(jī)視覺模型

2024-07-11 08:25:34

2024-09-09 16:35:10

YOLO模型

2024-10-25 08:30:57

計(jì)算機(jī)視覺神經(jīng)網(wǎng)絡(luò)YOLOv8模型

2024-05-15 09:16:05

2024-08-06 11:01:03

2025-02-24 09:50:21

2025-01-21 11:41:14

2023-12-11 10:18:38

YOLOv8檢測器實(shí)戰(zhàn)

2024-07-01 12:55:50

2024-11-28 10:04:14

2025-02-07 14:52:11

2025-01-22 13:15:10

2024-07-04 09:22:24

2022-06-24 11:14:00

美團(tuán)開源

2022-10-14 16:18:40

MobileNetAndroid端模型訓(xùn)練

2024-08-27 12:40:59

2024-10-10 17:05:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)