Inferenza di rilevamento di oggetti in Python con YOLOv5 e PyTorch PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Inferenza di rilevamento di oggetti in Python con YOLOv5 e PyTorch

Introduzione

Il rilevamento di oggetti è un ampio campo nella visione artificiale e una delle applicazioni più importanti della visione artificiale "in natura". Da un lato, può essere utilizzato per costruire sistemi autonomi che navigano gli agenti attraverso gli ambienti, che si tratti di robot che svolgono attività o di auto a guida autonoma, ma ciò richiede l'intersezione con altri campi. Tuttavia, il rilevamento di anomalie (come prodotti difettosi su una linea), l'individuazione di oggetti all'interno delle immagini, il rilevamento facciale e varie altre applicazioni di rilevamento di oggetti possono essere eseguiti senza intersecare altri campi.

Il rilevamento degli oggetti non è standardizzato come la classificazione delle immagini, principalmente perché la maggior parte dei nuovi sviluppi viene in genere eseguita da singoli ricercatori, manutentori e sviluppatori, piuttosto che da grandi librerie e framework. È difficile impacchettare gli script di utilità necessari in un framework come TensorFlow o PyTorch e mantenere le linee guida API che hanno guidato lo sviluppo finora.

Ciò rende il rilevamento degli oggetti un po' più complesso, in genere più dettagliato (ma non sempre) e meno accessibile rispetto alla classificazione delle immagini. Uno dei principali vantaggi dell'essere in un ecosistema è che fornisce un modo per non cercare informazioni utili su buone pratiche, strumenti e approcci da utilizzare. Con il rilevamento degli oggetti, la maggior parte delle persone deve fare molte più ricerche sul paesaggio del campo per avere una buona presa.

Fortunatamente per le masse, Ultralytics ha sviluppato un'API di rilevamento degli oggetti semplice, molto potente e bella attorno alla loro implementazione YOLOv5.

In questa breve guida, eseguiremo il rilevamento di oggetti in Python, con YOLOv5 creato da Ultralytics in PyTorch, utilizzando una serie di pesi pre-addestrati addestrati su MS COCO.

YOLOv5

YOLO (Guardi solo una volta) è una metodologia, nonché una famiglia di modelli costruiti per il rilevamento di oggetti. Fin dall'inizio nel 2015, YOLOv1, YOLOv2 (YOLO9000) e YOLOv3 sono stati proposti dagli stessi autori e la comunità di deep learning ha continuato negli anni a venire con progressi open source.

YOLOv5 di Ultralytics è la prima implementazione su larga scala di YOLO in PyTorch, che lo ha reso più accessibile che mai, ma il motivo principale per cui YOLOv5 ha guadagnato un tale punto d'appoggio è anche l'API meravigliosamente semplice e potente costruita attorno ad esso. Il progetto astrae i dettagli non necessari, consentendo al contempo la personalizzazione, praticamente tutti i formati di esportazione utilizzabili e impiega pratiche straordinarie che rendono l'intero progetto efficiente e ottimale. In verità, è un esempio della bellezza dell'implementazione di software open source e di come alimenta il mondo in cui viviamo.

Il progetto fornisce pesi pre-addestrati su MS COCO, un set di dati di base sugli oggetti nel contesto, che può essere utilizzato sia per confrontare che per costruire sistemi di rilevamento di oggetti generali, ma soprattutto, può essere utilizzato per trasferire la conoscenza generale degli oggetti nel contesto a personalizzati set di dati.

Rilevamento di oggetti con YOLOv5

Prima di andare avanti, assicurati di averlo fatto torch ed torchvision installato:

! python -m pip install torch torchvision

YOLOv5 ha una documentazione dettagliata e senza fronzoli e un'API meravigliosamente semplice, come mostrato nel repository stesso e nel seguente esempio:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

Il secondo argomento della hub.load() il metodo specifica i pesi che vorremmo utilizzare. Scegliendo ovunque tra yolov5n a yolov5l6 – stiamo caricando i pesi pre-addestrati MS COCO. Per i modelli personalizzati:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

In ogni caso, una volta passato l'input attraverso il modello, l'oggetto restituito include metodi utili per interpretare i risultati e abbiamo scelto di render() them, che restituisce un array NumPy che possiamo inserire in un imshow() chiamata. Ciò si traduce in un ben formattato:

Salvataggio dei risultati come file

È possibile salvare i risultati dell'inferenza come file, utilizzando l'estensione results.save() Metodo:

results.save(save_dir='results')

Questo creerà una nuova directory se non è già presente e salverà la stessa immagine che abbiamo appena tracciato come file.

Ritagliare oggetti

Puoi anche decidere di ritagliare gli oggetti rilevati come singoli file. Nel nostro caso, per ogni etichetta rilevata, è possibile estrarre più immagini. Ciò è facilmente ottenibile tramite il results.crop() metodo, che ricrea a runs/detect/ directory, con expN/crops (dove N aumenta per ogni esecuzione), in cui viene creata una directory con immagini ritagliate per ogni etichetta:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

Puoi anche verificare la struttura del file di output con:

Dai un'occhiata alla nostra guida pratica e pratica per l'apprendimento di Git, con le migliori pratiche, gli standard accettati dal settore e il cheat sheet incluso. Smetti di cercare su Google i comandi Git e in realtà imparare esso!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Conteggio oggetti

Per impostazione predefinita, quando si esegue il rilevamento o si stampa il file results oggetto: otterrai il numero di immagini su cui è stata eseguita l'inferenza per quello results oggetto (YOLOv5 funziona anche con batch di immagini), la sua risoluzione e il conteggio di ogni etichetta rilevata:

print(results)

Questo risulta in:

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

Inferenza con script

In alternativa, puoi eseguire lo script di rilevamento, detect.py, clonando il repository YOLOv5:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

E poi correndo:

$ python detect.py --source img.jpg

In alternativa, puoi fornire un URL, un file video, il percorso di una directory con più file, un glob in un percorso che corrisponda solo a determinati file, un collegamento YouTube o qualsiasi altro flusso HTTP. I risultati vengono salvati nel file runs/detect directory.

Andare oltre - Apprendimento profondo pratico per la visione artificiale

La tua natura curiosa ti fa venire voglia di andare oltre? Ti consigliamo di dare un'occhiata al nostro Portata: "Apprendimento profondo pratico per la visione artificiale con Python".

Inferenza di rilevamento di oggetti in Python con YOLOv5 e PyTorch PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Un altro corso di visione artificiale?

Non faremo la classificazione delle cifre MNIST o della moda MNIST. Hanno servito la loro parte molto tempo fa. Troppe risorse di apprendimento si stanno concentrando su set di dati di base e architetture di base prima di lasciare che le architetture black-box avanzate si assumano il peso delle prestazioni.

Vogliamo concentrarci demistificazione, praticità, e una comprensione reciproca, intuizione ed progetti reali. Vuoi imparare come Puoi fare la differenza? Ti porteremo in un viaggio dal modo in cui il nostro cervello elabora le immagini alla scrittura di un classificatore di apprendimento profondo per la ricerca per il cancro al seno alle reti di apprendimento profondo che "allucinano", insegnandoti i principi e la teoria attraverso il lavoro pratico, fornendoti il know-how e strumenti per diventare un esperto nell'applicazione del deep learning per risolvere la visione artificiale.

Cosa c'è dentro?

  • I primi principi della visione e come si può insegnare ai computer a "vedere"
  • Diversi compiti e applicazioni della visione artificiale
  • Gli strumenti del mestiere che ti semplificheranno il lavoro
  • Trovare, creare e utilizzare set di dati per la visione artificiale
  • La teoria e l'applicazione delle reti neurali convoluzionali
  • Gestione del cambio di dominio, della co-occorrenza e di altri pregiudizi nei set di dati
  • Trasferisci l'apprendimento e utilizza il tempo di formazione e le risorse di calcolo degli altri a tuo vantaggio
  • Costruire e formare un classificatore di cancro al seno all'avanguardia
  • Come applicare una sana dose di scetticismo alle idee tradizionali e comprendere le implicazioni delle tecniche ampiamente adottate
  • Visualizzazione dello "spazio concettuale" di una ConvNet utilizzando t-SNE e PCA
  • Casi di studio su come le aziende utilizzano le tecniche di visione artificiale per ottenere risultati migliori
  • Valutazione corretta del modello, visualizzazione dello spazio latente e identificazione dell'attenzione del modello
  • Esecuzione di ricerche di dominio, elaborazione dei propri set di dati e creazione di test di modello
  • Architetture all'avanguardia, la progressione delle idee, cosa le rende uniche e come realizzarle
  • KerasCV – una libreria WIP per la creazione di pipeline e modelli all'avanguardia
  • Come analizzare e leggere documenti e implementarli da soli
  • Selezione dei modelli in base all'applicazione
  • Creazione di una pipeline di machine learning end-to-end
  • Paesaggio e intuizione sul rilevamento di oggetti con R-CNN, RetinaNet, SSD e YOLO più veloci
  • Istanza e segmentazione semantica
  • Riconoscimento di oggetti in tempo reale con YOLOv5
  • Formazione dei rilevatori di oggetti YOLOv5
  • Utilizzo di Transformers tramite KerasNLP (libreria WIP di livello industriale)
  • Integrazione di Transformers con ConvNets per generare didascalie di immagini
  • Deepdream

Conclusione

In questa breve guida, abbiamo dato un'occhiata a come eseguire il rilevamento di oggetti con YOLOv5 creato utilizzando PyTorch.

Timestamp:

Di più da Impilamento