تتيح أدوات تضمين الصور تضمين الصور في متّجه ميزات عالي الأبعاد يمثّل المعنى الدلالي للصورة، ويمكن بعد ذلك مقارنته بمتّجه ميزات صور أخرى لتقييم التشابه الدلالي بينها.
على عكس البحث بالصور، يتيح برنامج تضمين الصور احتساب التشابه بين الصور أثناء التنقل بدلاً من البحث في فهرس محدّد مسبقًا تم إنشاؤه من مجموعة من الصور.
استخدِم واجهة برمجة التطبيقات Task Library ImageEmbedder لنشر أداة تضمين الصور المخصّصة في تطبيقاتك على الأجهزة الجوّالة.
الميزات الرئيسية في ImageEmbedder API
معالجة الصور المدخلة، بما في ذلك التدوير وتغيير الحجم وتحويل مساحة الألوان
منطقة الاهتمام في الصورة المدخلة
دالة مساعدة مضمّنة لاحتساب تشابه جيب التمام بين متجهات الميزات.
نماذج تضمين الصور المتوافقة
نضمن توافق الطُرز التالية مع واجهة برمجة التطبيقات ImageEmbedder.
نماذج متجهات الميزات من مجموعة "وحدات صور Google" على Kaggle نماذج
النماذج المخصّصة التي تستوفي متطلبات توافق النماذج
تشغيل الاستدلال في 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.
تشغيل الاستنتاج في Python
الخطوة 1: تثبيت حزمة TensorFlow Lite Support Pypi
يمكنك تثبيت حزمة 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 باستخدام النموذج وبيانات الاختبار الخاصة بك.
متطلبات التوافق مع الطراز
تتوقّع واجهة برمجة التطبيقات ImageEmbedder نموذج TFLite مع بيانات وصفية لنموذج TFLite اختيارية ولكن يُنصح بشدة باستخدامها.
يجب أن تستوفي نماذج تضمين الصور المتوافقة المتطلبات التالية:
موتر صورة إدخال (kTfLiteUInt8/kTfLiteFloat32)
- إدخال صورة بحجم
[batch x height x width x channels] - لا تتوفّر الاستدلالات المجمّعة (يجب أن تكون قيمة
batchهي 1). - يُسمح فقط بإدخال قيم RGB (يجب أن تكون قيمة
channelsهي 3). - إذا كان النوع kTfLiteFloat32، يجب إرفاق NormalizationOptions بالبيانات الوصفية لتسوية الإدخال.
- إدخال صورة بحجم
موتر إخراج واحد على الأقل (kTfLiteUInt8/kTfLiteFloat32)
- مع
Nمكوّن يتوافق معNأبعاد لمتّجه الميزات الذي تم عرضه في طبقة الإخراج هذه. - إما سمتان أو 4 سمات، أي
[1 x N]أو[1 x 1 x 1 x N]
- مع