Bildersuchen einbinden

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ächste 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:

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.