Integrasikan penyemat gambar, Integrasikan penyemat gambar, Integrasikan penyemat gambar

Penyematan gambar memungkinkan penyematan gambar ke dalam vektor fitur dimensi tinggi yang mewakili makna semantik dari suatu gambar, yang kemudian dapat dibandingkan dengan vektor fitur dari gambar lain untuk mengevaluasi kesamaan semantiknya.

Berbeda dengan pencarian gambar , penyemat gambar memungkinkan komputasi kesamaan antara gambar on-the-fly alih-alih mencari melalui indeks yang telah ditentukan yang dibangun dari kumpulan gambar.

Gunakan API ImageEmbedder Pustaka Tugas untuk menerapkan penyemat gambar khusus Anda ke dalam aplikasi seluler Anda.

Fitur utama dari ImageEmbedder API

  • Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.

  • Wilayah yang diinginkan dari gambar masukan.

  • Fungsi utilitas bawaan untuk menghitung kesamaan kosinus antara vektor fitur.

Model penyemat gambar yang didukung

Model berikut dijamin kompatibel dengan ImageEmbedder API.

Jalankan inferensi di C++

// Initialization
ImageEmbedderOptions options:
options.mutable_model_file_with_metadata()->set_file_name(model_path);
options.set_l2_normalize(true);
std::unique_ptr<ImageEmbedder> image_embedder = ImageEmbedder::CreateFromOptions(options).value();

// Create input frame_buffer_1 and frame_buffer_2 from your inputs `image_data1`, `image_data2`, `image_dimension1` and `image_dimension2`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer_1 = CreateFromRgbRawBuffer(
      image_data1, image_dimension1);
std::unique_ptr<FrameBuffer> frame_buffer_2 = CreateFromRgbRawBuffer(
      image_data2, image_dimension2);

// Run inference on two images.
const EmbeddingResult result_1 = image_embedder->Embed(*frame_buffer_1);
const EmbeddingResult result_2 = image_embedder->Embed(*frame_buffer_2);

// Compute cosine similarity.
double similarity = ImageEmbedder::CosineSimilarity(
    result_1.embeddings[0].feature_vector(),
    result_2.embeddings[0].feature_vector());

Lihat kode sumber untuk opsi lebih lanjut untuk mengonfigurasi ImageEmbedder .

Jalankan inferensi dengan Python

Langkah 1: Instal paket Pypi Dukungan TensorFlow Lite.

Anda dapat menginstal paket TensorFlow Lite Support Pypi menggunakan perintah berikut:

pip install tflite-support

Langkah 2: Menggunakan model

from tflite_support.task import vision

# Initialization.
image_embedder = vision.ImageEmbedder.create_from_file(model_path)

# Run inference on two images.
image_1 = vision.TensorImage.create_from_file('/path/to/image1.jpg')
result_1 = image_embedder.embed(image_1)
image_2 = vision.TensorImage.create_from_file('/path/to/image2.jpg')
result_2 = image_embedder.embed(image_2)

# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = image_embedder.cosine_similarity(
    result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)

Lihat kode sumber untuk opsi lebih lanjut untuk mengonfigurasi ImageEmbedder .

Contoh hasil

Kesamaan kosinus antara vektor fitur yang dinormalisasi menghasilkan skor antara -1 dan 1. Semakin tinggi semakin baik, yaitu kesamaan kosinus 1 berarti kedua vektor identik.

Cosine similarity: 0.954312

Cobalah alat demo CLI sederhana untuk ImageEmbedder dengan model dan data uji Anda sendiri.

Persyaratan kompatibilitas model

API ImageEmbedder mengharapkan model TFLite dengan Metadata Model TFLite opsional, tetapi sangat disarankan.

Model penyemat gambar yang kompatibel harus memenuhi persyaratan berikut:

  • Tensor gambar input (kTfLiteUInt8/kTfLiteFloat32)

    • masukan gambar ukuran [batch x height x width x channels] .
    • inferensi batch tidak didukung ( batch harus 1).
    • hanya input RGB yang didukung ( channels harus 3).
    • jika tipenya adalah kTfLiteFloat32, NormalizationOptions harus dilampirkan ke metadata untuk normalisasi input.
  • Setidaknya satu tensor keluaran (kTfLiteUInt8/kTfLiteFloat32)

    • dengan N komponen yang sesuai dengan dimensi N dari vektor fitur yang dikembalikan untuk lapisan keluaran ini.
    • Baik 2 atau 4 dimensi, yaitu [1 x N] atau [1 x 1 x 1 x N] .