Mit der Bildersuche können Sie nach ähnlichen Bildern in einer Bilddatenbank suchen. Es die Suchanfrage in einen hochdimensionalen Vektor eingebettet, der die semantische Bedeutung der Suchanfrage, gefolgt von der vordefinierter, benutzerdefinierter Index ScaNN (Skalierbare nächstgelegene Nachbarn).
Im Gegensatz zu Bildklassifizierung, Wenn die Anzahl der Elemente, die erkannt werden können, erhöht werden soll, ist kein erneutes Training erforderlich. für das gesamte Modell. Neue Elemente können hinzugefügt werden, indem der Index einfach neu erstellt wird. Dies gilt auch für ermöglicht die Arbeit mit größeren Bilddatenbanken (mehr als 100.000 Elemente).
Die benutzerdefinierte Bildersuche mit der Task Library ImageSearcher
API bereitstellen
in Ihre mobilen Apps einbinden.
Wichtige Funktionen der ImageSearcher API
Nimmt ein einzelnes Bild als Eingabe, führt eine Einbettungsextraktion aus und Suche nach dem nächsten Nachbarn im Index.
Eingabebildverarbeitung, einschließlich Drehung, Größenanpassung und Farbraum Conversion.
Interessanter Bereich des Eingabebilds.
Vorbereitung
Bevor Sie die ImageSearcher
API verwenden können, muss ein Index auf der Grundlage des
für die Suche einen benutzerdefinierten Korpus von Bildern. Dies kann mithilfe von
Model Maker Searcher API
indem Sie die
Anleitung.
Dazu benötigen Sie Folgendes:
- ein TFLite-Bildeinbetter-Modell wie mobilenet v3. Weitere vortrainierte Einbettungermodelle (auch Featurevektormodelle genannt) finden Sie in der Sammlung von Google-Bildmodulen auf Kaggle-Modellen.
- an Ihrem Korpus an Bildern.
Nach diesem Schritt sollten Sie ein eigenständiges TFLite-Suchmodell haben (z.B.
mobilenet_v3_searcher.tflite
), das ursprüngliche Bildeinbettungsmodell mit
den Index an die
TFLite-Modellmetadaten.
Inferenz in Java ausführen
Schritt 1: Gradle-Abhängigkeit und andere Einstellungen importieren
Kopieren Sie die Modelldatei der Suche .tflite
in das Asset-Verzeichnis des Android-
Modul, in dem das Modell ausgeführt wird. Geben Sie an, dass die Datei nicht
komprimiert und fügen Sie die TensorFlow Lite-Bibliothek zum build.gradle
des Moduls hinzu.
Datei:
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'
}
Schritt 2: Modell verwenden
// 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);
Weitere Informationen finden Sie in der
Quellcode und Javadoc
finden Sie weitere Optionen zum Konfigurieren von ImageSearcher
.
Inferenz in C++ ausführen
// 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();
Weitere Informationen finden Sie in der
Quellcode
finden Sie weitere Optionen zum Konfigurieren von ImageSearcher
.
Inferenz in Python ausführen
Schritt 1: Pypi-Paket für das TensorFlow Lite-Support installieren
Sie können das Pypi-Paket für die TensorFlow Lite-Unterstützung so installieren: Befehl:
pip install tflite-support
Schritt 2: Modell verwenden
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)
Weitere Informationen finden Sie in der
Quellcode
finden Sie weitere Optionen zum Konfigurieren von ImageSearcher
.
Beispielergebnisse
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
Probieren Sie die einfache CLI-Demotool für ImageSearcher mit eigenen Modell- und Testdaten.