La búsqueda con imágenes permite buscar imágenes similares en una base de datos de imágenes. Integra funciona incorporando la búsqueda en un vector de alta dimensión que representa el significado semántico de la consulta, seguido de la búsqueda de similitud en un un índice predefinido personalizado con ScaNN (vecinos más cercanos escalables).
A diferencia de clasificación de imágenes, Expandir la cantidad de elementos que se pueden reconocer no requiere volver a entrenar para todo el modelo. Se pueden agregar elementos nuevos con solo volver a compilar el índice. Esto también permite trabajar con bases de datos de imágenes más grandes (más de 100,000 elementos).
Usa la API de ImageSearcher
de la Biblioteca de tareas para implementar tu buscador de imágenes personalizado
en tus aplicaciones móviles.
Funciones clave de la API de ImageSearcher
Toma una sola imagen como entrada, realiza la extracción de incorporaciones y la búsqueda de vecino más cercano en el índice.
Procesamiento de imágenes de entrada, incluidos la rotación, el cambio de tamaño y el espacio de color conversión.
Región de interés de la imagen de entrada.
Requisitos previos
Antes de usar la API de ImageSearcher
, se debe compilar un índice basado en la
corpus personalizado de imágenes para realizar una búsqueda. Esto se puede lograr
API de Model Maker Searcher
mediante el seguimiento y la adaptación de
instructivo.
Para ello necesitarás lo siguiente:
- un modelo de incorporación de imágenes de TFLite, como mobilenet v3. Consulta más modelos de incorporaciones previamente entrenados (también conocidos como modelos de vector de atributos) de la Colección de módulos de imagen de Google en modelos de Kaggle.
- tu corpus de imágenes.
Después de este paso, deberías tener un modelo de buscador de TFLite independiente (p.ej.,
mobilenet_v3_searcher.tflite
), que es el modelo de incorporación de imágenes original con
el índice adjunto en el
Metadatos del modelo de TFLite.
Ejecuta inferencias en Java
Paso 1: Importa la dependencia de Gradle y otros parámetros de configuración
Copia el archivo de modelo del buscador .tflite
en el directorio de recursos de Android.
en el que se ejecutará el modelo. Especifica que el archivo no debe
y agrega la biblioteca de TensorFlow Lite al archivo build.gradle
del módulo
archivo:
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'
}
Paso 2: Usa el modelo
// 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 la
código fuente y javadoc
si quieres obtener más opciones para configurar ImageSearcher
.
Ejecuta inferencias en 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 la
código fuente
si quieres obtener más opciones para configurar ImageSearcher
.
Ejecuta la inferencia en Python
Paso 1: Instala el paquete Pypi de asistencia de TensorFlow Lite
Puedes instalar el paquete de compatibilidad con Pypi de TensorFlow Lite con el siguiente comando: :
pip install tflite-support
Paso 2: Usa el modelo
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 la
código fuente
si quieres obtener más opciones para configurar ImageSearcher
.
Resultados de ejemplo
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
Prueba lo sencillo Herramienta de demostración de la CLI para ImageSearcher con tu propio modelo y datos de prueba.