L'attività Classificatore di immagini MediaPipe ti consente di eseguire la classificazione delle immagini. Puoi utilizzare questa attività per identificare cosa rappresenta un'immagine tra un insieme di categorie definite al momento dell'addestramento. Queste istruzioni mostrano come utilizzare Image Classifier per app web e Node.
Puoi vedere questa attività in azione guardando la demo. Per ulteriori informazioni sulle funzionalità, sui modelli e sulle opzioni di configurazione di questa attività, consulta la Panoramica.
Esempio di codice
Il codice di esempio per Image Classifier fornisce un'implementazione completa di questa attività in JavaScript per riferimento futuro. Questo codice ti aiuta a testare questa attività e a iniziare a creare la tua app di classificazione delle immagini. Puoi visualizzare, eseguire e modificare il codice di esempio di Image Classifier utilizzando solo il browser web.
Configurazione
Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e i progetti di codice specificamente per utilizzare Image Classifier. Per informazioni generali sulla configurazione dell'ambiente di sviluppo per l'utilizzo delle attività MediaPipe, inclusi i requisiti della versione della piattaforma, consulta la guida alla configurazione per il web.
Pacchetti JavaScript
Il codice del classificatore di immagini è disponibile tramite il pacchetto @mediapipe/tasks-vision
NPM di MediaPipe. Puoi trovare e scaricare queste librerie dai link forniti nella guida alla configurazione della piattaforma.
Puoi installare i pacchetti richiesti con il seguente codice per l'implementazione locale utilizzando il seguente comando:
npm install @mediapipe/tasks-vision
Se vuoi importare il codice dell'attività tramite un servizio 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 compatibile con questa attività. Per ulteriori informazioni sui modelli addestrati disponibili per Image Classifier, consulta la sezione Modelli della panoramica dell'attività.
Seleziona e scarica un modello, quindi memorizzalo nella directory del progetto:
<dev-project-root>/app/shared/models/
Crea l'attività
Utilizza una delle funzioni di Image Classifier createFrom...()
per preparare l'attività all'esecuzione di inferenze. Utilizza la funzione createFromModelPath()
con un percorso relativo o assoluto al file del modello addestrato.
Se il modello è già caricato in memoria, puoi utilizzare il metodo
createFromModelBuffer()
.
L'esempio di codice riportato di seguito mostra l'utilizzo della funzione createFromOptions()
per configurare l'attività. La funzione createFromOptions
consente di personalizzare il classificatore di immagini con opzioni di configurazione. Per ulteriori informazioni sulle opzioni di configurazione, consulta Opzioni di configurazione.
Il seguente codice mostra come creare e configurare l'attività con opzioni personalizzate:
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à offre le seguenti opzioni di configurazione per le applicazioni web:
Nome opzione | Descrizione | Intervallo di valori | Valore predefinito |
---|---|---|---|
runningMode |
Imposta la modalità di esecuzione dell'attività. Esistono due modi: IMMAGINE: la modalità per gli input di singole immagini. VIDEO: la modalità per i frame decodificati di un video o di un live streaming di dati di input, ad esempio di una videocamera. |
{IMAGE, VIDEO } |
IMAGE |
displayNamesLocale |
Imposta la lingua delle etichette da utilizzare per i nomi visualizzati forniti nei metadati del modello dell'attività, se disponibile. Il valore predefinito è en per
l'inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato
utilizzando l'API TensorFlow Lite Metadata Writer |
Codice delle impostazioni internazionali | it |
maxResults |
Imposta il numero massimo facoltativo di risultati di classificazione con il punteggio più alto da restituire. Se < 0, verranno restituiti tutti i risultati disponibili. | Qualsiasi numero positivo | -1 |
scoreThreshold |
Imposta la soglia del punteggio di previsione che sostituisce quella fornita nei metadati del modello (se presenti). I risultati inferiori a questo valore vengono rifiutati. | Qualsiasi stato mobile | Non impostato |
categoryAllowlist |
Imposta l'elenco facoltativo dei nomi delle categorie consentite. Se non è vuoto,
i risultati di classificazione il cui nome della categoria non è presente in questo insieme verranno
eliminati. I nomi di categorie duplicati o sconosciuti vengono ignorati.
Questa opzione è mutuamente esclusiva con categoryDenylist e l'utilizzo di entrambe genera un errore. |
Qualsiasi stringa | Non impostato |
categoryDenylist |
Imposta l'elenco facoltativo dei nomi di categorie non consentiti. Se non è vuoto, i risultati di classificazione il cui nome della categoria è presente in questo insieme verranno esclusi. I nomi di categorie duplicati o sconosciuti vengono ignorati. Questa opzione è mutuamente esclusa da categoryAllowlist e l'utilizzo di entrambe genera un errore. |
Qualsiasi stringa | Non impostato |
resultListener |
Imposta l'ascoltatore dei risultati in modo da ricevere i risultati della classificazione
in modo asincrono quando l'Image Classifier è in modalità
live streaming. Può essere utilizzato solo quando la modalità di esecuzione è impostata su LIVE_STREAM |
N/D | Non impostato |
Preparazione dei dati
Image Classifier può classificare gli oggetti nelle immagini in qualsiasi formato supportato dal browser host. L'attività gestisce anche la preelaborazione dell'input dei dati, tra cui ridimensionamento, rotazione e normalizzazione dei valori.
Le chiamate ai metodi classify()
e classifyForVideo()
di Image Classifier vengono eseguite
in modo sincrono e bloccano il thread dell'interfaccia utente. Se classifichi gli oggetti nei frame video della fotocamera di un dispositivo, ogni classificazione bloccherà il thread principale. Puoi evitarlo implementando web worker per eseguire
classify()
e classifyForVideo()
su un altro thread.
Esegui l'attività
Il Classificatore di immagini utilizza 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 l'esempio di codice.
Gestire e visualizzare i risultati
Dopo l'esecuzione dell'inferenza, l'attività Classificatore di immagini restituisce un oggetto ImageClassifierResult
contenente l'elenco delle possibili categorie per gli oggetti all'interno dell'immagine o dell'inquadratura 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 il classificatore di uccelli su:
Il codice di esempio del classificatore di immagini mostra come visualizzare i risultati di classificazione restituiti dall'attività. Per maggiori dettagli, consulta l'esempio di codice.