ในยุคของความก้าวหน้าทางเทคโนโลยีอย่างรวดเร็ว ความจำเป็นในการเฝ้าระวังท้องฟ้าของเราอย่างมีประสิทธิภาพและแม่นยำไม่เคยมีความสำคัญมากเท่านี้มาก่อน ไม่ว่าจะเป็นการจัดการน่านฟ้า การรักษาความปลอดภัยของสนามบิน หรือการตรวจสอบผลกระทบต่อสิ่งแวดล้อม ความสามารถในการตรวจจับและนับจำนวนเครื่องบินแบบเรียลไทม์มีบทบาทสำคัญ วิธีการแบบเดิมๆ มักไม่ประสบผลสำเร็จเมื่อเผชิญกับความท้าทายเหล่านี้ แต่ในปัจจุบัน การผสมผสานระหว่างการเรียนรู้เชิงลึกและเทคนิคการมองเห็นคอมพิวเตอร์ที่ล้ำสมัยทำให้เรามีวิธีแก้ปัญหาที่พิเศษ ในบทความนี้ เราจะเจาะลึกขอบเขตของ YOLOv8 (คุณดูเพียงครั้งเดียว เวอร์ชัน 8) ซึ่งเป็นระบบตรวจจับวัตถุที่มีชื่อเสียงในด้านความเร็วและความแม่นยำ เราจะสำรวจว่า "YOLOv8" สามารถควบคุมได้อย่างไรไม่เพียงแต่ตรวจจับเครื่องบินในฟีดวิดีโอเท่านั้น แต่ยังกำหนดรหัสติดตามที่ไม่ซ้ำกันเพื่อให้แน่ใจว่าเครื่องบินแต่ละลำจะถูกนับเพียงครั้งเดียว ซึ่งเป็นการปฏิวัติความสามารถของเราในการตรวจสอบและจัดการท้องฟ้าเบื้องบน แหล่งข้อมูลของเราสำหรับโครงการนี้คือ A DS-B Exchange ซึ่งเป็นแหล่งเก็บข้อมูลการติดตามเครื่องบินอันมีค่า
การเริ่มต้นใช้งาน Yolo-V8
#Import libraries from ultralytics import YOLO import cv2 import argparse import numpy as np
ในการเริ่มต้นการติดตามออบเจ็กต์โดยใช้ YOLOv8 คุณสามารถสร้างสคริปต์ Python ง่ายๆ ที่ใช้อัลกอริธึมการติดตามบนวิดีโอและแสดงผลในหน้าต่าง OpenCV เริ่มต้น
#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 มีฟังก์ชันในตัวเพื่อเรียกใช้การติดตามโดยไม่ต้องใช้ไลบรารีภายนอก
model = YOLO('path/to/model') #model creation results = model.track(frame,persist=True)[0] #Use persist=True to keep track id
ในกรณีนี้ แต่ละผลลัพธ์จะถูกวาดในเฟรมดั้งเดิม
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
ตรวจสอบโค้ดติดตามวัตถุ yolov8 แบบเต็มใน "Github"
เผชิญกับความท้าทายด้าน AI ใช่ไหม ติดต่อฉันสำหรับโซลูชันที่ขับเคลื่อนด้วยผลลัพธ์ ความก้าวหน้าครั้งถัดไปของคุณอยู่ห่างออกไปเพียงข้อความเดียว
หากคุณสนใจที่จะสำรวจเนื้อหา Python เพิ่มเติม โปรดติดตามฉัน: