La ricerca immagini consente di cercare immagini simili in un database di immagini. it funziona incorporando la query di ricerca in un vettore ad alta dimensionalità che rappresenta il significato semantico della query, seguito dalla ricerca di somiglianze in una un indice predefinito e personalizzato che ScaNN (vicinati più vicini scalabili).
Al contrario di classificazione delle immagini, l'espansione del numero di elementi che possono essere riconosciuti non richiede il riaddestramento dell'intero modello. È possibile aggiungere nuovi elementi semplicemente ricreando l'indice. Anche questo consente di lavorare con database di immagini più grandi (oltre 100.000 elementi).
Utilizza l'API ImageSearcher
della libreria di attività per eseguire il deployment dello strumento di ricerca di immagini personalizzate
nelle tue app mobile.
Funzionalità principali dell'API ImageSearcher
Prende una singola immagine come input, esegue l'estrazione di incorporamento e la ricerca del vicino più prossimo nell'indice.
Elaborazione dell'immagine di input, inclusi rotazione, ridimensionamento e spazio colore e conversione in blocco.
Regione di interesse dell'immagine di input.
Prerequisiti
Prima di utilizzare l'API ImageSearcher
, è necessario creare un indice basato sul
un corpus personalizzato di immagini in cui eseguire ricerche. È possibile farlo utilizzando
API Model Maker Searcher
seguendo e adattando le
tutorial.
Per farlo avrai bisogno di:
- un modello di incorporamento di immagini TFLite come mobilenet v3. Visualizza modelli di incorporamento più preaddestrati (ovvero modelli di vettori di caratteristiche) dal Raccolta moduli immagine di Google su modelli Kaggle.
- il tuo corpus di immagini.
Dopo questo passaggio, dovresti avere un modello di ricerca TFLite autonomo (ad es.
mobilenet_v3_searcher.tflite
), che è il modello di incorporamento di immagini originale con
l'indice collegato
Metadati del modello TFLite.
Esegui l'inferenza in Java
Passaggio 1: importa la dipendenza da Gradle e altre impostazioni
Copia il file del modello dell'utente che ha eseguito la ricerca .tflite
nella directory degli asset di 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
file:
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
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 le
codice sorgente e javadoc
per visualizzare altre opzioni di configurazione di 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 le
codice sorgente
per altre opzioni di configurazione di ImageSearcher
.
Esegui l'inferenza in Python
Passaggio 1: installa il pacchetto Pypi di assistenza TensorFlow Lite
Puoi installare il pacchetto Pypi di assistenza TensorFlow Lite utilizzando quanto segue :
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 le
codice sorgente
per altre opzioni di configurazione di 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 la semplice Strumento dimostrativo dell'interfaccia a riga di comando per ImageSearcher con il tuo modello e dati di test.