La tecnologia di rilevamento degli oggetti della visione artificiale è essenziale per numerose applicazioni. Lo usiamo in robotica, apparecchiature di sorveglianza, automobili a guida autonoma e molte altre aree. Quindi, possiamo trovare e riconoscere determinate cose in un'immagine o in un video.
Uno dei più noti algoritmi di identificazione degli oggetti è lo YOLO (Si guarda solo una volta) set di modelli. Questi modelli sono creati da Ultralitici LLC.
La versione più recente di questa serie è YOLOv5. Ed è il modello di identificazione degli oggetti più rapido e preciso sul mercato. La capacità del modello di generalizzare a nuovi dati è stata notevolmente migliorata. Inoltre, contiene molte funzionalità che lo rendono migliore rispetto alle iterazioni precedenti.
YOLOv5 è ottimo per le applicazioni in tempo reale poiché può elaborare immagini a una velocità fino a 1000 fotogrammi al secondo su una singola GPU.
In questo articolo, introdurremo YOLOv5 e analizzeremo i dettagli delle sue aree di applicazione.
Viaggio di YOLO: Da YOLO a YOLOv5
Joseph Redmon et al. originariamente introdotto lo YOLO, un insieme di modelli di identificazione degli oggetti, nel 2016. Il modello YOLO iniziale poteva identificare gli oggetti in tempo reale. Tuttavia, aveva una bassa precisione rispetto ad altri modelli in quel momento.
Diverse versioni aggiornate di YOLO sono state rilasciate nel corso degli anni. Infine, Ultralytics LLC ha creato la nuova edizione della serie YOLO, YOLOv5.
YOLOv5 è il modello di identificazione degli oggetti più preciso e veloce attualmente disponibile.
Caratteristiche importanti
Scatole di ancoraggio
YOLOv5 prevede i riquadri di delimitazione per gli oggetti in un'immagine utilizzando i riquadri di ancoraggio. Il modello prevede quale di molte caselle predefinite con varie proporzioni corrisponde meglio all'elemento nell'immagine utilizzando le caselle di ancoraggio. Queste sono caselle predefinite.
Inoltre, consentono a YOLOv5 di riconoscere e trovare gli elementi in un'immagine con precisione.
Aumento dei dati a mosaico
Durante l'allenamento, YOLOv5 utilizza un metodo noto come mosaico aumento dei dati. Per sviluppare nuove immagini di allenamento, il nostro modello combina casualmente patch di diverse foto. Di conseguenza, il modello diventa più resiliente e affidabile. Quindi, arriva a generalizzare a nuovi dati e diminuire l'overfitting.
Una pipeline di formazione unica
Una pipeline di formazione unica che unisce supervisione e apprendimento senza supervisione viene utilizzato.
Pertanto, il modello apprende da un campione più piccolo e utilizza efficacemente l'input senza etichetta. Ciò aumenta le prestazioni del modello e migliora la sua capacità di generalizzare a nuovi input.
Strati residui e non residui
L'architettura di YOLOv5 combina livelli residui e non residui. Consentendo ai gradienti di fluire attraverso i livelli, i livelli residui aiutano il modello ad apprendere caratteristiche difficili. Inoltre, i livelli non residui forniscono al modello una comprensione più completa dell'immagine di input. Di conseguenza, YOLOv5 può operare in modo più preciso ed efficace.
Come usare YOLOv5
Installazione
L'installazione di YOLOv5 può essere completata rapidamente utilizzando pip. Pip è un gestore di pacchetti Python. Le procedure generali per l'installazione di YOLOv5 sono le seguenti:
1- Installa PyTorch: poiché YOLOv5 è basato sul framework PyTorch, devi prima installare PyTorch.
pip install torch torchvision
2. Installa CUDA: devi installare CUDA se intendi eseguire YOLOv5 su una GPU.
3. Installa YOLOv5: dopo aver configurato PyTorch e CUDA, usa il seguente comando per scaricare YOLOv5.
pip install yolov5
4-Dopo l'installazione di YOLOv5, è necessario scaricare i pesi pre-allenati. I pesi pre-addestrati sono disponibili nel repository GitHub di Ultralytics.
Vai alla parte "pesi" del sito web scorrendo verso il basso. Puoi scaricare pesi pre-allenati dall'elenco che puoi trovare qui.
5. Seleziona i pesi che sono già stati allenati e si adattano meglio al tuo caso d'uso. Il set di dati o la particolare versione YOLOv5 di cui sono stati appresi i pesi può essere utilizzato per restringere l'elenco.
6- Dopo aver scelto i pesi corretti, seleziona il peso facendo clic sul pulsante "Download" accanto ad esso. I pesi saranno disponibili per il download come. pt file.
7- Trasferire i pesi scaricati nella directory. Qui è dove funzionerà lo script di rilevamento.
8- A questo punto, puoi eseguire il rilevamento degli oggetti sulle tue foto o video utilizzando i pesi pre-addestrati nello script di rilevamento.
Prepara i dati
È necessario intraprendere le seguenti azioni per preparare i dati per l'utilizzo con YOLOv5:
1. Raccogli i dati: il primo passo è raccogliere i dati delle immagini o dei video di cui avrai bisogno rilevamento oggetti. Le cose che desideri rilevare dovrebbero essere presenti nelle foto o nei video.
2- Formatta i dati: puoi semplicemente importare le foto nel tuo script se le stai utilizzando. Devi trasformare un video in una serie di foto se prevedi di utilizzarne una. Puoi estrarre i fotogrammi da un film usando una libreria come OpenCV.
import cv2
img = cv2.imread('path/to/image')
Con la libreria OpenCV, puoi utilizzare il seguente comando per trasformare un video in una serie di immagini:
import cv2
cap = cv2.VideoCapture('path/to/video')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. Etichetta i dati: devi etichettare i dati se stai utilizzando il tuo set di dati. Disegnare riquadri di delimitazione attorno agli elementi che desideri identificare in ogni fotogramma di un'immagine. È il processo di etichettatura dei dati. Puoi utilizzare diversi strumenti per assisterti in questa operazione, inclusi LabelImg e RectLabel.
4- È necessario dividere i dati in set di addestramento e test dopo averli contrassegnati. Questo è fondamentale per valutare le prestazioni del tuo modello.
5. Infine, potrebbe essere necessario preelaborare i dati prima dell'addestramento o del test. Ciò può comportare il ridimensionamento delle immagini o dei video, la standardizzazione dei valori dei pixel o l'utilizzo di metodi per l'aumento dei dati.
Dopo aver completato questi passaggi, i tuoi dati sono pronti.
Eseguire lo script di rilevamento
Ecco un'illustrazione di uno script di rilevamento che analizza un'immagine e trova oggetti.
import yolov5
import cv2
# Pre-trained weights should be loaded.
weights = 'path/to/weights.pt'
# Set the detection confidence level
conf_thres = 0.5
# Set the Non-Maxima Suppression (NMS) threshold
nms_thres = 0.5
# Create the detector object
detector = yolov5.YOLOv5(weights, conf_thres, nms_thres)
# Load the image
img = cv2.imread('path/to/image')
# Perform object detection
detections = detector.detect(img)
# Print the detections
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections:
print("Object:", classes[int(cls_pred)])
print("Confidence:", conf)
print("Bounding box:", (x1, y1, x2, y2))
Post produzione
La soppressione non massima è una delle tecniche di post-elaborazione più frequenti utilizzate nel rilevamento di oggetti (NMS). Usiamo NMS per eliminare i riquadri di delimitazione sovrapposti per lo stesso oggetto. Per eseguire NMS sui rilevamenti, possiamo utilizzare il metodo cv2.dnn.NMSBoxes() della libreria OpenCV.
Ecco un esempio di come post-elaborare i rilevamenti usando NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
indici = cv2.dnn.NMSBoxes(rilevamenti, confidenze, conf_thres, nms_thres)
Visualizzazione
Nel caso della visualizzazione, possiamo nuovamente utilizzare una libreria come OpenCV. Possiamo visualizzare i riquadri di delimitazione attorno agli oggetti scoperti sull'immagine o sul video di origine. Per disegnare i riquadri di delimitazione dell'immagine, utilizzare il metodo cv2.rectangle(). Ecco come visualizzare i rilevamenti sull'immagine originale:
importa cv2
# Draw the bounding boxes on the image
per I negli indici:
i = i[0]
x1, y1, x2, y2 = detections[i][0], detections[i][1], detections[i][2], detections[i][3]
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(img, classes[class_ids[i]], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Show the image
cv2.imshow("Object Detection", img)
cv2
Applicazioni
YOLOv5 è un forte modello di identificazione degli oggetti. Quindi, possiamo usarlo in molti scenari del mondo reale. Uno degli usi più importanti è nelle auto a guida autonoma. YOLOv5 può identificare oggetti in tempo reale come automobili e semafori.
Nei sistemi di sorveglianza, possiamo utilizzare YOLOv5 per riconoscere e tracciare gli oggetti nei flussi video in diretta. Inoltre, YOLOv5 può essere una grande risorsa nella robotica. Può aiutare i robot a rilevare e comprendere ciò che li circonda. Questo è estremamente importante per attività come la navigazione e la manipolazione.
YOLOv5 può essere utilizzato anche in qualsiasi settore che richieda il rilevamento di oggetti, come vendita al dettaglio, sport, medicina e sicurezza.
Conclusione
Infine, YOLOv5 è la versione più recente e sofisticata della famiglia YOLO di rilevamento oggetti modelli
. Inoltre, è corretto affermare che è il modello di rilevamento degli oggetti più accurato disponibile. Grazie alla sua elevata precisione e velocità, puoi tranquillamente sceglierlo per i tuoi progetti di rilevamento di oggetti.
Resky Ago
Faccio un primo diario sul rilevamento dei veicoli con yolov5 e questo web mi aiuta a cercare informazioni al riguardo.
Sono molto interessato all'IA.
se puoi ho molte domande sull'intelligenza artificiale forse puoi aiutarmi
Grazie