دمج أدوات تضمين الصور

تتيح أدوات تضمين الصور تضمين الصور في متجه ميزة عالية الأبعاد التي تمثل المعنى الدلالي لإحدى الصور، والذي يمكن مقارنته بعد ذلك الخط المتجه الخاص بالصور الأخرى لتقييم التشابه الدلالي لها.

على عكس البحث بالصور تسمح أداة تضمين الصور بحساب التشابه بين الصور بشكل فوري بدلاً من البحث من خلال فهرس محدد مسبقًا تم إنشاؤه من مجموعة من الصور.

استخدِم واجهة برمجة التطبيقات Task Library API ImageEmbedder لتفعيل أداة تضمين الصور المخصّصة. إلى تطبيقات الهاتف المحمول لديك.

الميزات الرئيسية لواجهة برمجة التطبيقات ImageEmbedder

  • معالجة الصور المدخلة، بما في ذلك التدوير وتغيير الحجم ومساحة اللون تحويل.

  • المنطقة محط الاهتمام للصورة التي تم إدخالها.

  • دالة فائدة مدمجة لحساب تشابه جيب التمام بين الخطوط المتجهة للخصائص.

نماذج أدوات تضمين الصور المتوافقة

نؤكّد أنّ النماذج التالية متوافقة مع ImageEmbedder. واجهة برمجة التطبيقات.

تنفيذ الاستنتاج بلغة 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());

يمكنك الاطّلاع على رمز المصدر لمزيد من الخيارات لضبط ImageEmbedder.

تنفيذ الاستنتاج في بايثون

الخطوة 1: تثبيت حزمة Pypi لدعم TensorFlow Lite

يمكنك تثبيت حزمة TensorFlow Lite Support Pypi باستخدام ما يلي: :

pip install tflite-support

الخطوة 2: استخدام النموذج

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)

يمكنك الاطّلاع على رمز المصدر لمزيد من الخيارات لضبط ImageEmbedder.

أمثلة النتائج

يُرجع تشابه جيب التمام بين متجهات الخصائص التي تمت تسويتها درجة بين -1 و1. كلما كانت قيمة أعلى أفضل، أي أن تشابه جيب التمام 1 يعني أن الخطين المتجهين متطابقة.

Cosine similarity: 0.954312

جرب البساطة أداة إصدار واجهة سطر الأوامر (CLI) التجريبية لبرنامج Imageembedder باستخدام نموذجك الخاص وبيانات الاختبار.

متطلبات توافق النموذج

يجب أن يتوفّر نموذج TFLite يمكن استخدامه بشكل اختياري شرط أساسي في واجهة برمجة التطبيقات ImageEmbedder. مقترَحة البيانات الوصفية لنماذج TFLite:

يجب أن تستوفي نماذج أداة تضمين الصور المتوافقة المتطلبات التالية:

  • أداة تحميل صور الإدخال (kTfLiteUInt8/kTfLiteFloat32)

    • إدخال صورة بحجم [batch x height x width x channels].
    • لا تتوفّر إمكانية الاستنتاج المجمَّع (يجب أن تكون القيمة batch 1).
    • يتم توفير إدخالات نموذج أحمر أخضر أزرق فقط (يجب أن تكون القيمة channels 3).
    • إذا كان النوع kTfLiteFloat32، يجب أن تكون خيارات التسوية مطلوبة المرفقة بالبيانات الوصفية لتسوية المدخلات.
  • منسّق إخراج واحد على الأقل (kTfLiteUInt8/kTfLiteFloat32)

    • مع N مكوّنات تتوافق مع أبعاد N للصفحة المعروضة خط متجه الخصائص لطبقة الإخراج هذه.
    • تحتوي على بُعدَين أو 4 سمات، أي [1 x N] أو [1 x 1 x 1 x N].