Penyematan gambar memungkinkan penyematan gambar ke dalam vektor fitur berdimensi tinggi merepresentasikan makna semantik dari sebuah gambar, yang kemudian dapat dibandingkan dengan vektor fitur gambar lain untuk mengevaluasi kesamaan semantiknya.
Berbeda dengan penelusuran gambar, sematan gambar memungkinkan komputasi kesamaan antara gambar dengan cepat alih-alih mencari melalui indeks yang telah ditentukan yang dibuat dari korpus gambar.
Gunakan Task Library ImageEmbedder
API untuk men-deploy sematan gambar kustom
ke dalam aplikasi seluler.
Fitur utama ImageEmbedder API
Input pemrosesan gambar, termasuk rotasi, perubahan ukuran, dan ruang warna konversi.
Wilayah yang diminati gambar input.
Fungsi utilitas bawaan untuk menghitung kemiripan kosinus antara beberapa vektor fitur.
Model sematan gambar yang didukung
Model berikut dijamin akan kompatibel dengan ImageEmbedder
Compute Engine API.
Model vektor fitur dari Koleksi Modul Gambar Google tentang Model Kaggle.
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
guna mendapatkan opsi selengkapnya untuk mengonfigurasi ImageEmbedder
.
Menjalankan inferensi di Python
Langkah 1: Instal paket Pypi Dukungan TensorFlow Lite.
Anda dapat menginstal paket Pypi Dukungan TensorFlow Lite menggunakan kode berikut 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
guna mendapatkan opsi selengkapnya untuk mengonfigurasi ImageEmbedder
.
Hasil contoh
Kesamaan kosinus antara vektor fitur yang dinormalisasi mengembalikan skor antara -1 dan 1. Lebih tinggi lebih baik, yaitu kesamaan kosinus 1 berarti kedua vektor tersebut identik.
Cosine similarity: 0.954312
Cobalah yang Alat demo CLI untuk ImageEmbedder dengan model dan data uji Anda sendiri.
Persyaratan kompatibilitas model
ImageEmbedder
API mengharapkan model TFLite dengan
direkomendasikan
Metadata Model TFLite.
Model sematan 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 (
batch
harus 1). - hanya input RGB yang didukung (
channels
harus 3). - jika tipenya kTfLiteFloat32, NormalizationOptions diperlukan yang dilampirkan ke metadata untuk normalisasi input.
- input gambar berukuran
Minimal satu tensor output (kTfLiteUInt8/kTfLiteFloat32)
- dengan komponen
N
yang sesuai dengan dimensiN
dari properti yang ditampilkan untuk lapisan output ini. - 2 atau 4 dimensi, yaitu
[1 x N]
atau[1 x 1 x 1 x N]
.
- dengan komponen