Resim yerleştirme araçlarını entegre edin

Resim yerleştiriciler, resimlerin yüksek boyutlu bir özellik vektörüne yerleştirilmesine olanak tanır temsil eder. Bu resim daha sonra şu sorguyla karşılaştırılabilir: diğer görsellerin özellik vektörlerini kullanarak anlamsal benzerliklerini değerlendirebilirsiniz.

Şuna karşılık: görsel arama, Resim yerleştirme aracı, resimler arasındaki benzerliğin anında hesaplanmasını sağlar .

Özel resim yerleştirdiğinizi dağıtmak için Task Library ImageEmbedder API'yi kullanın. mobil uygulamalarınıza entegre edebilirsiniz.

ImageEmbedder API'nin temel özellikleri

  • Döndürme, yeniden boyutlandırma ve renk alanı dahil resim işleme gösterir.

  • Giriş resminin ilgilenilen bölge.

  • kosinüs benzerliği özellik vektörleridir.

Desteklenen resim yerleştirme modelleri

Aşağıdaki modellerin ImageEmbedder ile uyumlu olacağı garanti edilir API'ye gidin.

C++'ta çıkarım çalıştır

// 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());

Bkz. kaynak kod daha fazla ImageEmbedder yapılandırma seçeneğine gidin.

Python'da çıkarım çalıştırma

1. Adım: TensorFlow Lite Destek Pypi paketini yükleyin.

Aşağıdakileri kullanarak TensorFlow Lite Destek Pypi paketini yükleyebilirsiniz komut:

pip install tflite-support

2. Adım: Modeli kullanma

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)

Bkz. kaynak kod daha fazla ImageEmbedder yapılandırma seçeneğine gidin.

Örnek sonuçlar

Normalleştirilmiş özellik vektörleri arasındaki kosinüs benzerliği, -1 arasında bir puan döndürür. ve 1. Yüksekse o kadar iyidir, yani kosinüs benzerliğinin 1 olması iki vektörün aynı olmalıdır.

Cosine similarity: 0.954312

Nasıl yapıldığını ImageEmbedder için KSA demo aracı kullanarak test edebilirsiniz.

Model uyumluluğu şartları

ImageEmbedder API, isteğe bağlı ancak kesinlikle yüksek bir TFLite modeli bekler önerilen TFLite Model Meta Verileri.

Uyumlu resim yerleştirme modelleri aşağıdaki gereksinimleri karşılamalıdır:

  • Giriş görüntüsü tensörü (kTfLiteUInt8/kTfLitefloat32)

    • [batch x height x width x channels] boyutunda resim girişi.
    • toplu çıkarım desteklenmiyor (batch değerinin 1 olması gerekir).
    • yalnızca RGB girişleri desteklenir (channels değerinin 3 olması gerekir).
    • tür kTfLitefloat32 ise NormalizationOptions'ın giriş normalleştirmesi için meta verilere eklenir.
  • En az bir çıkış tensörü (kTfLiteUInt8/kTfLitefloat32)

    • döndürülen öğenin N boyutlarına karşılık gelen N bileşenle özellik vektörü kullanır.
    • 2 veya 4 boyut (ör. [1 x N] veya [1 x 1 x 1 x N]).