Algoritmi di differenziazione di oggetti in immagini: il caso di YOLO (You Only Look Once)

Il rilevamento e la differenziazione di oggetti in immagini è un problema fondamentale della Computer Vision, utilizzato in ambiti che spaziano dalla sorveglianza alla guida autonoma, dall’intelligenza artificiale applicata alla robotica fino alla realtà aumentata.

Uno degli algoritmi più potenti e veloci per il rilevamento di oggetti in tempo reale è YOLO (You Only Look Once), che permette di individuare e classificare più oggetti in un’unica elaborazione dell’immagine. In questo articolo, esploreremo il funzionamento di YOLO, il suo impatto e le applicazioni più comuni.

Cos’è la differenziazione di oggetti in immagini?

La differenziazione di oggetti nelle immagini è il processo attraverso il quale un algoritmo di Computer Vision è in grado di identificare e distinguere più oggetti presenti in una scena. Questo processo implica tre fasi chiave:

  1. Localizzazione → Determinare la posizione dell’oggetto in un’immagine.
  2. Classificazione → Identificare la classe dell’oggetto (es. auto, persona, cane).
  3. Segmentazione (Opzionale) → Separare l’oggetto dallo sfondo pixel per pixel.

Le tecniche tradizionali includevano metodi come Sliding Window o Region Proposal Networks (RPN), ma risultavano troppo lenti per applicazioni in tempo reale.

Cosa è YOLO (You Only Look Once)?

YOLO è una famiglia di algoritmi di rilevamento di oggetti basati su reti neurali convoluzionali (CNN) che rivoluziona il settore per la sua velocità ed efficienza. A differenza di altri approcci, YOLO suddivide l’immagine in una griglia e assegna a ogni cella la responsabilità di prevedere:

  • Bounding Boxes (coordinate dell’oggetto).
  • Classi (es. persona, bicicletta, auto).
  • Score di Confidenza (probabilità che l’oggetto sia correttamente rilevato).

La caratteristica principale di YOLO è che analizza l’immagine una sola volta, a differenza di altri modelli che effettuano più passaggi. Questo lo rende uno dei metodi più veloci per il rilevamento di oggetti.

Come funziona YOLO?

L’architettura YOLO si basa su diversi passaggi chiave:

  1. Suddivisione in Griglie 🏗️
    • L’immagine viene suddivisa in una griglia SxS (es. 7×7).
    • Ogni cella è responsabile della previsione degli oggetti presenti in essa.
  2. Predizione delle Bounding Boxes 📦
    • Ogni cella predice N bounding boxes.
    • Ogni bounding box include (x, y, larghezza, altezza, score di confidenza).
  3. Assegnazione delle Classi 🎯
    • Ogni cella predice la probabilità che l’oggetto appartenga a una determinata classe.
  4. Filtraggio con Non-Maximum Suppression (NMS) 🚀
    • Vengono eliminate le previsioni duplicate per mantenere solo quelle con il punteggio più alto.
  5. Output Finale 📊
    • Il modello fornisce l’elenco delle bounding boxes finali con le classi assegnate.

Varianti di YOLO

Con il passare del tempo, YOLO è stato migliorato attraverso diverse versioni:

🔹 YOLOv1 (2016)

  • Prima versione del modello, veloce ma con problemi nella gestione degli oggetti piccoli.

🔹 YOLOv2 (YOLO9000)

  • Supporta la rilevazione di più classi e migliora l’accuratezza.

🔹 YOLOv3

  • Introduce il rilevamento multi-scala, permettendo di identificare oggetti di varie dimensioni.

🔹 YOLOv4

  • Ottimizza la velocità e l’accuratezza, migliorando la robustezza in condizioni reali.

🔹 YOLOv5 (Ultralytics)

  • Migliore efficienza su hardware comuni e supporto per implementazioni su dispositivi mobili.

🔹 YOLOv8 (Ultima Versione)

  • Supporta segmentazione e tracking in tempo reale.

Vantaggi di YOLO

Altissima Velocità → Può elaborare più di 60 FPS, rendendolo ideale per applicazioni in tempo reale.
Alta Precisione → Anche se leggermente inferiore a metodi come Faster R-CNN, è comunque ottimo per molte applicazioni.
Facile da Implementare → Grazie alle librerie Ultralytics YOLOv5/v8, è accessibile anche ai principianti.
Adatto per Dispositivi Edge → Può funzionare su dispositivi con risorse limitate, come Raspberry Pi o Jetson Nano.

Applicazioni di YOLO

📹 Videosorveglianza → Identificazione di persone sospette.
🚗 Guida Autonoma → Rilevamento di pedoni e veicoli in tempo reale.
🤖 Robotica → Riconoscimento di oggetti per la manipolazione robotica.
📱 Realtà Aumentata → Tracciamento di oggetti per esperienze immersive.
🎮 Gaming e Interfacce AI → Controllo basato sul riconoscimento visivo.

Esempio Pratico in Python con YOLOv8

Scarica la libreria

pip install ultralytics opencv-python

 


from ultralytics import YOLO
import cv2

# Caricamento del modello YOLOv8 pre-addestrato
model = YOLO("yolov8n.pt") # Modello "nano" per alte prestazioni

# Caricamento dell'immagine
image_path = "test.jpg"
image = cv2.imread(image_path)

# Esecuzione del rilevamento
results = model(image)

# Visualizzazione del risultato
results.show() # Mostra l'immagine con le bounding box

Conclusione

YOLO ha rivoluzionato il rilevamento di oggetti grazie alla sua velocità ed efficienza, rendendolo uno degli strumenti più utilizzati in Computer Vision. Con le versioni più recenti, è diventato sempre più preciso e adattabile a diversi scenari.

Share This Story, Choose Your Platform!

Contact AI-rport