Embedder gambar memungkinkan penyematan gambar ke dalam vektor fitur berdimensi tinggi yang merepresentasikan makna semantik gambar, yang kemudian dapat dibandingkan dengan vektor fitur gambar lain untuk mengevaluasi kesamaan semantiknya.
Berbeda dengan penelusuran gambar, penyemat gambar memungkinkan penghitungan kemiripan antar-gambar secara langsung, bukan menelusuri indeks yang telah ditentukan sebelumnya yang dibuat dari korpus gambar.
Gunakan Task Library ImageEmbedder API untuk men-deploy penyemat gambar kustom ke dalam aplikasi seluler Anda.
Fitur utama ImageEmbedder API
Pemrosesan gambar input, termasuk rotasi, pengubahan ukuran, dan konversi ruang warna.
Region yang diinginkan dari gambar input.
Fungsi utilitas bawaan untuk menghitung kemiripan kosinus antara vektor fitur.
Model penyematan gambar yang didukung
Model berikut dijamin kompatibel dengan ImageEmbedder
API.
Model vektor fitur dari koleksi Modul Gambar Google di Kaggle Models.
Model kustom yang memenuhi persyaratan kompatibilitas model.
Menjalankan 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 lainnya dalam mengonfigurasi ImageEmbedder.
Menjalankan inferensi di Python
Langkah 1: Instal paket Pypi Dukungan TensorFlow Lite.
Anda dapat menginstal paket Pypi Dukungan TensorFlow Lite 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 lainnya dalam mengonfigurasi ImageEmbedder.
Hasil contoh
Kemiripan kosinus antara vektor fitur yang dinormalisasi menampilkan skor antara -1 dan 1. Semakin tinggi nilainya, semakin baik, yaitu kesamaan kosinus 1 berarti kedua vektor identik.
Cosine similarity: 0.954312
Coba alat demo CLI sederhana untuk ImageEmbedder dengan model dan data pengujian Anda sendiri.
Persyaratan kompatibilitas model
API ImageEmbedder mengharapkan model TFLite dengan Metadata Model TFLite opsional, tetapi sangat
direkomendasikan.
Model penyemat gambar yang kompatibel harus memenuhi persyaratan berikut:
Tensor gambar input (kTfLiteUInt8/kTfLiteFloat32)
- input gambar berukuran
[batch x height x width x channels]. - inferensi batch tidak didukung (
batchharus 1). - hanya input RGB yang didukung (
channelsharus 3). - Jika jenisnya adalah kTfLiteFloat32, NormalizationOptions harus dilampirkan ke metadata untuk normalisasi input.
- input gambar berukuran
Setidaknya satu tensor output (kTfLiteUInt8/kTfLiteFloat32)
- dengan komponen
Nyang sesuai dengan dimensiNdari vektor fitur yang ditampilkan untuk lapisan output ini. - 2 atau 4 dimensi, yaitu
[1 x N]atau[1 x 1 x 1 x N].
- dengan komponen