دليل تصنيف الصور للويب

تتيح لك مهمة "مصنِّف الصور" إجراء عملية تصنيف للصور. يمكنك استخدام هذه المهمة لتحديد ما تمثله صورة من بين مجموعة من الفئات المحددة في وقت التدريب. توضّح لك هذه التعليمات كيفية استخدام "مصنِّف الصور" لتطبيقات Node وتطبيقات الويب.

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

مثال للرمز

يوفّر رمز المثال الخاص بمهمة "مصنِّف الصور" عملية تنفيذ كاملة لهذه المهمة بلغة JavaScript للرجوع إليها. يساعدك هذا الرمز في اختبار هذه المهمة و البدء في إنشاء تطبيقك الخاص لتصنيف الصور. يمكنك عرض مثال "مصنِّف الصور" وتشغيله و تعديله باستخدام متصفّح الويب فقط.

الإعداد

يوضّح هذا القسم الخطوات الرئيسية لإعداد بيئة التطوير ومشاريع الرموز البرمجية خصيصًا لاستخدام "مصنِّف الصور". للحصول على معلومات عامة حول إعداد بيئة التطوير لاستخدام مهام MediaPipe، بما في ذلك متطلبات إصدار النظام الأساسي، يُرجى الاطّلاع على دليل الإعداد للويب.

حِزم JavaScript

يتوفّر رمز "مصنِّف الصور" من خلال حزمة MediaPipe‏ @mediapipe/tasks-vision NPM. يمكنك العثور على هذه المكتبات وتنزيلها من الروابط المقدَّمة في دليل إعداد النظام الأساسي .

يمكنك تثبيت الحِزم المطلوبة باستخدام الرمز التالي للتجهيز المحلي باستخدام الأمر التالي:

npm install @mediapipe/tasks-vision

إذا أردت استيراد رمز المهمة من خلال خدمة شبكة توصيل المحتوى (CDN) ، أضِف الرمز التالي في العلامة في ملف HTML:

<!-- You can replace JSDeliver with another CDN if you prefer to -->
<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/vision_bundle.mjs"
    crossorigin="anonymous"></script>
</head>

النموذج

تتطلّب مهمة "مصنِّف الصور" من MediaPipe نموذجًا مدرَّبًا متوافقًا مع هذه المهمة. لمزيد من المعلومات حول النماذج المدرَّبة المتاحة لمهمة "مصنِّف الصور"، يُرجى الاطّلاع على قسم النماذج في النظرة العامة على المهمة.

اختَر نموذجًا ونزِّله، ثم خزِّنه في دليل مشروعك:

<dev-project-root>/app/shared/models/

إنشاء المهمة

استخدِم إحدى دوال createFrom...() الخاصة بمهمة "مصنِّف الصور" لإعداد المهمة لتشغيل عمليات الاستنتاج. استخدِم الدالة createFromModelPath() مع مسار نسبي أو مطلق لملف النموذج المدرَّب. إذا كان نموذجك محملًا في الذاكرة، يمكنك استخدام الطريقة createFromModelBuffer().

يوضّح مثال الرمز البرمجي أدناه كيفية استخدام الدالة createFromOptions() لإعداد المهمة. تسمح لك الدالة createFromOptions بتخصيص "مصنِّف الصور" باستخدام خيارات الإعداد. لمزيد من المعلومات حول خيارات الإعداد ، يُرجى الاطّلاع على خيارات الإعداد.

يوضّح الرمز البرمجي التالي كيفية إنشاء المهمة وضبطها باستخدام خيارات مخصّصة:

async function createImageClassifier {
  const vision = await FilesetResolver.forVisionTasks(
    "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.0/wasm"
  );
  imageClassifier = await ImageClassifier.createFromOptions(vision, {
    baseOptions: {
      modelAssetPath: `https://storage.googleapis.com/mediapipe-models/image_classifier/efficientnet_lite0/float32/1/efficientnet_lite0.tflite`
    },
  });
}

خيارات الإعداد

تتضمّن هذه المهمة خيارات الإعداد التالية لتطبيقات الويب:

اسم الخيار الوصف نطاق القيمة القيمة التلقائية
runningMode يضبط وضع التشغيل للمهمة. يتوفّر وضعان:

IMAGE: الوضع الخاص بمدخلات الصور الفردية.

VIDEO: الوضع الخاص بالإطارات التي تم فك ترميزها لفيديو أو بث مباشر لبيانات الإدخال، مثل البيانات الواردة من كاميرا.
{IMAGE, VIDEO} IMAGE
displayNamesLocale يضبط لغة التصنيفات التي سيتم استخدامها للأسماء المعروضة المقدَّمة في البيانات الوصفية لنموذج المهمة، إذا كانت متاحة. القيمة التلقائية هي en لـ الإنجليزية. يمكنك إضافة تصنيفات مترجَمة إلى البيانات الوصفية لنموذج مخصّص باستخدام TensorFlow Lite Metadata Writer API رمز اللغة en
maxResults يضبط الحد الأقصى الاختياري لعدد نتائج التصنيف التي تم تسجيل أعلى النقاط لها والتي سيتم عرضها. إذا كانت القيمة أقل من 0، سيتم عرض جميع النتائج المتاحة. أي أرقام موجبة -1
scoreThreshold يضبط الحد الأدنى لنتيجة التوقّع الذي يتجاهل الحد الأدنى المقدَّم في البيانات الوصفية للنموذج (إن وُجد). يتم رفض النتائج التي تقل عن هذه القيمة. أي رقم فاصلة عائمة لم يتم الضبط
categoryAllowlist يضبط القائمة الاختيارية لأسماء الفئات المسموح بها. إذا كانت القائمة غير فارغة، سيتم فلترة نتائج التصنيف التي لا يتضمّن اسم فئتها هذه المجموعة. يتم تجاهل أسماء الفئات المكرّرة أو غير المعروفة. هذا الخيار لا يتوافق مع categoryDenylist ويؤدي استخدام كليهما إلى حدوث خطأ. أي سلاسل لم يتم الضبط
categoryDenylist يضبط القائمة الاختيارية لأسماء الفئات غير المسموح بها. إذا كانت القائمة غير فارغة، سيتم فلترة نتائج التصنيف التي يتضمّن اسم فئتها هذه المجموعة. يتم تجاهل أسماء الفئات المكرّرة أو غير المعروفة. هذا الخيار لا يتوافق مع categoryAllowlist ويؤدي استخدام كليهما إلى حدوث خطأ. أي سلاسل لم يتم الضبط
resultListener يضبط مستمع النتائج لتلقّي نتائج التصنيف بشكل غير متزامن عندما يكون "مصنِّف الصور" في وضع البث المباشر. لا يمكن استخدام هذا الخيار إلا عندما يكون وضع التشغيل مضبوطًا على LIVE_STREAM لا ينطبق لم يتم الضبط

إعداد البيانات

يمكن لمهمة "مصنِّف الصور" تصنيف العناصر في الصور بأي تنسيق يتيحه متصفّح المضيف. تتعامل المهمة أيضًا مع المعالجة المسبقة لبيانات الإدخال، بما في ذلك تغيير الحجم والتدوير وتسوية القيم.

يتم تشغيل طلبات الطريقتَين classify() وclassifyForVideo() في "مصنِّف الصور" بشكل متزامن وتحظر سلسلة التعليمات الخاصة بواجهة المستخدم. إذا صنّفت العناصر في إطارات الفيديو من كاميرا الجهاز، سيحظر كل تصنيف سلسلة التعليمات الرئيسية. يمكنك منع ذلك من خلال تنفيذ عاملي ويب لتشغيل classify() وclassifyForVideo() على سلسلة تعليمات أخرى.

تشغيل المهمة

يستخدم "مصنِّف الصور" الطريقة classify() مع وضع الصورة والطريقة classifyForVideo() مع وضع video لتشغيل عمليات الاستنتاج. ستعرض واجهة برمجة التطبيقات "مصنِّف الصور" الفئات المحتمَلة للعناصر داخل الصورة المُدخَلة.

يوضّح الرمز البرمجي التالي كيفية تنفيذ المعالجة باستخدام نموذج المهمة:

صورة

const image = document.getElementById("image") as HTMLImageElement;
const imageClassifierResult = imageClassifier.classify(image);

فيديو

const video = document.getElementById("video");
await imageClassifier.setOptions({ runningMode: "VIDEO" });

const timestamp = performance.now();
const classificationResult = await imageClassifier.classifyForVideo(
    video,
    timestamp
  );

للحصول على عملية تنفيذ أكثر اكتمالًا لتشغيل مهمة "مصنِّف الصور"، يُرجى الاطّلاع على الـ مثال.

التعامل مع النتائج وعرضها

عند تشغيل عملية الاستنتاج، تعرض مهمة "مصنِّف الصور" كائن ImageClassifierResult يحتوي على قائمة بالفئات المحتمَلة للعناصر داخل الصورة أو الإطار المُدخَل.

في ما يلي مثال على بيانات الإخراج من هذه المهمة:

ImageClassifierResult:
 Classifications #0 (single classification head):
  head index: 0
  category #0:
   category name: "/m/01bwb9"
   display name: "Passer domesticus"
   score: 0.91406
   index: 671
  category #1:
   category name: "/m/01bwbt"
   display name: "Passer montanus"
   score: 0.00391
   index: 670

تم الحصول على هذه النتيجة من خلال تشغيل مصنِّف الطيور على:

صورة مقرّبة لعصفور دوري

يوضّح رمز المثال الخاص بمهمة "مصنِّف الصور" كيفية عرض نتائج التصنيف التي تعرضها المهمة، ويُرجى الاطّلاع على المثال للحصول على التفاصيل.