Backend personalizzato Label Studio per l'etichettatura semiautomatica della segmentazione delle immagini |  di Alison Yuhan Yao |  Aprile 2024

 | Intelligenza-Artificiale

Backend personalizzato; Distribuzione GCP; Versionamento dei dati con integrazione GCS

Immagine dell'autore

Sommario

· introduzione
· Panoramica
Obiettivo
Perché semiautomatico?
Entrando in Label Studio
1 frontend + 2 backend
· Implementazione (locale)
1. Installa git e docker e scarica il codice backend
2. Configura il frontend per ottenere il token di accesso
3. Configurare i contenitori backend
4. Collegare i contenitori
5. Buona etichettatura!
· Distribuzione di GCP
1. Seleziona progetto/Crea nuovo progetto e imposta l'account di fatturazione
2. Crea un'istanza VM
3. Configurare l'ambiente VM
4. Segui la sezione precedente e configura tutto sulla VM
· Integrazione GCS
1. Configura i bucket GCS
2. Crea e configura la chiave dell'account di servizio
3. Ricostruire i contenitori backend
4. L'SDK carica le immagini dal bucket di origine
5. Configura l'archiviazione di destinazione
· Riconoscimento
· Riferimenti

La creazione di dati di addestramento per le attività di segmentazione delle immagini rimane una sfida per singoli individui e piccoli team. E se sei uno studente ricercatore come me, trovare un modo economicamente efficiente è particolarmente importante. In questo post parlerò di una soluzione che ho utilizzato nel mio progetto capstone in cui un team di 9 persone ha etichettato con successo oltre 400 immagini in una settimana.

Grazie al Politecnico di Milano Centro Ricerche Gianfranco Ferréabbiamo ottenuto migliaia di immagini di sfilate di moda dal database d'archivio di Gianfranco Ferré. Per esplorare, gestire, arricchire e analizzare il database, ho impiegato segmentazione delle immagini per catalogazione più intelligente e ricerca approfondita. La segmentazione delle immagini delle foto delle sfilate getta anche le basi per la creazione di descrizioni testuali informative per un migliore motore di ricerca e approcci di intelligenza artificiale generativa da testo a immagine. Pertanto, questo blog descriverà in dettaglio:

  • come creare il tuo backend con studio dell'etichettasopra l'esistente segmentare qualsiasi cosa nel backendper l'etichettatura semiautomatica della segmentazione delle immagini,
  • come ospitare su Google Cloud Platform per la collaborazione di gruppo e
  • come utilizzare i bucket di Google Cloud Storage per il controllo delle versioni dei dati.

Il codice in questo post può essere trovato in this Deposito GitHub.

Obiettivo

Segmenta e identifica i nomi e le tipologie dei capi di abbigliamento di moda nelle immagini delle sfilate, come mostrato nella prima immagine.

Perché semiautomatico?

Non sarebbe bello se un modello di segmentazione addestrato là fuori potesse riconoscere perfettamente ogni capo di abbigliamento nelle immagini delle sfilate? Purtroppo non ce n'è uno. Esistono modelli addestrati su misura per immagini di moda o di abbigliamento, ma nulla può corrispondere perfettamente al nostro set di dati. Ogni stilista ha il proprio stile e le proprie preferenze per determinati capi di abbigliamento, nonché per il loro colore e consistenza, quindi anche se un modello di segmentazione può essere accurato al 60%, lo consideriamo una vittoria. Quindi, abbiamo ancora bisogno di persone coinvolte nel ciclo per correggere ciò che il modello di segmentazione ha sbagliato.

Entrando in Label Studio

Label Studio fornisce una versione community open source, personalizzabile e gratuita per vari tipi di etichettatura dei dati. È possibile creare il proprio backend, così posso collegare il frontend di Label Studio al backend del modello di segmentazione addestrato (menzionato sopra) per consentire agli etichettatori di migliorare ulteriormente le previsioni automatiche. Inoltre, Label Studio dispone già di un'interfaccia che assomiglia un po' a Photoshop e di una serie di strumenti di segmentazione che possono tornarci utili:

1 frontend + 2 backend

Finora, vogliamo che 2 backend siano collegati al frontend. Un backend può eseguire la previsione della segmentazione e il secondo può accelerare la modifica degli etichettatori se le previsioni sono sbagliate.

Immagine dell'autore

Ora avviamo l'app localmente. Cioè, potrai utilizzare l'app sul tuo laptop o computer locale in modo completamente gratuito, ma non puoi ancora invitare il tuo team di etichettatura a collaborare sui propri laptop. Parleremo del lavoro di squadra con GCP nella prossima sezione.

1. Installa git e docker e scarica il codice backend

Se non hai idiota O finestra mobile sul tuo laptop o computer locale, installali. (Nota: tecnicamente puoi ignorare il passaggio di installazione di git se scarichi il file zip da questo repository GitHub. In tal caso, saltare quanto segue.)

Quindi, apri il terminale e clona questo repository nella directory che desideri.

git clone https://github.com/AlisonYao/label-studio-customized-ml-backend.git

Se apri il label-studio-customized-ml-backend cartella nel tuo editor di codice, puoi vedere che la maggior parte è adattata da Backend di Label Studio ML repo, ma questa directory contiene anche il codice del modello frontend e il codice SDK adattato da Etichetta Studio SDK.

2. Configura il frontend per ottenere il token di accesso

Seguendo le linee guida ufficiali di segmentare qualsiasi cosafai quanto segue nel tuo terminale:

cd label-studio-customized-ml-backend/label_studio_ml/examples/segment_anything_model

docker run -it -p 8080:8080 \
-v $(pwd)/mydata:/label-studio/data \
--env LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true \
--env LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/label-studio/data/images \
heartexlabs/label-studio:latest

Quindi, apri il browser e digita http://0.0.0.0:8080/ e vedrai il frontend di Label Studio. Procedi alla registrazione con il tuo indirizzo email. Ora, non esiste ancora alcun progetto, quindi dobbiamo creare il nostro primo progetto facendo clic Crea progetto. Crea un nome e una descrizione (facoltativo) per il tuo progetto.

Immagine dell'autore

Carica alcune immagini localmente. (Parleremo di come utilizzare l'archiviazione cloud più tardi.)

Immagine dell'autore

Per Impostazione etichettatura, fare clic su Modello personalizzato a sinistra e copia e incolla il codice HTML dal file label-studio-customized-ml-backend/label_studio_frontend/view.html file. Non hai bisogno delle quattro righe di intestazioni se non vuoi mostrare i metadati dell'immagine nell'interfaccia di etichettatura. Sentiti libero di modificare il codice qui in base alle tue necessità o fai clic Visivo per aggiungere o eliminare etichette.

Immagine dell'autore

Ora fai clic Salva e l'interfaccia di etichettatura dovrebbe essere pronta.

Immagine dell'autore

In alto a destra, fare clic sull'icona delle impostazioni utente e fare clic su Impostazione conto e quindi dovresti essere in grado di copiare il tuo token di accesso.

Immagine dell'autore

3. Configurare i contenitori backend

Nel label-studio-customized-ml-backend directory, ci sono moltissimi backend grazie agli sviluppatori di Label Studio. Utilizzeremo il personalizzato ./segmentation backend per la previsione della segmentazione (contenitore 1) e il file ./label_studio_ml/examples/segment_anything_model per un'etichettatura più rapida (contenitore 2). Il primo utilizzerà la porta 7070 e il secondo utilizzerà la porta 9090, rendendola facilmente distinguibile dalla porta frontend 8080.

Ora incolla il tuo token di accesso nel file 2 docker-compose.yml file in ./segmentationE ./label_studio_ml/examples/segment_anything_model cartelle.

environment:
- LABEL_STUDIO_ACCESS_TOKEN=6dca0beafd235521cd9f23d855e223720889f4e1

Apri un nuovo terminale e inserisci il file segment_anything_model directory come hai fatto prima. Quindi, avvia il segmento del contenitore qualsiasi cosa.

cd label-studio-customized-ml-backend/label_studio_ml/examples/segment_anything_model

docker build . -t sam:latest
docker compose up

Quindi, apri un altro nuovo cd del terminale nel file segmentation directory e avviare il contenitore di previsione della segmentazione.

cd label-studio-customized-ml-backend/segmentation

docker build . -t seg:latest
docker compose up

A partire da ora, abbiamo avviato con successo tutti e 3 i contenitori e puoi ricontrollare.

Immagine dell'autore

4. Collegare i contenitori

Prima, ciò che facevamo con il token di accesso ci aiutava già a connettere i contenitori, quindi abbiamo quasi finito. Ora vai al frontend che hai avviato qualche tempo fa e fai clic Impostazioni nell'angolo in alto a destra. Clic Apprendimento automatico a sinistra e fare clic Aggiungi modello.

Immagine dell'autore

Assicurati di utilizzare l'URL con la porta 9090 e di attivare la preannotazione interattiva. Termina l'aggiunta facendo clic Convalida e salva.

Allo stesso modo, fai lo stesso con il backend di previsione della segmentazione.

Immagine dell'autore

Quindi, mi piace attivare Recupera le previsioni durante il caricamento automatico di un'attività. In questo modo, ogni volta che aggiorniamo la pagina di etichettatura, le previsioni di segmentazione verranno attivate e caricate automaticamente.

Immagine dell'autore

5. Buona etichettatura!

Ecco una demo di ciò che dovresti vedere se segui i passaggi precedenti.

Video per autore

Se non siamo soddisfatti delle previsioni, ad esempio, della gonna, possiamo eliminare la gonna e usare la magia viola (segmentare qualsiasi cosa) per etichettarla rapidamente.

Video per autore

Sono sicura che riuscirai a capire come usare il pennello, la gomma e la bacchetta magica da solo!

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *