YOLOv3 e YOLOv3u#
Panoramica#
Questo documento presenta una panoramica di tre modelli di rilevamento degli oggetti strettamente correlati: YOLOv3, YOLOv3-Ultralytics e YOLOv3u.
-
YOLOv3: è la terza versione dell'algoritmo di rilevamento degli oggetti You Only Look Once (YOLO). Sviluppato originariamente da Joseph Redmon, YOLOv3 ha migliorato i suoi predecessori introducendo funzionalità come le predizioni multiscala e tre diverse dimensioni di kernel di rilevamento.
-
YOLOv3-Ultralytics: è l'implementazione di YOLOv3 in PyTorch di Ultralytics, mantenuta nel repository ultralytics/yolov3. Mantiene l'architettura originale basata su anchor e aggiunge più modelli preaddestrati e una personalizzazione più semplice.
-
YOLOv3u: è una versione aggiornata di YOLOv3-Ultralytics che integra la head separata, senza anchor e senza objectness, utilizzata nei modelli YOLOv8. YOLOv3u mantiene la stessa architettura di backbone e neck di YOLOv3, ma adotta la detection head aggiornata di YOLOv8.

Funzionalità principali#
-
YOLOv3: ha introdotto l'uso di tre scale diverse per il rilevamento, sfruttando tre diverse dimensioni di kernel di rilevamento: 13x13, 26x26 e 52x52. Ciò ha migliorato notevolmente la precisione del rilevamento di oggetti di dimensioni diverse. Inoltre, YOLOv3 ha aggiunto funzionalità come le predizioni multilabel per ogni bounding box e una rete di estrazione delle feature migliore.
-
YOLOv3u: questo modello aggiornato integra la head separata di YOLOv8, senza anchor e senza objectness. Eliminando la necessità di anchor box predefinite e punteggi di objectness, questo design della detection head può migliorare la capacità del modello di rilevare oggetti di dimensioni e forme diverse. Ciò rende YOLOv3u più robusto e preciso nelle attività di rilevamento degli oggetti.
Attività e modalità supportate#
YOLOv3 è progettato specificamente per le attività di rilevamento degli oggetti. Ultralytics supporta tre varianti di YOLOv3: yolov3u, yolov3-tinyu e yolov3-sppu. u nel nome indica che queste varianti utilizzano la head senza anchor di YOLOv8, a differenza dell'architettura originale basata su anchor. Questi modelli sono noti per la loro efficacia in vari scenari reali e bilanciano precisione e velocità. Ogni variante offre funzionalità e ottimizzazioni specifiche, che la rendono adatta a una serie di applicazioni.
Tutti e tre i modelli supportano una serie completa di modalità, garantendo versatilità nelle varie fasi di distribuzione del modello e sviluppo. Queste modalità includono Inferenza, Validazione, Addestramento ed Esportazione, fornendo agli utenti un toolkit completo per un rilevamento degli oggetti efficace.
| Tipo di modello | Pesi preaddestrati | Attività supportate | Addestramento | Validazione | Inferenza | Esporta |
|---|---|---|---|---|---|---|
| YOLOv3(u) | yolov3u.pt | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-Tiny(u) | yolov3-tinyu.pt | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-SPP(u) | yolov3-sppu.pt | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
Questa tabella offre una panoramica immediata delle capacità di ogni variante di YOLOv3, evidenziandone la versatilità e l'idoneità per varie attività e modalità operative nei workflow di rilevamento degli oggetti.
Esempi d'uso#
Questo esempio mostra come eseguire in modo semplice l'addestramento e l'inferenza con YOLOv3. Per la documentazione completa su queste e altre modalità, consulta le pagine della documentazione Predizione, Addestramento, Validazione ed Esportazione.
I modelli *.pt preaddestrati con PyTorch e i file di configurazione *.yaml possono essere passati alla classe YOLO() per creare un'istanza del modello in Python:
from ultralytics import YOLO
# Carica un modello YOLOv3u preaddestrato su COCO
model = YOLO("yolov3u.pt")
# Visualizza le informazioni sul modello (facoltativo)
model.info()
# Addestra il modello sul dataset di esempio COCO8 per 100 epoche
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Esegui l'inferenza con il modello YOLOv3u sull'immagine 'bus.jpg'
results = model("path/to/bus.jpg")Citazioni e ringraziamenti#
Se usi YOLOv3 nella tua ricerca, cita gli articoli originali su YOLO e il repository YOLOv3 di Ultralytics:
@article{redmon2018yolov3,
title={YOLOv3: An Incremental Improvement},
author={Redmon, Joseph and Farhadi, Ali},
journal={arXiv preprint arXiv:1804.02767},
year={2018}
}Grazie a Joseph Redmon e Ali Farhadi per aver sviluppato YOLOv3 originale.
Domande frequenti#
YOLOv3 è la terza iterazione dell'algoritmo di rilevamento degli oggetti YOLO (You Only Look Once), sviluppato da Joseph Redmon e noto per il bilanciamento tra precisione e velocità; usa tre scale diverse (13x13, 26x26 e 52x52) per i rilevamenti. YOLOv3-Ultralytics è un adattamento di YOLOv3 realizzato da Ultralytics che aggiunge il supporto per più modelli preaddestrati e semplifica la personalizzazione dei modelli. YOLOv3u è una variante aggiornata di YOLOv3-Ultralytics che integra la head separata di YOLOv8, senza anchor e senza objectness, migliorando la robustezza e la precisione del rilevamento per oggetti di varie dimensioni. Per maggiori dettagli sulle varianti, consulta la serie YOLOv3.
Addestrare un modello YOLOv3 con Ultralytics è semplice. Puoi addestrare il modello usando Python oppure la CLI:
Esempiofrom ultralytics import YOLO # Carica un modello YOLOv3u preaddestrato su COCO model = YOLO("yolov3u.pt") # Addestra il modello sul dataset di esempio COCO8 per 100 epoche results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Per ulteriori opzioni e indicazioni sull'addestramento, consulta la nostra documentazione sulla modalità Train.
YOLOv3u migliora YOLOv3 e YOLOv3-Ultralytics integrando la head separata, senza anchor e senza objectness, utilizzata nei modelli YOLOv8. Questo aggiornamento elimina la necessità di anchor box predefinite e punteggi di objectness, migliorando la capacità di rilevare con maggiore precisione oggetti di dimensioni e forme diverse. Per questo, YOLOv3u è una scelta migliore per attività di rilevamento degli oggetti complesse e variegate. Per maggiori informazioni, consulta la sezione Funzionalità principali.
Puoi eseguire l'inferenza con i modelli YOLOv3 usando script Python oppure comandi CLI:
Esempiofrom ultralytics import YOLO # Carica un modello YOLOv3u preaddestrato su COCO model = YOLO("yolov3u.pt") # Esegui l'inferenza con il modello YOLOv3u sull'immagine 'bus.jpg' results = model("path/to/bus.jpg")Per maggiori dettagli sull'esecuzione dei modelli YOLO, consulta la documentazione sulla modalità Inference.
YOLOv3, YOLOv3-Tiny e YOLOv3-SPP supportano principalmente le attività di rilevamento degli oggetti. Questi modelli possono essere usati in varie fasi della distribuzione e dello sviluppo dei modelli, come Inferenza, Validazione, Addestramento ed Esportazione. Per un elenco completo delle attività supportate e maggiori dettagli, consulta la nostra documentazione sulle attività di rilevamento degli oggetti.
Se usi YOLOv3 nella tua ricerca, cita gli articoli originali su YOLO e il repository YOLOv3 di Ultralytics. Esempio di citazione BibTeX:
Citazione@article{redmon2018yolov3, title={YOLOv3: An Incremental Improvement}, author={Redmon, Joseph and Farhadi, Ali}, journal={arXiv preprint arXiv:1804.02767}, year={2018} }Per maggiori dettagli sulle citazioni, consulta la sezione Citazioni e ringraziamenti.