Guida all'incorporamento delle immagini per il web

L'attività MediaPipe Image Embedder consente di convertire i dati immagine in una rappresentazione numerica per svolgere attività di elaborazione delle immagini correlate al machine learning, come il confronto della somiglianza tra due immagini. Queste istruzioni mostrano come utilizzare l'incorporamento di immagini per le app web e per nodi.

Per ulteriori informazioni su funzionalità, modelli e opzioni di configurazione di questa attività, consulta la Panoramica.

Esempio di codice

Il codice di esempio per Image Embedder fornisce un'implementazione completa in JavaScript come riferimento. Questo codice è utile per testare l'attività a creare la tua app di incorporamento di immagini. Puoi visualizzare, eseguire e modificare il Esempio di codice di incorporamento 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 specifici per l'uso di Image Embedder. 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 dell'incorporamento di immagini è disponibile tramite MediaPipe @mediapipe/tasks-vision 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 jsDelivr with your preferred CDN -->
<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/vision_bundle.js"
    crossorigin="anonymous"></script>
</head>

Modello

L'attività Embedder di immagini MediaPipe richiede un modello addestrato che sia compatibile con dell'attività. Per ulteriori informazioni sui modelli addestrati disponibili per l'incorporamento 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à

Specifica un percorso per il modello

Puoi creare un'attività con le opzioni predefinite utilizzando l'createFromModelPath() :

const vision = await FilesetResolver.forVisionTasks(
  // path/to/wasm/root
  "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm"
);
  const imageEmbedder = await ImageEmbedder.createFromOptions(vision, {
    baseOptions: {
      modelAssetPath: `https://storage.googleapis.com/mediapipe-models/image_embedder/mobilenet_v3_small/float32/1/mobilenet_v3_small.tflite`
    },
  });

Specifica il buffer del modello

Se il modello è già caricato in memoria, puoi utilizzare Metodo createFromModelBuffer():

const vision = await FilesetResolver.forVisionTasks(
  // path/to/wasm/root
  "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm"
);
const imageEmbedder = ImageEmbedder.createFromModelBuffer(
    vision, 
    new Uint8Array(...)
);

Specifica opzioni personalizzate

L'attività Embedder di immagini MediaPipe utilizza la funzione createFromOptions per impostare l'attività. La funzione createFromOptions accetta valori per opzioni di configurazione. Per ulteriori informazioni di configurazione, vedi Opzioni di configurazione.

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

const vision = await FilesetResolver.forVisionTasks(
  // path/to/wasm/root
  "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm"
);
const imageEmbedder = await ImageEmbedder.createFromOptions(
    vision,
    {
      baseOptions: {
        modelAssetPath: "model.tflite"
      },
      quantize: true
    });

Opzioni di configurazione

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

Nome opzione Descrizione Intervallo di valori Valore predefinito
running_mode 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
l2Normalize Indica se normalizzare il vettore di caratteristiche restituito con la norma L2. Utilizza questa opzione solo se il modello non contiene già un L2_NORMALIZZAZIONE TFLite Op. Nella maggior parte dei casi, questo è già il caso. La normalizzazione L2 viene quindi ottenuta attraverso l'inferenza TFLite senza necessità per questa opzione. Boolean False
quantize Indica se l'incorporamento restituito deve essere quantizzato in byte tramite quantizzazione scalare. Gli incorporamenti sono implicitamente considerati come norma unitaria. pertanto è garantito che qualsiasi dimensione abbia un valore pari a [-1,0, 1,0]. Utilizza le funzionalità di l'opzione l2Normalize in caso contrario. Boolean False

Preparazione dei dati

L'incorporamento di immagini può incorporare 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.

Esecuzione di chiamate ai metodi embed() e embedForVideo() dell'incorporamento di immagini in modo sincrono e bloccare il thread dell'interfaccia utente. Se vuoi estrarre vettori di caratteristiche dai fotogrammi video, ogni incorporamento bloccherà il thread principale. Puoi ovviare a questo problema implementando i web worker per eseguire embed() e embedForVideo() metodi su un altro thread.

Esegui l'attività

L'incorporamento di immagini utilizza embed() (con la modalità di esecuzione image) e Metodi embedForVideo() (con modalità di esecuzione video) per attivare le inferenze. L'API Image Embedder restituirà i vettori di incorporamento per come 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 imageEmbedderResult = imageEmbedder.embed(image);

Video

  const video = document.getElementById("webcam");

  const startTimeMs = performance.now();
  const embedderResult = await imageEmbedder.embedForVideo(video, startTimeMs);

Gestire e visualizzare i risultati

Dopo aver eseguito l'inferenza, l'attività Incorporatore di immagini restituisce un Oggetto ImageEmbedderResult che contiene i vettori di incorporamento per l'input un'immagine o un frame.

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

ImageEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.0, 0.0, ..., 0.0, 1.0, 0.0, 0.0, 2.0}
    head_index: 0

Questo risultato è stato ottenuto incorporando la seguente immagine:

Puoi confrontare la somiglianza semantica di due incorporamenti utilizzando Funzione ImageEmbedder.cosineSimilarity. Consulta il seguente codice per esempio.

// Compute cosine similarity.
const similarity = ImageEmbedder.cosineSimilarity(
  imageEmbedderResult.embeddings[0],
  otherEmbedderResult.embeddings[0]);

Il codice di esempio dell'incorporamento di immagini mostra come visualizzare l'incorporamento i risultati restituiti dall'attività, controlla esempio di codice per maggiori dettagli.