YOLOv4: rilevamento di oggetti ad alta velocità e precisione#
Benvenuto nella pagina della documentazione Ultralytics dedicata a YOLOv4, un rilevatore di oggetti in tempo reale all'avanguardia lanciato nel 2020 da Alexey Bochkovskiy su https://github.com/AlexeyAB/darknet. YOLOv4 è progettato per offrire il compromesso ottimale tra velocità e precisione, risultando un'ottima scelta per molte applicazioni.
Diagramma dell'architettura di YOLOv4. Mostra l'intricata struttura di rete di YOLOv4, inclusi i componenti backbone, neck e head, nonché i relativi livelli interconnessi per un rilevamento ottimale degli oggetti in tempo reale.
Introduzione#
YOLOv4 sta per You Only Look Once versione 4. È un modello di rilevamento di oggetti in tempo reale sviluppato per superare i limiti delle versioni precedenti di YOLO, come YOLOv3, e di altri modelli di rilevamento di oggetti. A differenza di altri rilevatori di oggetti basati su rete neurale convoluzionale (CNN), YOLOv4 non è applicabile solo ai sistemi di raccomandazione, ma anche alla gestione autonoma dei processi e alla riduzione dell'intervento umano. Il suo funzionamento su unità di elaborazione grafica convenzionali (GPUs) ne consente l'uso su larga scala a un costo accessibile; inoltre, è progettato per operare in tempo reale su una GPU convenzionale, richiedendone soltanto una per l'addestramento.
Architettura#
YOLOv4 utilizza diverse funzionalità innovative che lavorano insieme per ottimizzarne le prestazioni. Tra queste figurano Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP), Cross mini-Batch Normalization (CmBN), Self-adversarial-training (SAT), l'attivazione Mish, la data augmentation Mosaic, la regolarizzazione DropBlock e la loss CIoU. Queste funzionalità vengono combinate per ottenere risultati all'avanguardia.
Un rilevatore di oggetti tipico è composto da diverse parti, tra cui input, backbone, neck e head. Il backbone di YOLOv4 è preaddestrato su ImageNet e viene utilizzato per prevedere le classi e i riquadri di delimitazione degli oggetti. Il backbone può provenire da diversi modelli, tra cui VGG, ResNet, ResNeXt o DenseNet. La parte neck del rilevatore serve a raccogliere le mappe delle caratteristiche da fasi diverse e di solito include diversi percorsi bottom-up e top-down. La parte head viene utilizzata per effettuare i rilevamenti e le classificazioni finali degli oggetti.
Bag of Freebies#
YOLOv4 utilizza anche metodi noti come "bag of freebies", ovvero tecniche che migliorano la precisione del modello durante l'addestramento senza aumentare il costo dell'inferenza. La data augmentation è una tecnica comune di bag of freebies utilizzata nel rilevamento di oggetti, che aumenta la variabilità delle immagini di input per migliorare la robustezza del modello. Alcuni esempi di data augmentation includono distorsioni fotometriche (regolazione di luminosità, contrasto, tonalità, saturazione e rumore di un'immagine) e distorsioni geometriche (ridimensionamento, ritaglio, riflessione e rotazione casuali). Queste tecniche aiutano il modello a generalizzare meglio a diversi tipi di immagini.
Funzionalità e prestazioni#
YOLOv4 è progettato per ottenere velocità e precisione ottimali nel rilevamento di oggetti. L'architettura di YOLOv4 include CSPDarknet53 come backbone, PANet come neck e YOLOv3 come head di rilevamento. Questo design consente a YOLOv4 di eseguire il rilevamento di oggetti a una velocità impressionante, rendendolo adatto alle applicazioni in tempo reale. YOLOv4 eccelle anche in termini di precisione, ottenendo risultati all'avanguardia nei benchmark di rilevamento di oggetti come COCO.
Rispetto ad altri modelli della famiglia YOLO, come YOLOv5 e YOLOv7, YOLOv4 mantiene una posizione di rilievo nell'equilibrio tra velocità e precisione. Sebbene i modelli più recenti possano offrire alcuni vantaggi, le innovazioni architetturali di YOLOv4 continuano a renderlo rilevante per molte applicazioni che richiedono prestazioni in tempo reale.
Esempi di utilizzo#
YOLOv4 è un modello basato su Darknet e non è supportato nativamente dal pacchetto Python di Ultralytics: non sono disponibili pesi preaddestrati yolov4.pt su ultralytics/assets e non esistono file YAML ultralytics/cfg/models/v4/. Questa pagina viene mantenuta come riferimento architetturale. Chi desidera eseguire YOLOv4 dovrebbe consultare direttamente il repository GitHub di YOLOv4 per le istruzioni di installazione e utilizzo.
Ecco una breve panoramica dei passaggi tipici che potresti seguire per utilizzare YOLOv4:
-
Visita il repository GitHub di YOLOv4: https://github.com/AlexeyAB/darknet.
-
Segui le istruzioni fornite nel file README per l'installazione. In genere, ciò comporta la clonazione del repository, l'installazione delle dipendenze necessarie e la configurazione delle variabili d'ambiente richieste.
-
Una volta completata l'installazione, puoi addestrare e utilizzare il modello seguendo le istruzioni d'uso fornite nel repository. Di solito, ciò comporta la preparazione del dataset, la configurazione dei parametri del modello, l'addestramento del modello e infine l'utilizzo del modello addestrato per eseguire il rilevamento di oggetti.
Tieni presente che i passaggi specifici possono variare a seconda del tuo caso d'uso e dello stato attuale del repository YOLOv4. Pertanto, ti consigliamo vivamente di consultare direttamente le istruzioni fornite nel repository GitHub di YOLOv4.
Per l'addestramento e l'inferenza all'interno del framework Ultralytics, consulta YOLO11 o YOLO26.
Conclusioni#
YOLOv4 è un modello di rilevamento di oggetti potente ed efficiente, che raggiunge un equilibrio tra velocità e precisione. L'uso di funzionalità uniche e di tecniche bag of freebies durante l'addestramento gli consente di ottenere prestazioni eccellenti nelle attività di rilevamento di oggetti in tempo reale. YOLOv4 può essere addestrato e utilizzato da chiunque disponga di una GPU convenzionale, risultando accessibile e pratico per un'ampia gamma di applicazioni, tra cui sistemi di videosorveglianza, veicoli autonomi e automazione industriale.
Per chi desidera implementare il rilevamento di oggetti nei propri progetti, YOLOv4 rimane una valida alternativa, soprattutto quando le prestazioni in tempo reale sono una priorità. Sebbene Ultralytics si concentri attualmente sul supporto di versioni YOLO più recenti, come YOLO11 e YOLO26, le innovazioni architetturali introdotte in YOLOv4 hanno influenzato lo sviluppo di questi modelli successivi.
Citazioni e ringraziamenti#
Desideriamo ringraziare gli autori di YOLOv4 per il loro importante contributo al campo del rilevamento di oggetti in tempo reale:
@misc{bochkovskiy2020yolov4,
title={YOLOv4: Optimal Speed and Accuracy of Object Detection},
author={Alexey Bochkovskiy and Chien-Yao Wang and Hong-Yuan Mark Liao},
year={2020},
eprint={2004.10934},
archivePrefix={arXiv},
primaryClass={cs.CV}
}L'articolo originale su YOLOv4 è disponibile su arXiv. Gli autori hanno reso pubblico il loro lavoro e il codice sorgente è accessibile su GitHub. Apprezziamo i loro sforzi per far progredire il settore e rendere il loro lavoro accessibile alla comunità più ampia.
FAQ#
YOLOv4, che sta per "You Only Look Once versione 4", è un modello di rilevamento di oggetti in tempo reale all'avanguardia, sviluppato da Alexey Bochkovskiy nel 2020. Raggiunge un equilibrio ottimale tra velocità e precisione, risultando particolarmente adatto alle applicazioni in tempo reale. L'architettura di YOLOv4 integra diverse funzionalità innovative, come Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP) e Self-adversarial-training (SAT), oltre ad altre, per ottenere risultati all'avanguardia. Se cerchi un modello ad alte prestazioni che operi in modo efficiente su GPU convenzionali, YOLOv4 è un'ottima scelta.
L'architettura di YOLOv4 include diversi componenti chiave: backbone, neck e head. Il backbone, che può essere costituito da modelli come VGG, ResNet o CSPDarknet53, è preaddestrato per prevedere classi e riquadri di delimitazione. Il neck, che utilizza PANet, collega le mappe delle caratteristiche provenienti da fasi diverse per un'estrazione completa dei dati. Infine, la head, che utilizza configurazioni di YOLOv3, esegue i rilevamenti finali degli oggetti. YOLOv4 impiega inoltre tecniche "bag of freebies", come la data augmentation Mosaic e la regolarizzazione DropBlock, ottimizzando ulteriormente velocità e precisione.
"Bag of freebies" indica metodi che migliorano la precisione di YOLOv4 durante l'addestramento senza aumentare il costo dell'inferenza. Queste tecniche includono varie forme di data augmentation, come distorsioni fotometriche (regolazione di luminosità, contrasto ecc.) e distorsioni geometriche (ridimensionamento, ritaglio, riflessione e rotazione). Aumentando la variabilità delle immagini di input, queste tecniche di augmentation aiutano YOLOv4 a generalizzare meglio a diversi tipi di immagini, migliorandone così robustezza e precisione senza comprometterne le prestazioni in tempo reale.
YOLOv4 è progettato per ottimizzare sia la velocità sia la precisione, risultando ideale per le attività di rilevamento di oggetti in tempo reale che richiedono prestazioni rapide e affidabili. Funziona in modo efficiente su GPU convenzionali, utilizzandone soltanto una sia per l'addestramento sia per l'inferenza. Questo lo rende accessibile e pratico per varie applicazioni, dai sistemi di raccomandazione alla gestione autonoma dei processi, riducendo la necessità di configurazioni hardware estese e offrendo una soluzione conveniente per il rilevamento di oggetti in tempo reale.
Per iniziare a utilizzare YOLOv4, dovresti visitare il repository GitHub ufficiale di YOLOv4. Segui le istruzioni di installazione fornite nel file README, che in genere includono la clonazione del repository, l'installazione delle dipendenze e la configurazione delle variabili d'ambiente. Una volta installato, puoi addestrare il modello preparando il dataset, configurando i parametri del modello e seguendo le istruzioni d'uso fornite. Poiché Ultralytics non supporta attualmente YOLOv4, ti consigliamo di consultare direttamente la pagina GitHub di YOLOv4 per indicazioni dettagliate e aggiornate.