Guida alla classificazione delle immagini per il web

L'attività Classificatore di immagini di MediaPipe consente di eseguire la classificazione sulle immagini. Puoi utilizzare questa attività per identificare cosa rappresenta un'immagine in un insieme di categorie definite durante l'addestramento. Queste istruzioni mostrano come utilizzare lo strumento di classificazione delle immagini per le app web e per nodi.

Puoi vedere questa attività in azione visualizzando la demo. Per ulteriori informazioni su funzionalità, modelli e opzioni di configurazione di questa attività, consulta la Panoramica.

Esempio di codice

Il codice di esempio del classificatore di immagini fornisce un'implementazione completa in JavaScript come riferimento. Questo codice è utile per testare l'attività a creare la tua app di classificazione delle immagini. Puoi visualizzare, eseguire modifica il Esempio di codice del classificatore di immagini usando solo il browser web.

Configurazione

Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e per i progetti di codice che usano il classificatore di immagini. Per informazioni generali su configurare l'ambiente di sviluppo per l'utilizzo delle attività di MediaPipe, tra cui: i requisiti di versione della piattaforma, consulta Guida alla configurazione per il web.

Pacchetti JavaScript

Il codice del classificatore di immagini è disponibile tramite @mediapipe/tasks-vision MediaPipe Pacchetto NPM. Puoi puoi trovare e scaricare queste librerie dai link forniti nella piattaforma Guida alla configurazione.

Puoi installare i pacchetti richiesti con il seguente codice per la gestione temporanea locale utilizzando il seguente comando:

npm install @mediapipe/tasks-vision

Se vuoi importare il codice dell'attività tramite una rete CDN (Content Delivery Network) aggiungi il seguente codice nel tag nel file HTML:

<!-- You can replace JSDeliver with another CDN if you prefer to -->
<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/vision_bundle.js"
    crossorigin="anonymous"></script>
</head>

Modello

L'attività classificatore di immagini MediaPipe richiede un modello addestrato che sia compatibile con dell'attività. Per ulteriori informazioni sui modelli addestrati disponibili per il classificatore di immagini, consulta la panoramica delle attività nella sezione Modelli.

Seleziona e scarica un modello, quindi archivialo nella directory del progetto:

<dev-project-root>/app/shared/models/

Crea l'attività

Usa una delle funzioni del classificatore di immagini createFrom...() per per preparare l'attività per l'esecuzione delle inferenze. Usa createFromModelPath() con un percorso relativo o assoluto al file del modello addestrato. Se il modello è già caricato in memoria, puoi utilizzare createFromModelBuffer().

L'esempio di codice seguente mostra l'utilizzo della funzione createFromOptions() per configurare l'attività. La funzione createFromOptions ti consente di personalizzare Classificatore di immagini con opzioni di configurazione. Per ulteriori informazioni sulla configurazione vedi Opzioni di configurazione.

Il codice seguente mostra come creare e configurare l'attività con opzioni:

async function createImageClassifier {
  const vision = await FilesetResolver.forVisionTasks(
    "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.0/wasm"
  );
  imageClassifier = await ImageClassifier.createFromOptions(vision, {
    baseOptions: {
      modelAssetPath: `https://storage.googleapis.com/mediapipe-models/image_classifier/efficientnet_lite0/float32/1/efficientnet_lite0.tflite`
    },
  });
}

Opzioni di configurazione

Questa attività include le seguenti opzioni di configurazione per le applicazioni web:

Nome opzione Descrizione Intervallo di valori Valore predefinito
runningMode Imposta la modalità di esecuzione per l'attività. Esistono due metodi modalità:

IMAGE: la modalità per gli input di immagini singole.

VIDEO: La modalità per i fotogrammi decodificati di un in un video o durante un live streaming di dati di input, ad esempio da una videocamera.
{IMAGE, VIDEO} IMAGE
displayNamesLocale Imposta la lingua delle etichette da utilizzare per i nomi visualizzati forniti nel metadati del modello dell'attività, se disponibili. Il valore predefinito è en per Inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato Utilizzando l'API TensorFlow Metadata Writer Codice impostazioni internazionali it
maxResults Imposta il numero massimo facoltativo di risultati della classificazione con il punteggio più alto su per tornare indietro. Se < 0, verranno restituiti tutti i risultati disponibili. Qualsiasi numero positivo -1
scoreThreshold Imposta la soglia del punteggio di previsione che sostituisce quella fornita in gli eventuali metadati del modello. I risultati al di sotto di questo valore vengono rifiutati. Qualsiasi numero in virgola mobile Non impostato
categoryAllowlist Consente di impostare l'elenco facoltativo di nomi di categorie consentiti. Se il campo non è vuoto, i risultati della classificazione i cui nome non è incluso in questo set saranno esclusi. I nomi di categorie duplicati o sconosciuti vengono ignorati. Questa opzione si esclude a vicenda con categoryDenylist e utilizza entrambi generano un errore. Qualsiasi stringa Non impostato
categoryDenylist Consente di impostare un elenco facoltativo di nomi di categorie non consentiti. Se non vuoti, i risultati di classificazione con nome della categoria incluso in questo set verranno filtrati fuori. I nomi di categorie duplicati o sconosciuti vengono ignorati. Questa opzione è reciproca è esclusivo con categoryAllowlist e l'utilizzo di entrambi genera un errore. Qualsiasi stringa Non impostato
resultListener Imposta il listener dei risultati in modo che riceva i risultati della classificazione in modo asincrono quando il classificatore di immagini è nel live streaming . Può essere utilizzato solo quando la modalità di corsa è impostata su LIVE_STREAM N/D Non impostato

Preparazione dei dati

Il classificatore di immagini può classificare gli oggetti nelle immagini in qualsiasi formato supportato browser host. L'attività gestisce anche la pre-elaborazione dell'input di dati, tra cui ridimensionamento, rotazione e normalizzazione dei valori.

Vengono eseguite chiamate ai metodi classify() e classifyForVideo() del classificatore di immagini in modo sincrono e bloccare il thread dell'interfaccia utente. Se classifichi gli oggetti in fotogrammi dalla fotocamera di un dispositivo, ogni classificazione bloccherà . Puoi evitarlo implementando i web worker per eseguire classify() e classifyForVideo() su un altro thread.

Esegui l'attività

Il classificatore di immagini usa il metodo classify() con la modalità immagine e il metodo classifyForVideo() con la modalità video per attivare le inferenze. L'API Image Classifier restituirà le possibili categorie per gli oggetti all'interno dell'immagine di input.

Il seguente codice mostra come eseguire l'elaborazione con il modello di attività:

Immagine

const image = document.getElementById("image") as HTMLImageElement;
const imageClassifierResult = imageClassifier.classify(image);

Video

const video = document.getElementById("video");
await imageClassifier.setOptions({ runningMode: "VIDEO" });

const timestamp = performance.now();
const classificationResult = await imageClassifier.classifyForVideo(
    video,
    timestamp
  );

Per un'implementazione più completa dell'esecuzione di un'attività di classificazione delle immagini, consulta esempio di codice).

Gestire e visualizzare i risultati

Quando si esegue l'inferenza, l'attività Classificatore di immagini restituisce Oggetto ImageClassifierResult che contiene l'elenco delle possibili categorie per gli oggetti all'interno dell'immagine o del frame di input.

Di seguito è riportato un esempio dei dati di output di questa attività:

ImageClassifierResult:
 Classifications #0 (single classification head):
  head index: 0
  category #0:
   category name: "/m/01bwb9"
   display name: "Passer domesticus"
   score: 0.91406
   index: 671
  category #1:
   category name: "/m/01bwbt"
   display name: "Passer montanus"
   score: 0.00391
   index: 670

Questo risultato è stato ottenuto eseguendo la classe Bird Classifier su:

Il codice di esempio Classificatore di immagini mostra come visualizzare la classificazione i risultati restituiti dall'attività, controlla esempio di codice per maggiori dettagli.