YOLOv3 e YOLOv3u#
Panoramica#
Questo documento presenta una panoramica di tre modelli di rilevamento degli oggetti strettamente correlati, ovvero YOLOv3, YOLOv3-Ultralytics e YOLOv3u.
-
YOLOv3: Questa è 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 dei kernel di rilevamento.
-
YOLOv3-Ultralytics: Questa è l'implementazione PyTorch di Ultralytics per YOLOv3, mantenuta nel repository ultralytics/yolov3. Mantiene l'architettura originale basata su ancore, aggiungendo al contempo modelli preaddestrati e una maggiore facilità di personalizzazione.
-
YOLOv3u: Questa è una versione aggiornata di YOLOv3-Ultralytics che integra la testa split senza ancore e senza objectness utilizzata nei modelli YOLOv8. YOLOv3u mantiene la stessa architettura di backbone e neck di YOLOv3, ma con la testa di rilevamento aggiornata di YOLOv8.

Funzionalità principali#
-
YOLOv3: Ha introdotto l'uso di tre diverse scale per il rilevamento, sfruttando tre diverse dimensioni dei kernel di rilevamento: 13x13, 26x26 e 52x52. Questo ha migliorato significativamente la precisione del rilevamento per oggetti di dimensioni diverse. Inoltre, YOLOv3 ha aggiunto funzionalità come le predizioni multi-etichetta per ogni bounding box e una rete di estrazione delle caratteristiche migliorata.
-
YOLOv3u: Questo modello aggiornato integra la testa split senza ancore e senza objectness di YOLOv8. Eliminando la necessità di anchor box predefinite e punteggi di objectness, il design di questa testa di rilevamento può migliorare la capacità del modello di rilevare oggetti di dimensioni e forme diverse. Questo rende YOLOv3u più robusto e preciso per le 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. Il valore u nel nome indica che queste utilizzano la testa senza ancore di YOLOv8, a differenza della loro architettura originale basata sulle ancore. Questi modelli sono rinomati per la loro efficacia in vari scenari del mondo reale, bilanciando precisione e velocità. Ogni variante offre funzionalità e ottimizzazioni uniche, rendendola adatta a una vasta gamma di applicazioni.
Tutti e tre i modelli supportano un insieme completo di modalità, garantendo versatilità nelle varie fasi della distribuzione del modello e dello sviluppo. Queste modalità includono Inferenza, Validazione, Addestramento ed Esportazione, offrendo agli utenti un toolkit completo per un rilevamento efficace degli oggetti.
| Tipo di modello | Pesi preaddestrati | Attività supportate | Addestramento | Convalida | Inferenza | Esportazione |
|---|---|---|---|---|---|---|
| YOLOv3(u) | yolov3u.pt | Rilevamento degli oggetti | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-Tiny(u) | yolov3-tinyu.pt | Rilevamento degli oggetti | ✅ | ✅ | ✅ | ✅ |
| YOLOv3-SPP(u) | yolov3-sppu.pt | Rilevamento degli oggetti | ✅ | ✅ | ✅ | ✅ |
Questa tabella offre una panoramica immediata delle funzionalità di ciascuna variante di YOLOv3, evidenziandone la versatilità e l'idoneità per varie attività e modalità operative nei flussi di lavoro di rilevamento degli oggetti.
Esempi di utilizzo#
Questo esempio fornisce semplici esempi di addestramento e inferenza con YOLOv3. Per la documentazione completa su queste e altre modalità, consulta le pagine della documentazione Predict, Train, Val ed Export.
I modelli *.pt preaddestrati con PyTorch, così come i file di configurazione *.yaml, possono essere passati alla classe YOLO() per creare un'istanza del modello in Python:
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv3u model
model = YOLO("yolov3u.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv3u model on the 'bus.jpg' image
results = model("path/to/bus.jpg")Citazioni e ringraziamenti#
Se utilizzi YOLOv3 nella tua ricerca, cita i documenti 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 l'YOLOv3 originale.
FAQ#
YOLOv3 è la terza iterazione dell'algoritmo di rilevamento degli oggetti YOLO (You Only Look Once), sviluppato da Joseph Redmon e noto per il suo equilibrio tra precisione e velocità, utilizzando tre diverse scale (13x13, 26x26 e 52x52) per i rilevamenti. YOLOv3-Ultralytics è l'adattamento di YOLOv3 da parte di Ultralytics, che aggiunge il supporto per un numero maggiore di modelli preaddestrati e facilita la personalizzazione dei modelli. YOLOv3u è una variante aggiornata di YOLOv3-Ultralytics che integra la testa split senza ancore e senza objectness di YOLOv8, migliorando la robustezza e la precisione del rilevamento per oggetti di varie dimensioni. Per ulteriori dettagli sulle varianti, consulta la serie YOLOv3.
L'addestramento di un modello YOLOv3 con Ultralytics è semplice. Puoi addestrare il modello utilizzando Python o CLI:
Esempiofrom ultralytics import YOLO # Load a COCO-pretrained YOLOv3u model model = YOLO("yolov3u.pt") # Train the model on the COCO8 example dataset for 100 epochs results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Per opzioni e linee guida di addestramento più complete, visita la nostra documentazione sulla modalità Train.
YOLOv3u migliora YOLOv3 e YOLOv3-Ultralytics integrando la testa split senza ancore 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. Questo rende YOLOv3u una scelta migliore per attività di rilevamento degli oggetti complesse e diversificate. Per ulteriori informazioni, consulta la sezione Funzionalità principali.
Puoi eseguire l'inferenza utilizzando i modelli YOLOv3 tramite script Python o comandi CLI:
Esempiofrom ultralytics import YOLO # Load a COCO-pretrained YOLOv3u model model = YOLO("yolov3u.pt") # Run inference with the YOLOv3u model on the 'bus.jpg' image results = model("path/to/bus.jpg")Per ulteriori 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 utilizzati in varie fasi della distribuzione e dello sviluppo dei modelli, come Inferenza, Validazione, Addestramento ed Esportazione. Per un elenco completo delle attività supportate e informazioni più approfondite, visita la nostra documentazione sulle attività di rilevamento degli oggetti.
Se utilizzi YOLOv3 nella tua ricerca, cita i documenti 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 ulteriori dettagli sulle citazioni, consulta la sezione Citazioni e ringraziamenti.