Vai al contenuto

Stima della velocità utilizzando Ultralytics YOLOv8 🚀

Che cos'è la stima della velocità?

La stima della velocità è il processo di calcolo della velocità di movimento di un oggetto all'interno di un determinato contesto, spesso utilizzato nelle applicazioni di computer vision. Utilizzando Ultralytics YOLOv8 è ora possibile calcolare la velocità di un oggetto utilizzando il tracciamento dell'oggetto insieme ai dati relativi alla distanza e al tempo, fondamentali per attività come il traffico e la sorveglianza. L'accuratezza della stima della velocità influenza direttamente l'efficienza e l'affidabilità di varie applicazioni, rendendola una componente fondamentale per il progresso dei sistemi intelligenti e dei processi decisionali in tempo reale.



Guarda: Stima della velocità con Ultralytics YOLOv8

Scopri il nostro blog

Per un approfondimento sulla stima della velocità, consulta il nostro blog post: Ultralytics YOLOv8 per la stima della velocità nei progetti di Computer Vision

Vantaggi della stima della velocità?

  • Controllo del traffico efficiente: Una stima accurata della velocità aiuta a gestire il flusso del traffico, a migliorare la sicurezza e a ridurre la congestione stradale.
  • Navigazione autonoma precisa: Nei sistemi autonomi come le auto a guida autonoma, una stima affidabile della velocità garantisce una navigazione sicura e precisa del veicolo.
  • Maggiore sicurezza della sorveglianza: La stima della velocità nell'analisi della sorveglianza aiuta a identificare comportamenti insoliti o potenziali minacce, migliorando l'efficacia delle misure di sicurezza.

Applicazioni nel mondo reale

Trasporto Trasporto
Stima della velocità su strada utilizzando Ultralytics YOLOv8 Stima della velocità su un ponte utilizzando Ultralytics YOLOv8
Stima della velocità su strada utilizzando Ultralytics YOLOv8 Stima della velocità su un ponte utilizzando Ultralytics YOLOv8

Esempio di stima della velocità con YOLOv8

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Video writer
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

line_pts = [(0, 360), (1280, 360)]

# Init speed-estimation obj
speed_obj = solutions.SpeedEstimator(
    reg_pts=line_pts,
    names=names,
    view_img=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    tracks = model.track(im0, persist=True, show=False)

    im0 = speed_obj.estimate_speed(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
La velocità è una stima

La velocità è una stima e potrebbe non essere completamente accurata. Inoltre, la stima può variare in base alla velocità di GPU .

Argomenti SpeedEstimator

Nome Tipo Predefinito Descrizione
names dict None Dizionario dei nomi delle classi.
reg_pts list [(20, 400), (1260, 400)] Elenco dei punti della regione per la stima della velocità.
view_img bool False Se visualizzare l'immagine con le annotazioni.
line_thickness int 2 Spessore delle linee per disegnare caselle e tracciati.
region_thickness int 5 Spessore delle linee della regione.
spdl_dist_thresh int 10 Soglia di distanza per il calcolo della velocità.

Argomenti model.track

Nome Tipo Predefinito Descrizione
source im0 None directory di origine per le immagini o i video
persist bool False persistenza dei brani tra i fotogrammi
tracker str botsort.yaml Metodo di tracciamento 'bytetrack' o 'botsort'
conf float 0.3 Soglia di fiducia
iou float 0.5 Soglia IOU
classes list None filtrare i risultati per classe, ad esempio classi=0 o classi=[0,2,3].
verbose bool True Visualizza i risultati del tracciamento dell'oggetto

DOMANDE FREQUENTI

Come faccio a stimare la velocità di un oggetto utilizzando Ultralytics YOLOv8 ?

La stima della velocità degli oggetti con Ultralytics YOLOv8 prevede la combinazione di tecniche di rilevamento e tracciamento degli oggetti. Per prima cosa, devi rilevare gli oggetti in ogni fotogramma utilizzando il modello YOLOv8 . Poi, segui questi oggetti tra i fotogrammi per calcolare il loro movimento nel tempo. Infine, utilizza la distanza percorsa dall'oggetto tra un fotogramma e l'altro e la frequenza dei fotogrammi per stimarne la velocità.

Esempio:

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize SpeedEstimator
speed_obj = solutions.SpeedEstimator(
    reg_pts=[(0, 360), (1280, 360)],
    names=names,
    view_img=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    tracks = model.track(im0, persist=True, show=False)
    im0 = speed_obj.estimate_speed(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Per maggiori dettagli, consulta il nostro blog ufficiale.

Quali sono i vantaggi dell'utilizzo di Ultralytics YOLOv8 per la stima della velocità nella gestione del traffico?

L'utilizzo di Ultralytics YOLOv8 per la stima della velocità offre notevoli vantaggi nella gestione del traffico:

  • Maggiore sicurezza: Stima con precisione la velocità dei veicoli per rilevare l'eccesso di velocità e migliorare la sicurezza stradale.
  • Monitoraggio in tempo reale: Sfrutta la capacità di rilevamento degli oggetti in tempo reale di YOLOv8 per monitorare efficacemente il flusso di traffico e la congestione.
  • Scalabilità: L'implementazione del modello su diverse configurazioni hardware, dai dispositivi edge ai server, garantisce soluzioni flessibili e scalabili per le implementazioni su larga scala.

Per ulteriori applicazioni, consulta i vantaggi della stima della velocità.

YOLOv8 può essere integrato con altri framework di AI come TensorFlow o PyTorch?

Sì, YOLOv8 può essere integrato con altri framework di intelligenza artificiale come TensorFlow e PyTorch. Ultralytics supporta l'esportazione dei modelli di YOLOv8 in vari formati come ONNX, TensorRT e CoreML, garantendo un'interoperabilità senza problemi con altri framework di ML.

Per esportare un modello YOLOv8 in formato ONNX :

yolo export --weights yolov8n.pt --include onnx

Per saperne di più sull'esportazione dei modelli, consulta la nostra guida all'esportazione.

Quanto è accurata la stima della velocità utilizzando Ultralytics YOLOv8 ?

L'accuratezza della stima della velocità utilizzando Ultralytics YOLOv8 dipende da diversi fattori, tra cui la qualità del tracciamento dell'oggetto, la risoluzione e la frequenza dei fotogrammi del video e le variabili ambientali. Sebbene lo stimatore di velocità fornisca stime affidabili, potrebbe non essere accurato al 100% a causa delle variazioni nella velocità di elaborazione dei fotogrammi e dell'occlusione degli oggetti.

Nota: considera sempre il margine di errore e convalida le stime con i dati di verità a terra, quando possibile.

Per ulteriori suggerimenti per migliorare la precisione, consulta la sezione Argomenti SpeedEstimator sezione.

Perché scegliere Ultralytics YOLOv8 rispetto ad altri modelli di rilevamento degli oggetti come TensorFlow Object Detection API?

Ultralytics YOLOv8 offre diversi vantaggi rispetto ad altri modelli di rilevamento degli oggetti, come l'API TensorFlow Object Detection:

  • Prestazioni in tempo reale: YOLOv8 è ottimizzato per il rilevamento in tempo reale, garantendo velocità e precisione elevate.
  • Facilità d'uso: Progettato con un'interfaccia facile da usare, YOLOv8 semplifica la formazione e l'implementazione dei modelli.
  • Versatilità: Supporta diverse attività, tra cui il rilevamento di oggetti, la segmentazione e la stima della posa.
  • Comunità e supporto: YOLOv8 è supportato da una comunità attiva e da un'ampia documentazione, che assicurano agli sviluppatori le risorse necessarie.

Per maggiori informazioni sui vantaggi di YOLOv8, visita la nostra pagina dettagliata dei modelli.



Creato 2024-01-05, Aggiornato 2024-07-05
Autori: glenn-jocher (7), IvorZhu331 (1), RizwanMunawar (2), Burhan-Q (1), AyushExel (1)

Commenti