Ricerca nel sito web

Presentazione dell'interfaccia utente Web YOLOv8


Storicamente, il rilevamento degli oggetti è stata una delle prime tecnologie di deep learning a diventare praticabile per l’uso da parte dei consumatori. Ciò è dovuto in gran parte all'incredibile lavoro di Joseph Redmon e del suo team di ricerca per sviluppare le prime generazioni di modelli You Only Look Once (YOLO). Il potente framework ha consentito alle persone con configurazioni informatiche più casuali di iniziare con il rilevamento degli oggetti YOLO e iniziare a integrare il framework AI nelle loro applicazioni esistenti.

Questa tradizione è stata continuata con lo sviluppo di YOLOv5 e YOLOv8 presso Ultralytics. Hanno continuato a spingersi oltre nello sviluppo di modelli di rilevamento di oggetti SOTA con opzioni sempre migliori per l'interfacciamento del framework. L'ultimo di questi viene fornito con il pacchetto YOLO di Ultralytics, che rende molto più semplice l'integrazione di YOLO con il codice Python esistente e l'esecuzione nei notebook.

In questo articolo, siamo entusiasti di presentare l'interfaccia utente Web YOLOv8. Ispirati dal lavoro di Automatic1111 e dai loro numerosi contributori per sviluppare un'applicazione all-in-one per l'esecuzione di Stable Diffusion, abbiamo cercato di sviluppare un'unica interfaccia dell'applicazione Gradio per YOLOv8 che possa servire tutte le funzionalità chiave del modello. Nella nostra nuova applicazione, gli utenti possono etichettare le proprie immagini, visualizzarle in gallerie ordinate, addestrare l'intera gamma di modelli YOLOv8 e generare previsioni di etichette di immagini su input di immagini e video, tutto in un'unica applicazione facile da usare!

Segui questo tutorial per imparare come eseguire l'applicazione in Gradient.

Introduzione a YOLOv8

Un confronto di YOLOv8 con le iterazioni del modello precedente

YOLOv8 è l'ultimo modello di rilevamento oggetti della famiglia YOLO e Ultralytics. YOLOv8 offre il rilevamento di oggetti SOTA in un pacchetto che è stato notevolmente semplificato da utilizzare rispetto alle iterazioni precedenti. Inoltre, YOLOv8 rappresenta un significativo passo avanti nella precisione del rilevamento.

Per saperne di più su YOLOv8, assicurati di leggere alcuni degli altri articoli su questo blog che trattano l'argomento:

  • https://blog.paperspace.com/damaged-car-parts-detection-using-yolov8n-an-end-t/
  • https://blog.paperspace.com/yolov8/

Come eseguire l'applicazione

Abbiamo reso l'applicazione disponibile per chiunque su Github e da lì è semplice avviare un Gradient Notebook per eseguire l'app. In alternativa, possiamo avviare l'applicazione in una distribuzione autonoma e trasformarla in un'API adeguata.

Eseguilo in un notebook

Per eseguire l'applicazione in un notebook con gradiente, fare prima clic sul collegamento Esegui su gradiente qui o nella parte superiore della pagina. Questo aprirà il notebook YOLO su una macchina GPU gratuita.

Una volta nel Notebook, vai alla prima cella di codice ed eseguila per installare le dipendenze:

!pip install -r requirements.txt

Quindi eseguire la cella seguente per avviare l'applicazione. Fai clic sul collegamento live per accedere all'app su qualsiasi browser web!

!python app-final.py

Eseguilo in una distribuzione

Per distribuire questa applicazione con Gradient, dobbiamo semplicemente inserire i valori richiesti nella pagina di creazione della distribuzione. Apri la console Gradient e vai alla scheda distribuzioni. Premi "Crea" per avviare una nuova distribuzione.

Da questa pagina possiamo compilare la specifica in modo che contenga i seguenti valori:

enabled: true
image: paperspace/yolo:v1.01
port: 7860
command:
  - python
  - app-final.py
env:
  - name: GRADIO_SERVER_NAME
    value: 0.0.0.0
resources:
  replicas: 1
  instanceType: A100-80G

Assicurati di dichiarare la variabile di ambiente GRADIO_SERVER_NAME come "0.0.0.0". In caso contrario, l'applicazione indirizzerà il server al valore predefinito, 127.0.0.2, e l'app non funzionerà come previsto.

Una volta inserite le informazioni corrette, premi "Distribuisci" nella parte inferiore della pagina e verrai reindirizzato alla pagina dei dettagli di distribuzione. Qui possiamo ottenere l'URL dell'endpoint API e modificare le specifiche YAML esistenti, se necessario. La distribuzione impiegherà un minuto o due per avviarsi e sapremo che è pronta dal simbolo verde "Pronto" visualizzato sulla pagina.

Dimostrazione dell'applicazione

Ora che abbiamo creato l'applicazione, esaminiamo le sue capacità.

Etichettare le immagini

Etichettatura delle immagini

La prima scheda è la scheda di etichettatura delle immagini. Qui siamo in grado di inviare immagini in blocco o in caricamenti singoli. Lì possiamo nominare la directory in cui conservare i nostri dati. Se non esiste una directory esistente con quel nome, la generazione di etichette attiverà la creazione di una nuova directory e di un file data.yaml con i percorsi corrispondenti alle immagini di training, test e convalida. Qualunque sia il valore presente nell'etichetta, gli input sono separati da punto e virgola e corrisponderanno agli indici dell'etichetta nel file data.yaml. Ciò ci consentirà di allenarci sulle immagini, secondo la struttura del file YOLOv8 richiesta.

Possiamo selezionare in modo iterativo le immagini dal menu a discesa caricandole con l'opzione radio "Caricamento collettivo". Questo aprirà un caricatore di file e un menu a discesa. Carica le immagini, aggiorna il menu a discesa, quindi seleziona ciascuna immagine una per una per caricarle nello sketchpad. È anche possibile caricare direttamente le singole immagini cliccando sullo sketchpad.

Utilizzando l'oggetto blocco schizzi qui, possiamo disegnare su immagini esistenti per creare riquadri di delimitazione per le nostre immagini. Questi vengono rilevati automaticamente. Dopo aver generato le etichette, una copia dell'immagine viene spostata nella cartella immagini assegnata alle directory divise e un file di testo delle etichette corrispondente verrà esportato nella directory labels.

Una volta che abbiamo finito di etichettare le nostre immagini, possiamo guardarle utilizzando la scheda Galleria.

Visualizza le tue immagini nelle gallerie

Visualizza le immagini etichettate

Nella scheda Galleria, possiamo visualizzare le nostre immagini etichettate. I riquadri di delimitazione non sono attualmente applicati a queste immagini, ma puntiamo ad aggiungere questa funzionalità in futuro. Per ora, è un modo efficace per vedere quali immagini sono state inviate a quale directory.

Esegui l'allenamento

Addestra il modello e ottieni risultati e file di output

La scheda formazione ci consente di eseguire la formazione YOLOv8 sulle immagini che abbiamo etichettato. Possiamo utilizzare i pulsanti di opzione e i cursori per regolare il tipo di modello, il numero di epoche di addestramento e la dimensione del batch. La formazione produrrà i risultati di un test di convalida e il percorso verso il modello migliore, best.pt.

Genera etichette di immagini e video previste

Genera etichette previste

Infine, ora che abbiamo addestrato il nostro modello, possiamo usarlo per dedurre etichette su immagini e video immessi. L'interfaccia nell'app consente di caricare direttamente questi input oppure possono essere inviati come URL. Dopo aver eseguito la previsione, nella parte inferiore della pagina saranno presenti l'output delle metriche e l'immagine o il video immessi con eventuali riquadri di delimitazione rilevati sovrapposti.

Pensieri conclusivi

Ci auguriamo che questa applicazione renda semplice per chiunque iniziare con YOLO su Gradient. In futuro, prevediamo di aggiornare questa GUI con funzionalità aggiuntive come l'acquisizione di set di dati RoboFlow in-app e il rilevamento di oggetti dal vivo su video in streaming, come una webcam.

Articoli correlati: