Integra i ricercatori di immagini

La ricerca di immagini consente di cercare immagini simili in un database di immagini. Funziona incorporando la query di ricerca in un vettore ad alta dimensione che rappresenta il significato semantico della query, seguito dalla ricerca di somiglianza in un indice personalizzato predefinito utilizzando ScaNN (Scalable Nearest Neighbors).

A differenza della classificazione delle immagini , l'espansione del numero di elementi che possono essere riconosciuti non richiede la riqualificazione dell'intero modello. È possibile aggiungere nuovi elementi semplicemente ricostruendo l'indice. Ciò consente anche di lavorare con database di immagini più grandi (oltre 100.000 elementi).

Utilizza l'API ImageSearcher della libreria attività per distribuire il tuo ricercatore di immagini personalizzato nelle tue app mobili.

Funzionalità principali dell'API ImageSearcher

  • Prende una singola immagine come input, esegue l'estrazione dell'incorporamento e la ricerca del vicino più vicino nell'indice.

  • Elaborazione delle immagini in ingresso, inclusa rotazione, ridimensionamento e conversione dello spazio colore.

  • Regione di interesse dell'immagine di input.

Prerequisiti

Prima di utilizzare l'API ImageSearcher , è necessario creare un indice basato sul corpus personalizzato di immagini in cui effettuare la ricerca. Ciò può essere ottenuto utilizzando l'API Model Maker Searcher seguendo e adattando il tutorial .

Per questo avrai bisogno di:

Dopo questo passaggio, dovresti avere un modello di ricerca TFLite autonomo (ad esempio mobilenet_v3_searcher.tflite ), che è il modello di incorporamento di immagini originale con l'indice allegato ai metadati del modello TFLite .

Esegui l'inferenza in Java

Passaggio 1: importa la dipendenza Gradle e altre impostazioni

Copia il file del modello di ricerca .tflite nella directory asset del modulo Android in cui verrà eseguito il modello. Specifica che il file non deve essere compresso e aggiungi la libreria TensorFlow Lite al file build.gradle del modulo:

android {
    // Other settings

    // Specify tflite index file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Vision Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}

Passaggio 2: utilizzo del modello

// Initialization
ImageSearcherOptions options =
    ImageSearcherOptions.builder()
        .setBaseOptions(BaseOptions.builder().useGpu().build())
        .setSearcherOptions(
            SearcherOptions.builder().setL2Normalize(true).build())
        .build();
ImageSearcher imageSearcher =
    ImageSearcher.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<NearestNeighbor> results = imageSearcher.search(image);

Consulta il codice sorgente e javadoc per ulteriori opzioni per configurare ImageSearcher .

Esegui l'inferenza in C++

// Initialization
ImageSearcherOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
options.mutable_embedding_options()->set_l2_normalize(true);
std::unique_ptr<ImageSearcher> image_searcher = ImageSearcher::CreateFromOptions(options).value();

// Create input frame_buffer from your inputs, `image_data` and `image_dimension`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer = CreateFromRgbRawBuffer(
      image_data, image_dimension);

// Run inference
const SearchResult result = image_searcher->Search(*frame_buffer).value();

Consulta il codice sorgente per ulteriori opzioni per configurare ImageSearcher .

Esegui l'inferenza in Python

Passaggio 1: installare il pacchetto Pypi di supporto TensorFlow Lite.

È possibile installare il pacchetto TensorFlow Lite Support Pypi utilizzando il seguente comando:

pip install tflite-support

Passaggio 2: utilizzo del modello

from tflite_support.task import vision

# Initialization
image_searcher = vision.ImageSearcher.create_from_file(model_path)

# Run inference
image = vision.TensorImage.create_from_file(image_file)
result = image_searcher.search(image)

Consulta il codice sorgente per ulteriori opzioni per configurare ImageSearcher .

Risultati di esempio

Results:
 Rank#0:
  metadata: burger
  distance: 0.13452
 Rank#1:
  metadata: car
  distance: 1.81935
 Rank#2:
  metadata: bird
  distance: 1.96617
 Rank#3:
  metadata: dog
  distance: 2.05610
 Rank#4:
  metadata: cat
  distance: 2.06347

Prova il semplice strumento demo CLI per ImageSearcher con il tuo modello e i dati di test.