Ultralytics YOLO27:

Conteggio degli oggetti con Ultralytics YOLO26#

Che cos'è il conteggio degli oggetti?#

Open Object Counting In Colab

Il conteggio degli oggetti con Ultralytics YOLO26 consiste nell'identificare e contare con precisione oggetti specifici nei video e nei flussi delle videocamere. YOLO26 eccelle nelle applicazioni in tempo reale, offrendo un conteggio degli oggetti efficiente e preciso in vari scenari, come l'analisi della folla e la videosorveglianza, 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 e ottimizzando l'allocazione delle risorse in applicazioni come la gestione dell'inventario.
  • Maggiore sicurezza: Il conteggio degli oggetti aumenta la sicurezza e l'efficacia della videosorveglianza monitorando e contando con precisione le entità, contribuendo al rilevamento proattivo delle minacce.
  • Decisioni più consapevoli: Il conteggio degli oggetti offre informazioni preziose per prendere decisioni e ottimizzare i processi nella vendita al dettaglio, nella gestione del traffico e in molti altri ambiti.

Applicazioni nel mondo reale#

LogisticaAcquacoltura
Conteggio dei pacchi sul nastro trasportatore con Ultralytics YOLO26Conteggio dei pesci in mare con Ultralytics YOLO26
Conteggio dei pacchi sul nastro trasportatore con Ultralytics YOLO26Conteggio dei pesci in mare con Ultralytics YOLO26

Conta gli oggetti con YOLO26#

Definisci una region per il conteggio — due punti per una linea o almeno tre per un poligono — e passala alla soluzione ObjectCounter. Il contatore monitora ogni 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 degli 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) oppure un poligono con almeno tre punti. Definisci le coordinate nell'ordine in cui devono essere collegate, così il contatore sa esattamente dove avvengono gli ingressi e le uscite.

Argomenti ObjectCounter#

Ecco una tabella con gli argomenti ObjectCounter:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso al file del modello Ultralytics YOLO.
show_inboolTrueFlag che controlla se visualizzare i conteggi degli ingressi nel flusso video.
show_outboolTrueFlag che controlla se visualizzare i conteggi delle uscite nel flusso video.
regionlist o dictNonePunti che definiscono la regione di interesse, costituiti da un elenco di tuple (x, y) o da un dizionario che associa i nomi delle regioni agli elenchi di punti per più regioni (solo RegionCounter). Quando None, le soluzioni che richiedono una regione utilizzano una regione predefinita.
line_widthint2Spessore delle linee per i riquadri, i punti chiave e i conteggi disegnati dalla soluzione.
verboseboolTrueAbilita il registro per fotogramma della soluzione, con forma dell'input, conteggi delle classi e velocità di elaborazione. La chiamata di tracciamento è sempre silenziosa.

La soluzione ObjectCounter consente di utilizzare diversi argomenti track:

ArgomentoTipoPredefinitoDescrizione
trackerstr'botsort.yaml'Specifica l'algoritmo di tracciamento da utilizzare. Opzioni integrate: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Imposta la soglia di confidenza per le rilevazioni; valori più bassi consentono di tracciare più oggetti, ma possono includere falsi positivi.
ioufloat0.7Imposta la soglia di Intersezione sull'unione (IoU) per filtrare le rilevazioni sovrapposte.
classeslistNoneFiltra i risultati in base all'indice della classe. Ad esempio, classes=[0, 2, 3] traccia solo le classi specificate.
devicestrNoneSpecifica il dispositivo per l'inferenza (ad es. cpu, cuda:0 o 0). Consente di scegliere tra CPU, una GPU specifica o altri dispositivi di calcolo per l'esecuzione del modello.
imgszint or tuple640Dimensione dell'immagine di inferenza di destinazione: un numero intero per un'immagine quadrata o una coppia (height, width). Le forme vengono regolate in base al passo del modello.
max_detint300Numero massimo di rilevamenti conservati per fotogramma prima del tracciamento, limitando gli oggetti elaborati da una soluzione in scene dense.
quantizeint or strNonePrecisione dell'inferenza: 16 (FP16) o 32/non impostato (FP32) per i modelli PyTorch e TorchScript; altri formati vengono calcolati alla precisione selezionata dal loro artefatto e runtime. Sostituisce il flag deprecato half.

Sono inoltre supportati gli argomenti di visualizzazione elencati di seguito:

ArgomentoTipoPredefinitoDescrizione
showboolFalseSe True, visualizza le immagini o i video annotati in una finestra. È utile per ottenere un feedback visivo immediato durante lo sviluppo o i test.
show_confboolTrueVisualizza il punteggio di confidenza per ogni rilevazione accanto all'etichetta. Fornisce informazioni sul grado di certezza del modello per ogni rilevazione.
show_labelsboolTrueVisualizza le etichette per ogni rilevazione nell'output visivo. Consente di comprendere immediatamente gli 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 e così via).
    3. Configura l'acquisizione video e inizializza il contatore degli oggetti.
    4. Elabora ogni fotogramma per tracciare gli oggetti e contarli all'interno della regione definita.

    Ecco un semplice esempio di 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, consulta la soluzione RegionCounter per contare simultaneamente gli oggetti in più regioni.

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

    1. Ottimizzazione delle risorse: Facilita una gestione efficiente delle risorse fornendo conteggi accurati e contribuendo a ottimizzare l'allocazione delle risorse in settori come la gestione dell'inventario.
    2. Maggiore sicurezza: Aumenta la sicurezza e l'efficacia della videosorveglianza monitorando e contando con precisione le entità, contribuendo al rilevamento proattivo delle minacce e ai sistemi di sicurezza.
    3. Decisioni più consapevoli: Offre informazioni preziose per prendere decisioni e ottimizzare i processi in ambiti come la vendita al dettaglio, la gestione del traffico e altri ancora.
    4. Elaborazione in tempo reale: L'architettura di YOLO26 consente l'inferenza in tempo reale, rendendolo adatto ai flussi video in diretta e alle applicazioni sensibili al fattore tempo.

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

  • Per contare classi specifiche di oggetti usando Ultralytics YOLO26, devi specificare le classi di tuo interesse 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] indica che vengono contati gli oggetti della classe 0 e 2 (ad esempio, persona e automobile nel dataset COCO). Puoi trovare ulteriori informazioni sugli indici delle classi nella documentazione del dataset COCO.

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

    1. Velocità ed efficienza: YOLO26 offre funzionalità di elaborazione in tempo reale, rendendolo ideale per le applicazioni che richiedono un'inferenza ad alta velocità, come la videosorveglianza e la guida autonoma.
    2. Precisione: Offre una precisione di rilevamento e tracciamento all'avanguardia, riducendo i falsi positivi e migliorando l'affidabilità complessiva del sistema.
    3. Facilità di integrazione: YOLO26 offre un'integrazione fluida con varie piattaforme e dispositivi, inclusi i dispositivi mobili e i dispositivi edge, un aspetto fondamentale per le moderne applicazioni di intelligenza artificiale.
    4. Flessibilità: Supporta attività di rilevamento e segmentazione, con la modalità di tracciamento in aggiunta, oltre a modelli configurabili per soddisfare requisiti specifici dei casi d'uso.

    Consulta la documentazione di YOLO26 di Ultralytics per un'analisi più approfondita delle sue funzionalità e dei confronti delle prestazioni.

  • Sì, Ultralytics YOLO26 è particolarmente adatto ad 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 degli oggetti con elevata precisione in ambienti dinamici. Ecco alcuni esempi di utilizzo:

    • Analisi della folla: Monitora e gestisci grandi assembramenti, garantendo la sicurezza e ottimizzando il flusso della folla con il conteggio basato sulla regione.
    • Gestione del traffico: Traccia e conta i veicoli, analizza i flussi di traffico e gestisci la congestione in tempo reale grazie alle funzionalità di stima della velocità.
    • Analisi del settore retail: Analizza i movimenti dei clienti e le interazioni con i prodotti per ottimizzare la disposizione dei negozi e migliorare l'esperienza dei clienti.
    • Automazione industriale: Conta i prodotti sui nastri trasportatori e monitora le linee di produzione per migliorare il controllo qualità e l'efficienza.

    Per applicazioni più specializzate, esplora le soluzioni Ultralytics per una serie completa di strumenti progettati per affrontare le sfide della computer vision nel mondo reale.

Commenti