تتيح لك مهمة "إدراج الصور" من MediaPipe إنشاء تمثيل رقمي لصورة، وهو مفيد في إنجاز مهام مختلفة تستند إلى الذكاء الاصطناعي (AI) للصور. تُستخدَم هذه الميزة
غالبًا لمقارنة تشابه صورتَين باستخدام
أساليب المقارنة الحسابية، مثل تشابه جيب التمام. تعمل هذه المهمة
على بيانات الصور باستخدام نموذج تعلُّم آلي (ML) كبيانات ثابتة أو مجرى
متواصل، وتُخرج تمثيلاً رقميًا لبيانات الصور كقائمة
بمتجهات السمات العالية الأبعاد، والتي تُعرف أيضًا باسم المتجهات المضمّنة، سواءً
بالتنسيق العشري أو الكمي.
ابدأ استخدام هذه المهمة باتّباع أحد أدلة التنفيذ هذه ل منصّتك المستهدفة. ترشدك هذه الأدلة الخاصة بالنظام الأساسي إلى تنفيذ أساسي
لهذه المهمة باستخدام نموذج مقترَح، كما تقدّم أمثلة على الرمز البرمجي
مع خيارات الإعداد المقترَحة:
يصف هذا القسم ميزات هذه المهمة ومدخلاتها ومخرجاتها وخيارات الضبط.
الميزات
معالجة الصور المُدخلة: تشمل المعالجة تدوير الصور وتغيير حجمها
وتسويتها وتحويل مساحة الألوان.
منطقة الاهتمام: يتمّ إجراء عملية التضمين في منطقة من الصورة بدلاً من
الصورة بأكملها.
حساب التشابه في الدمج: دالة مساعدة مضمّنة لاحتساب
تشابه جيب التمام
بين متجهَين للميزات
التكمية: تتيح هذه الطريقة استخدام الكمّات على مستوى العنصر الواحد في متجهات السمات.
مدخلات المهام
نتائج المهام
يمكن أن يكون الإدخال أحد أنواع البيانات التالية:
الصور الثابتة
إطارات الفيديو التي تم فك ترميزها
خلاصة فيديو مباشر
تُخرج أداة "إدراج الصور" قائمة بإدراجات تتألف من:
التضمين: مصفوفة السمات نفسها، إما بتنسيق النقطة العائمة أو
بترميز متّجه
فهرس العنوان: فهرس العنوان الذي أنشأ هذا التضمين.
اسم العنوان (اختياري): اسم العنوان الذي أنشأ هذا التضمين.
خيارات الإعدادات
تتضمّن هذه المهمة خيارات الضبط التالية:
اسم الخيار
الوصف
نطاق القيمة
القيمة التلقائية
running_mode
لضبط وضع التشغيل للمهمة هناك ثلاثة
أوضاع:
IMAGE: وضع الإدخالات باستخدام صورة واحدة.
VIDEO: وضع الإطارات التي تم فك ترميزها في الفيديو
LIVE_STREAM: وضع البث المباشر لبيانات الإدخال
، مثل بيانات الكاميرا في هذا الوضع، يجب
استدعاء resultListener لإعداد مستمع لتلقّي النتائج
بشكل غير متزامن.
{IMAGE, VIDEO, LIVE_STREAM}
IMAGE
l2_normalize
ما إذا كان يجب تطبيع متجه السمات المعروض باستخدام معيار L2
لا تستخدِم هذا الخيار إلا إذا كان النموذج لا يحتوي على خطوة معالجة برمجية أساسية
L2_NORMALIZATION من TFLite. وفي معظم الحالات، يكون هذا هو الحال، وبالتالي يتم تحقيق
تسويّة L2 من خلال الاستنتاج باستخدام TFLite بدون الحاجة
إلى هذا الخيار.
Boolean
False
quantize
ما إذا كان يجب تجزئة البيانات المضمّنة التي تم إرجاعها إلى وحدات بايت من خلال
التجزئة على مستوى المقياس يُفترض ضمنيًا أنّ القيم المضمّنة هي قيم عادية و
بالتالي، يُضمن أن تكون قيمة أيّ سمة ضمن النطاق [-1.0, 1.0]. استخدِم
الخيار l2_normalize إذا لم يكن الأمر كذلك.
Boolean
False
result_callback
ضبط مستمع النتائج لتلقّي نتائج التضمين
بشكل غير متزامن عندما يكون أداة تضمين الصور في وضع البث المباشر
لا يمكن استخدامها إلا عند ضبط وضع التشغيل على LIVE_STREAM
لا ينطبق
لم يتم الضبط
النماذج
تتطلّب أداة "إدراج الصور" تنزيل نموذج إدراج صور وتخزينه
في دليل مشروعك. ابدأ باستخدام النموذج التلقائي المُقترَح لplatfrom targeted عند بدء التطوير باستخدام هذه المهمة. وعادةً ما توازن نماذج الدقة الأخرى المتاحة بين الأداء والدقة ودرجة الدقة ومتطلبات
الموارد، وفي بعض الحالات، تتضمّن ميزات إضافية.
نموذج MobileNetV3
تستخدِم عائلة النماذج هذه بنية MobileNet V3
وتم تدريبها باستخدام بيانات ImageNet.
يستخدم هذا النموذج مُضاعِفًا قدره 0.75 للعمق (عدد الميزات) في
الطبقات التجميعية لضبط التوازن بين الدقة ووقت الاستجابة. بالإضافة إلى ذلك،
يأتي MobileNet V3 بحجمَين مختلفَين، صغير وكبير، لتعديل الشبكة
وفقًا لحالات استخدام الموارد المنخفضة أو العالية.
في ما يلي مقاييس أداء المهام لعملية المعالجة بأكملها استنادًا إلى نماذج pretrained
المدرَّبة مسبقًا أعلاه. نتيجة وقت الاستجابة هي متوسط وقت الاستجابة على هاتف Pixel 6 باستخدام
وحدة المعالجة المركزية / وحدة معالجة الرسومات.
تاريخ التعديل الأخير: 2025-01-13 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-01-13 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Image embedding task guide\n\nThe MediaPipe Image Embedder task lets you create a numeric representation of an image,\nwhich is useful in accomplishing various ML-based image tasks. This\nfunctionality is frequently used to compare the similarity of two images using\nmathematical comparison techniques such as Cosine Similarity. This task operates\non image data with a machine learning (ML) model as static data or a continuous\nstream, and outputs a numeric representation of the image data as a list of\nhigh-dimensional feature vectors, also known as embedding vectors, in either\nfloating-point or quantized form.\n\n[Try it!arrow_forward](https://mediapipe-studio.webapps.google.com/demo/image_embedder)\n\nGet Started\n-----------\n\nStart using this task by following one of these implementation guides for your\ntarget platform. These platform-specific guides walk you through a basic\nimplementation of this task, using a recommended model, and provide code\nexamples with the recommended configuration options:\n\n- **Android** - [Code\n example](https://github.com/google-ai-edge/mediapipe-samples/tree/main/examples/image_embedder/android) - [Guide](./android)\n- **Python** - [Code\n example](https://colab.sandbox.google.com/github/googlesamples/mediapipe/blob/main/examples/image_embedder/python/image_embedder.ipynb) - [Guide](./python)\n- **Web** - [Code example](https://codepen.io/mediapipe-preview/pen/yLqxbaZ) - [Guide](./web_js)\n\nTask details\n------------\n\nThis section describes the capabilities, inputs, outputs, and configuration\noptions of this task.\n\n### Features\n\n- **Input image processing** - Processing includes image rotation, resizing, normalization, and color space conversion.\n- **Region of interest** - Performs embedding on a region of the image instead of the whole image.\n- **Embedding similarity computation** - Built-in utility function to compute the [cosine similarity](https://en.wikipedia.org/wiki/Cosine_similarity) between two feature vectors\n- **Quantization** - Supports scalar quantization for the feature vectors.\n\n| Task inputs | Task outputs |\n|-------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Input can be one of the following data types: - Still images \u003c!-- --\u003e - Decoded video frames \u003c!-- --\u003e - Live video feed | Image Embedder outputs a list of embeddings consisting of: - Embedding: the feature vector itself, either in floating-point form or scalar-quantized. \u003c!-- --\u003e - Head index: the index for the head that produced this embedding. \u003c!-- --\u003e - Head name (optional): the name of the head that produced this embedding. |\n\n### Configurations options\n\nThis task has the following configuration options:\n\n| Option Name | Description | Value Range | Default Value |\n|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|---------------|\n| `running_mode` | Sets the running mode for the task. There are three modes: \u003cbr /\u003e IMAGE: The mode for single image inputs. \u003cbr /\u003e VIDEO: The mode for decoded frames of a video. \u003cbr /\u003e LIVE_STREAM: The mode for a livestream of input data, such as from a camera. In this mode, resultListener must be called to set up a listener to receive results asynchronously. | {`IMAGE, VIDEO, LIVE_STREAM`} | `IMAGE` |\n| `l2_normalize` | Whether to normalize the returned feature vector with L2 norm. Use this option only if the model does not already contain a native L2_NORMALIZATION TFLite Op. In most cases, this is already the case and L2 normalization is thus achieved through TFLite inference with no need for this option. | `Boolean` | `False` |\n| `quantize` | Whether the returned embedding should be quantized to bytes via scalar quantization. Embeddings are implicitly assumed to be unit-norm and therefore any dimension is guaranteed to have a value in \\[-1.0, 1.0\\]. Use the l2_normalize option if this is not the case. | `Boolean` | `False` |\n| `result_callback` | Sets the result listener to receive the embedding results asynchronously when the Image Embedder is in the live stream mode. Can only be used when running mode is set to `LIVE_STREAM` | N/A | Not set |\n\n| **Note:** The `resultListener` is dependent on `runningMode`. Only set the `resultListener` when `runningMode` is set to `LIVE_STREAM`.\n\nModels\n------\n\nThe Image Embedder requires an image embedding model to be downloaded and stored\nin your project directory. Start with the default, recommended model for your\ntarget platform when you start developing with this task. The other available\nmodels typically make trade-offs between performance, accuracy, resolution, and\nresource requirements, and in some cases, include additional features.\n| **Attention:** This MediaPipe Solutions Preview is an early release. [Learn more](/edge/mediapipe/solutions/about#notice).\n\n### MobileNetV3 model\n\nThis model family uses a [MobileNet V3](https://arxiv.org/abs/1905.02244)\narchitecture and was trained using [ImageNet](https://www.image-net.org) data.\nThis model uses a multiplier of 0.75 for the depth (number of features) in the\nconvolutional layers to tune the accuracy-latency trade off. In addition,\nMobileNet V3 comes in two different sizes, small and large, to adapt the network\nto low or high resource use cases.\n\n| Model name | Input shape | Quantization type | Versions |\n|----------------------------------------------------------------------------------------------------------------------------------------------------|-------------|-------------------|--------------------------------------------------------------------------------------------------------------------------------------|\n| [MobileNet-V3 (small)](https://storage.googleapis.com/mediapipe-models/image_embedder/mobilenet_v3_small/float32/latest/mobilenet_v3_small.tflite) | 224 x 224 | None (float32) | [Latest](https://storage.googleapis.com/mediapipe-models/image_embedder/mobilenet_v3_small/float32/latest/mobilenet_v3_small.tflite) |\n| [MobileNet-V3 (large)](https://storage.googleapis.com/mediapipe-models/image_embedder/mobilenet_v3_large/float32/latest/mobilenet_v3_large.tflite) | 224 x 224 | None (float32) | [Latest](https://storage.googleapis.com/mediapipe-models/image_embedder/mobilenet_v3_large/float32/latest/mobilenet_v3_large.tflite) |\n\nTask benchmarks\n---------------\n\nHere's the task benchmarks for the whole pipeline based on the above\npre-trained models. The latency result is the average latency on Pixel 6 using\nCPU / GPU.\n\n| Model Name | CPU Latency | GPU Latency |\n|----------------------|-------------|-------------|\n| MobileNet-V3 (small) | 3.94ms | 7.83ms |\n| MobileNet-V3 (large) | 9.75ms | 9.08ms |"]]