YOLO Vision 2026:

Conteggio oggetti con Ultralytics YOLO26#

Che cos'è il conteggio degli oggetti?#

Apri Conteggio Oggetti in Colab

Il conteggio degli oggetti con Ultralytics YOLO26 implica l'identificazione e il conteggio accurati di specifici oggetti in video e flussi di telecamere. YOLO26 eccelle nelle applicazioni in tempo reale, fornendo un conteggio degli oggetti efficiente e preciso per vari scenari come l'analisi della folla e la sorveglianza, grazie ai suoi algoritmi all'avanguardia e alle capacità di deep learning.



Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀

Vantaggi del conteggio degli oggetti#

  • Ottimizzazione delle risorse: Il conteggio degli oggetti facilita una gestione efficiente delle risorse fornendo conteggi accurati, ottimizzando l'allocazione delle risorse in applicazioni come la gestione dell'inventario.
  • Sicurezza avanzata: Il conteggio degli oggetti migliora la sicurezza e la sorveglianza tracciando e conteggiando accuratamente le entità, aiutando nella rilevazione delle minacce in modo proattivo.
  • Processo decisionale informato: Il conteggio degli oggetti offre preziosi spunti per il processo decisionale, ottimizzando i processi nel commercio al dettaglio, nella gestione del traffico e in vari altri settori.

Applicazioni nel mondo reale#

LogisticaAcquacoltura
Conveyor Belt Packets Counting Using Ultralytics YOLO26Fish Counting in Sea using Ultralytics YOLO26
Conteggio pacchetti su nastro trasportatore con Ultralytics YOLO26Conteggio pesci in mare con Ultralytics YOLO26

Conta gli oggetti con YOLO26#

Definisci un conteggio region — due punti per una linea o tre o più per un poligono — e passalo alla soluzione ObjectCounter. Il contatore traccia ciascun oggetto tra i fotogrammi e calcola i conteggi IN/OUT quando gli oggetti tracciati attraversano la linea o passano attraverso la regione, restituendo un fotogramma annotato che puoi scrivere in un video di output.

Conteggio oggetti con Ultralytics YOLO
# Run a counting example
yolo solutions count show=True

# Pass a source video
yolo solutions count source="path/to/video.mp4"

# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

L'argomento region accetta due punti (per una linea) o un poligono con tre o più punti. Definisci le coordinate nell'ordine in cui devono essere collegate in modo che il contatore sappia esattamente dove si verificano le entrate e le uscite.

Argomenti di ObjectCounter#

Ecco una tabella con gli argomenti di ObjectCounter:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso verso un file del modello Ultralytics YOLO.
show_inboolTrueFlag per controllare se visualizzare i conteggi in ingresso sul flusso video.
show_outboolTrueFlag per controllare se visualizzare i conteggi in uscita sul flusso video.
regionlist o dictNonePunti che definiscono la regione di interesse, sia una lista di tuple (x, y) o un dizionario che associa i nomi delle regioni a liste di punti per più regioni (solo RegionCounter). Quando None, le soluzioni che richiedono una regione fanno ricorso a un valore predefinito.

La soluzione ObjectCounter consente l'uso di diversi argomenti track:

ArgomentoTipoPredefinitoDescrizione
trackerstr'tracktrack.yaml'Specifica l'algoritmo di tracciamento da utilizzare. Opzioni integrate: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.1Imposta la soglia di confidenza per i rilevamenti; valori più bassi consentono di tracciare più oggetti ma possono includere falsi positivi.
ioufloat0.7Imposta la soglia Intersection over Union (IoU) per filtrare i rilevamenti sovrapposti.
classeslistNoneFiltra i risultati per indice di classe. Ad esempio, classes=[0, 2, 3] traccia solo le classi specificate.
verboseboolTrueControlla la visualizzazione dei risultati di tracciamento, fornendo un output visivo degli oggetti tracciati.
devicestrNoneSpecifica il dispositivo per l'inferenza (ad esempio, cpu, cuda:0 o 0). Consente agli utenti di scegliere tra CPU, una specifica GPU o altri dispositivi di calcolo per l'esecuzione del modello.

Inoltre, sono supportati gli argomenti di visualizzazione elencati di seguito:

ArgomentoTipoPredefinitoDescrizione
showboolFalseSe True, mostra le immagini o i video annotati in una finestra. Utile per un riscontro visivo immediato durante lo sviluppo o i test.
line_widthint or NoneNoneSpecifica lo spessore della linea dei bounding box. Se None, lo spessore della linea viene regolato automaticamente in base alle dimensioni dell'immagine. Offre una personalizzazione visiva per una maggiore chiarezza.
show_confboolTrueMostra il punteggio di confidenza per ogni rilevamento accanto all'etichetta. Fornisce informazioni sulla certezza del modello per ogni rilevamento.
show_labelsboolTrueMostra le etichette per ogni rilevamento nell'output visivo. Offre una comprensione immediata degli oggetti rilevati.

FAQ#

  • Per contare gli oggetti in un video usando Ultralytics YOLO26, puoi seguire questi passaggi:

    1. Importa le librerie necessarie (cv2, ultralytics).
    2. Definisci la regione di conteggio (ad esempio, un poligono, una linea, ecc.).
    3. Configura l'acquisizione video e inizializza il contatore di oggetti.
    4. Elabora ogni frame per tracciare gli oggetti e contarli all'interno della regione definita.

    Ecco un semplice esempio per il conteggio in una regione:

    import cv2
    
    from ultralytics import solutions
    
    def count_objects_in_region(video_path, output_video_path, model_path):
        """Count objects in a specific region within a video."""
        cap = cv2.VideoCapture(video_path)
        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 = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    
        region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
        counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)
    
        while cap.isOpened():
            success, im0 = cap.read()
            if not success:
                print("Video frame is empty or processing is complete.")
                break
            results = counter(im0)
            video_writer.write(results.plot_im)
    
        cap.release()
        video_writer.release()
        cv2.destroyAllWindows()
    
    count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo26n.pt")

    Per configurazioni e opzioni più avanzate, dai un'occhiata alla soluzione RegionCounter per il conteggio di oggetti in più regioni contemporaneamente.

  • Utilizzare Ultralytics YOLO26 per il conteggio degli oggetti offre diversi vantaggi:

    1. Ottimizzazione delle risorse: Facilita una gestione efficiente delle risorse fornendo conteggi accurati, aiutando a ottimizzare l'allocazione delle risorse in settori come la gestione dell'inventario.
    2. Sicurezza avanzata: Migliora la sicurezza e la sorveglianza tracciando e conteggiando accuratamente le entità, aiutando nella rilevazione proattiva delle minacce e nei sistemi di sicurezza.
    3. Processo decisionale informato: Offre informazioni preziose per il processo decisionale, ottimizzando i processi in ambiti come il commercio al dettaglio, la gestione del traffico e altro ancora.
    4. Elaborazione in tempo reale: L'architettura di YOLO26 consente l'inferenza in tempo reale, rendendolo adatto a flussi video dal vivo e applicazioni sensibili al tempo.

    Per esempi di implementazione e applicazioni pratiche, esplora la soluzione TrackZone per il tracciamento di oggetti in zone specifiche.

  • Per contare classi specifiche di oggetti usando Ultralytics YOLO26, devi specificare le classi a cui sei interessato durante la fase di tracciamento. Di seguito è riportato un esempio in Python:

    import cv2
    
    from ultralytics import solutions
    
    def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
        """Count specific classes of objects in a video."""
        cap = cv2.VideoCapture(video_path)
        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 = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    
        line_points = [(20, 400), (1080, 400)]
        counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)
    
        while cap.isOpened():
            success, im0 = cap.read()
            if not success:
                print("Video frame is empty or processing is complete.")
                break
            results = counter(im0)
            video_writer.write(results.plot_im)
    
        cap.release()
        video_writer.release()
        cv2.destroyAllWindows()
    
    count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo26n.pt", [0, 2])

    In questo esempio, classes_to_count=[0, 2] significa che conta oggetti della classe 0 e 2 (ad esempio, persona e auto nel dataset COCO). Puoi trovare maggiori informazioni sugli indici di classe nella documentazione del dataset COCO.

  • Ultralytics YOLO26 offre diversi vantaggi rispetto ad altri modelli di rilevamento oggetti come Faster R-CNN, SSD e le versioni precedenti di YOLO:

    1. Velocità ed efficienza: YOLO26 offre capacità di elaborazione in tempo reale, rendendolo ideale per applicazioni che richiedono inferenza ad alta velocità, come la sorveglianza e la guida autonoma.
    2. Accuratezza: Fornisce un'accuratezza all'avanguardia per attività di rilevamento e tracciamento degli oggetti, riducendo il numero di falsi positivi e migliorando l'affidabilità complessiva del sistema.
    3. Facilità di integrazione: YOLO26 offre un'integrazione perfetta con varie piattaforme e dispositivi, inclusi dispositivi mobili e dispositivi edge, il che è fondamentale per le moderne applicazioni di intelligenza artificiale.
    4. Flessibilità: Supporta varie attività come il rilevamento di oggetti, la segmentazione e il tracciamento con modelli configurabili per soddisfare specifici requisiti del caso d'uso.

    Dai un'occhiata alla documentazione di YOLO26 di Ultralytics per un'analisi approfondita delle sue funzionalità e dei confronti delle prestazioni.

  • Sì, Ultralytics YOLO26 è perfettamente adatto per applicazioni avanzate come l'analisi della folla e la gestione del traffico grazie alle sue capacità di rilevamento in tempo reale, alla scalabilità e alla flessibilità di integrazione. Le sue funzionalità avanzate consentono il tracciamento, il conteggio e la classificazione accurata degli oggetti in ambienti dinamici. Esempi di casi d'uso includono:

    • Analisi della folla: Monitora e gestisci grandi assembramenti, garantendo la sicurezza e ottimizzando il flusso della folla con il conteggio basato su regioni.
    • Gestione del traffico: Traccia e conta i veicoli, analizza i modelli di traffico e gestisci la congestione in tempo reale con le capacità di stima della velocità.
    • Analisi retail: Analizza i modelli di movimento dei clienti e le interazioni con i prodotti per ottimizzare il layout dei negozi e migliorare l'esperienza del cliente.
    • Automazione industriale: Conta i prodotti sui nastri trasportatori e monitora le linee di produzione per il controllo qualità e i miglioramenti dell'efficienza.

    Per applicazioni più specializzate, esplora le Soluzioni Ultralytics per un set completo di strumenti progettati per le sfide di visione artificiale del mondo reale.

Commenti