Di era kemajuan teknologi yang pesat, kebutuhan akan pengawasan langit yang efisien dan akurat menjadi semakin penting. Baik untuk mengelola wilayah udara, memperkuat keamanan bandara, atau memantau dampak lingkungan, kemampuan mendeteksi dan menghitung pesawat secara real-time memainkan peran penting. Metode tradisional sering kali gagal dalam menghadapi tantangan ini, namun kini, perpaduan antara pembelajaran mendalam dan teknik visi komputer mutakhir memberi kita solusi yang luar biasa. Dalam artikel ini, kami mempelajari ranah YOLOv8 (You Only Look Once versi 8), sebuah sistem pendeteksi objek yang terkenal dengan kecepatan dan presisinya. Kami akan mengeksplorasi bagaimana YOLOv8 dapat dimanfaatkan untuk tidak hanya mendeteksi pesawat dalam umpan video tetapi juga menetapkan ID jalur unik untuk memastikan setiap pesawat hanya dihitung satu kali, sehingga merevolusi kemampuan kami untuk memantau dan mengelola langit di atas. Sumber data kami untuk proyek ini adalah ADS-B Exchange, yang menyediakan gudang informasi pelacakan pesawat yang berharga.

Memulai Yolo-V8

#Import libraries
from ultralytics import YOLO
import cv2
import argparse
import numpy as np

Untuk memulai pelacakan objek menggunakan YOLOv8, Anda dapat membuat skrip Python sederhana yang menerapkan algoritme pelacakan pada video dan menampilkan hasilnya di jendela OpenCV default.

#Load and save video
cap = cv2.VideoCapture(args.source)
    
# Check if the video file was opened successfully
if not cap.isOpened():
    print("Error: Could not open video file.")
    return
    
# Get video properties
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# Define the codec and create a VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*"mp4v")  # Use appropriate codec (e.g., 'XVID', 'MJPG', 'H264', etc.)
out = cv2.VideoWriter(args.save_dir, fourcc, fps, (width, height))

# Read a frame from the video. This should be inside a loop
ret, frame = cap.read()

# Break the loop if we have reached the end of the video
if not ret:
    break
##Data processing


out.write(frame)

#Release input and output
cap.release()
out.release()   

YoloV8 memiliki fungsi bawaan untuk menjalankan pelacakan tanpa menggunakan perpustakaan eksternal.

model = YOLO('path/to/model') #model creation
results = model.track(frame,persist=True)[0] #Use persist=True to keep track id

Dalam hal ini, setiap hasil digambar dalam bingkai aslinya.

boxes = results.cpu().numpy().boxes.data
for output in boxes:
    bbox_tl_x = int(output[0])
    bbox_tl_y = int(output[1])
    bbox_br_x = int(output[2])
    bbox_br_y = int(output[3])

    id = int(output[4])
    class_ = int(output[6])
    score = int(output[5])
    classColor = [int(c) for c in colorList[class_]]


    cv2.rectangle(frame, (bbox_tl_x, bbox_tl_y),(bbox_br_x, bbox_br_y), color=classColor, thickness=2) #Draw detection rectangle
    cv2.putText(frame, f"{class_names[class_].capitalize()}- {id}", (bbox_tl_x, bbox_tl_y), cv2.FONT_HERSHEY_COMPLEX, 1, color=classColor, thickness=1) #Draw detection value

Periksa kode pelacakan objek yolov8 selengkapnya di Github.

Menghadapi tantangan AI? Hubungi saya untuk solusi berbasis hasil. Terobosan Anda berikutnya tinggal mengirimkan pesan saja.

Fiverr

Kerja Keras

Jika Anda tertarik untuk menjelajahi lebih banyak konten Python, pastikan untuk mengikuti saya:

Github
Media
Linkedin