YOLOv4: Rilevamento di oggetti preciso e ad alta velocità#
Benvenuto nella pagina di documentazione di Ultralytics per 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 bilanciamento ottimale tra velocità e precisione, rendendolo una scelta eccellente per molte applicazioni.
Diagramma dell'architettura di YOLOv4. Mostra l'intricato design di rete di YOLOv4, inclusi i componenti backbone, neck e head, e i loro livelli interconnessi per un rilevamento di oggetti in tempo reale ottimale.
Introduzione#
YOLOv4 sta per You Only Look Once versione 4. È un modello di rilevamento di oggetti in tempo reale sviluppato per affrontare i limiti delle versioni precedenti di YOLO come YOLOv3 e altri modelli di rilevamento di oggetti. A differenza di altri rilevatori di oggetti basati su reti neurali convoluzionali (CNN), YOLOv4 non è applicabile solo ai sistemi di raccomandazione ma anche alla gestione di processi autonomi e alla riduzione dell'input umano. Il suo funzionamento su normali unità di elaborazione grafica (GPU) consente un utilizzo di massa a un prezzo accessibile ed è progettato per funzionare in tempo reale su una normale GPU richiedendone solo una per l'addestramento.
Architettura#
YOLOv4 utilizza diverse funzionalità innovative che lavorano insieme per ottimizzare le sue prestazioni. Queste includono Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP), Cross mini-Batch Normalization (CmBN), Self-adversarial-training (SAT), attivazione Mish, aumentazione dei dati Mosaic, regolarizzazione DropBlock e perdita CIoU. Queste funzionalità sono combinate per ottenere risultati all'avanguardia.
Un tipico rilevatore di oggetti è composto da diverse parti tra cui l'input, il backbone, il neck e l'head. Il backbone di YOLOv4 è pre-addestrato su ImageNet e viene utilizzato per prevedere classi e riquadri di delimitazione degli oggetti. Il backbone può provenire da diversi modelli tra cui VGG, ResNet, ResNeXt o DenseNet. La parte neck del rilevatore viene utilizzata per raccogliere mappe di caratteristiche da diverse fasi e solitamente include diversi percorsi bottom-up e top-down. La parte head è quella 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. L'aumentazione dei dati è una comune tecnica 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 aumentazione dei dati includono distorsioni fotometriche (regolazione di luminosità, contrasto, tonalità, saturazione e rumore di un'immagine) e distorsioni geometriche (aggiunta di ridimensionamento casuale, ritaglio, ribaltamento e rotazione). Queste tecniche aiutano il modello a generalizzare meglio su diversi tipi di immagini.
Caratteristiche e prestazioni#
YOLOv4 è progettato per una velocità e una 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 per applicazioni in tempo reale. YOLOv4 eccelle anche nella precisione, ottenendo risultati all'avanguardia nei benchmark di rilevamento di oggetti come COCO.
Se confrontato con altri modelli della famiglia YOLO, come YOLOv5 e YOLOv7, YOLOv4 mantiene una forte posizione nel bilanciamento tra velocità e precisione. Sebbene i modelli più recenti possano offrire determinati vantaggi, le innovazioni architettoniche 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 ci sono pesi pre-addestrati yolov4.pt pubblicati su ultralytics/assets e nessun YAML ultralytics/cfg/models/v4/. Questa pagina viene conservata come riferimento architettonico. Gli utenti interessati a eseguire YOLOv4 dovrebbero fare riferimento direttamente al repository GitHub di YOLOv4 per le istruzioni di installazione e utilizzo.
Ecco una breve panoramica dei passaggi tipici che potresti intraprendere per utilizzare YOLOv4:
-
Visita il repository GitHub di YOLOv4: https://github.com/AlexeyAB/darknet.
-
Segui le istruzioni fornite nel file README per l'installazione. Questo solitamente comporta la clonazione del repository, l'installazione delle dipendenze necessarie e l'impostazione di eventuali variabili d'ambiente richieste.
-
Una volta completata l'installazione, puoi addestrare e utilizzare il modello secondo le istruzioni d'uso fornite nel repository. Questo solitamente comporta la preparazione del tuo dataset, la configurazione dei parametri del modello, l'addestramento del modello e quindi l'utilizzo del modello addestrato per eseguire il rilevamento degli oggetti.
Ti preghiamo di notare che i passaggi specifici possono variare a seconda del tuo caso d'uso specifico e dello stato attuale del repository YOLOv4. Pertanto, è fortemente raccomandato fare riferimento direttamente alle istruzioni fornite nel repository GitHub di YOLOv4.
Per l'addestramento e l'inferenza all'interno del framework Ultralytics, vedi YOLO11 o YOLO26.
Conclusione#
YOLOv4 è un modello di rilevamento di oggetti potente ed efficiente che trova un equilibrio tra velocità e precisione. Il suo utilizzo di funzionalità uniche e tecniche di 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 normale GPU, rendendolo accessibile e pratico per un'ampia gamma di applicazioni tra cui sistemi di sorveglianza, veicoli autonomi e automazione industriale.
Per chi desidera implementare il rilevamento di oggetti nei propri progetti, YOLOv4 rimane un forte concorrente, 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 architettoniche introdotte in YOLOv4 hanno influenzato lo sviluppo di questi modelli successivi.
Citazioni e riconoscimenti#
Vorremmo ringraziare gli autori di YOLOv4 per i loro significativi contributi nel campo del rilevamento 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}
}Il paper originale di YOLOv4 è reperibile su arXiv. Gli autori hanno reso il loro lavoro pubblicamente disponibile e il codice sorgente è accessibile su GitHub. Apprezziamo i loro sforzi nel far progredire il campo e nel 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. Ottiene un bilanciamento ottimale tra velocità e precisione, rendendolo altamente adatto per applicazioni in tempo reale. L'architettura di YOLOv4 incorpora diverse funzionalità innovative come Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP) e Self-adversarial-training (SAT), tra le altre, per ottenere risultati all'avanguardia. Se stai cercando un modello ad alte prestazioni che funzioni in modo efficiente su GPU convenzionali, YOLOv4 è una scelta eccellente.
L'architettura di YOLOv4 include diversi componenti chiave: il backbone, il neck e l'head. Il backbone, che può essere costituito da modelli come VGG, ResNet o CSPDarknet53, è pre-addestrato per prevedere classi e riquadri di delimitazione. Il neck, utilizzando PANet, collega mappe di caratteristiche da diverse fasi per un'estrazione completa dei dati. Infine, l'head, che utilizza le configurazioni di YOLOv3, effettua i rilevamenti finali degli oggetti. YOLOv4 impiega anche tecniche "bag of freebies" come l'aumentazione dei dati mosaic e la regolarizzazione DropBlock, ottimizzandone ulteriormente velocità e precisione.
"Bag of freebies" si riferisce a metodi che migliorano la precisione di addestramento di YOLOv4 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, capovolgimento, rotazione). Aumentando la variabilità delle immagini di input, queste aumentazioni aiutano YOLOv4 a generalizzare meglio verso diversi tipi di immagini, migliorando così la sua robustezza e precisione senza compromettere le sue prestazioni in tempo reale.
YOLOv4 è progettato per ottimizzare sia la velocità che la precisione, risultando ideale per attività di rilevamento di oggetti in tempo reale che richiedono prestazioni rapide e affidabili. Funziona in modo efficiente su GPU convenzionali, richiedendone solo una sia per l'addestramento che per l'inferenza. Questo lo rende accessibile e pratico per varie applicazioni che vanno dai sistemi di raccomandazione alla gestione di processi autonomi, riducendo così la necessità di ampie configurazioni hardware e rendendolo una soluzione economicamente vantaggiosa per il rilevamento di oggetti in tempo reale.
Per iniziare con YOLOv4, dovresti visitare il repository GitHub di YOLOv4 ufficiale. 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 tuo set di dati, configurando i parametri del modello e seguendo le istruzioni d'uso fornite. Poiché Ultralytics attualmente non supporta YOLOv4, si consiglia di fare riferimento direttamente al GitHub di YOLOv4 per la guida più aggiornata e dettagliata.