YOLO (You Only Look Once): L'Object Detection in Tempo Reale

SSD (Single Shot MultiBox Detector) - Object Detection

YOLO (You Only Look Once): L'Object Detection in Tempo Reale 🚀

YOLO (You Only Look Once) è una delle architetture più veloci per l'object detection. Introdotto da Joseph Redmon nel 2015, ha rivoluzionato il campo grazie alla sua capacità di rilevare oggetti in tempo reale.

📌 Differenze con i modelli precedenti:

  • I modelli two-stage come Faster R-CNN analizzano le immagini in più fasi (region proposal → classificazione).
  • YOLO, invece, analizza l'intera immagine in un solo passaggio, rendendolo molto più veloce.

1. Perché YOLO è così popolare?

  • ✅ Velocità estrema 🚀 → Adatto per applicazioni in tempo reale come videosorveglianza e guida autonoma.
  • ✅ Precisione migliorata 🎯 → Con le nuove versioni, è competitivo con modelli two-stage.
  • ✅ Architettura semplice 🛠 → Più facile da implementare rispetto a Faster R-CNN.
  • ❌ Difficoltà con oggetti piccoli → Può soffrire nella rilevazione di oggetti molto piccoli.

2. Come funziona YOLO?

Suddivisione dell’immagine

  • L'immagine di input viene divisa in una griglia di S × S celle.
  • Se il centro di un oggetto cade all'interno di una cella, quella cella è responsabile della sua rilevazione.

Predizione delle bounding boxes

  • Ogni cella prevede B bounding boxes e un punteggio di confidenza per ciascuna di esse.
  • Ogni bounding box è definita da 5 valori:
    • x, y → coordinate del centro della box, relative ai confini della cella della griglia.
    • w, h → larghezza e altezza della box.
    • Confidence score → indica quanto la box è accurata e se contiene un oggetto.

Predizione delle classi

  • Ogni cella prevede C probabilità condizionate per le classi degli oggetti rilevati.
  • La probabilità di una classe è espressa come Pr(Classe | Oggetto presente).

Fase di Addestramento (Training)

  • YOLO genera più bounding boxes per cella della griglia.
  • Durante l’addestramento, solo un predittore per cella viene assegnato alla rilevazione di un oggetto.
  • La scelta del predittore responsabile si basa sulla bounding box con il più alto valore di IoU (Intersection over Union) rispetto alla ground truth.

Architettura della Rete

  • La rete YOLO è composta da:
    • 24 layer convoluzionali per l’estrazione delle caratteristiche.
    • 2 layer completamente connessi (fully connected) per la predizione finale.
  • I layer convoluzionali vengono pre-addestrati sul dataset ImageNet, con immagini a risoluzione dimezzata (224 × 224).


Post-processing: si usa Non-Maximum Suppression (NMS) per rimuovere i box duplicati.


3. Evoluzione delle Versioni di YOLO

Versione Anno Miglioramenti
YOLOv1 2015 Primo modello YOLO, veloce ma meno accurato.
YOLOv2 (YOLO9000) 2016 Supporta fino a 9000 classi, migliore accuratezza.
YOLOv3 2018 Migliora il riconoscimento multi-scala con feature map diverse.
YOLOv4 2020 Ottimizzato per GPU, maggiore velocità e accuratezza.
YOLOv5 2021 Implementato in PyTorch, molto popolare per facilità d'uso.
YOLOv6, YOLOv7, YOLOv8 2022-2023 Ottimizzazioni per mobile e maggiore efficienza.

🔹 YOLOv8 (2023) è attualmente lo stato dell’arte, con supporto per object detection, segmentazione e keypoint detection.


4. Implementazione di YOLO in Python con PyTorch

Ecco un esempio di utilizzo di YOLOv8 con la libreria Ultralytics:

from ultralytics import YOLO

# Carica il modello YOLOv8 pre-addestrato
model = YOLO("yolov8n.pt")

# Carica un'immagine e fai una predizione
results = model("immagine.jpg")

# Mostra il risultato
results.show()

🔹 Nota: Puoi provare YOLOv8 con il comando:

pip install ultralytics

5. YOLO vs altri modelli

Modello Velocità 🚀 Accuratezza 🎯 Applicazioni
YOLO 🔥🔥🔥 (Molto veloce) 🎯🎯 (Buona) Videosorveglianza, robotica, guida autonoma
Faster R-CNN 🔥 (Lento) 🎯🎯🎯🎯 (Altissima) Applicazioni scientifiche, medicali
SSD 🔥🔥 (Veloce) 🎯🎯🎯 (Media) Mobile e IoT
RetinaNet 🔥 (Meno veloce) 🎯🎯🎯🎯 (Molto accurato) Analisi dettagliate di immagini

6. Conclusione

  • YOLO ha rivoluzionato l'object detection, portando le prestazioni in tempo reale.
  • Le nuove versioni migliorano velocità e accuratezza, rendendolo adatto a molte applicazioni.
  • YOLOv8 è oggi uno degli strumenti più potenti per l’object detection.

📌 Vuoi provare YOLO su un dataset personalizzato? Scrivimi per una guida! 🚀

Commenti

Post popolari in questo blog

SSD (Single Shot MultiBox Detector)

Instance Segmentation: Cos'è e Come Funziona

U-Net: Architettura per la Segmentazione di Immagini