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.
Jika Anda tertarik untuk menjelajahi lebih banyak konten Python, pastikan untuk mengikuti saya: