كشف الكائن

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

على سبيل المثال، توضح لقطة الشاشة هذه للتطبيق النموذجي كيف تم التعرف على كائنين وتوضيح مواضعهما:

لقطة شاشة لمثال Android

البدء

لمعرفة كيفية استخدام اكتشاف الكائنات في تطبيق جوال، استكشف أمثلة التطبيقات والأدلة .

إذا كنت تستخدم نظامًا أساسيًا غير Android أو iOS، أو إذا كنت معتادًا بالفعل على واجهات برمجة تطبيقات TensorFlow Lite ، فيمكنك تنزيل نموذج الكشف عن الكائنات المبدئي الخاص بنا والتسميات المصاحبة.

قم بتنزيل نموذج البداية مع البيانات الوصفية

لمزيد من المعلومات حول البيانات التعريفية والحقول المرتبطة بها (على سبيل المثال: labels.txt ) راجع قراءة البيانات التعريفية من النماذج

إذا كنت تريد تدريب نموذج اكتشاف مخصص لمهمتك الخاصة، فراجع تخصيص النموذج .

بالنسبة لحالات الاستخدام التالية، يجب عليك استخدام نوع مختلف من النماذج:

  • توقع التسمية الفردية التي تمثلها الصورة على الأرجح (انظر تصنيف الصور )
  • توقع تكوين الصورة، على سبيل المثال الموضوع مقابل الخلفية (انظر التجزئة )

أمثلة على التطبيقات والأدلة

إذا كنت مستخدمًا جديدًا لـ TensorFlow Lite وتعمل مع Android أو iOS، فنوصي باستكشاف أمثلة التطبيقات التالية التي يمكن أن تساعدك على البدء.

ذكري المظهر

يمكنك الاستفادة من واجهة برمجة التطبيقات الجاهزة من مكتبة المهام TensorFlow Lite لدمج نماذج الكشف عن الكائنات في بضعة أسطر فقط من التعليمات البرمجية. يمكنك أيضًا إنشاء خط أنابيب الاستدلال المخصص الخاص بك باستخدام TensorFlow Lite Interpreter Java API .

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

عرض مثال أندرويد

دائرة الرقابة الداخلية

يمكنك دمج النموذج باستخدام TensorFlow Lite Interpreter Swift API . انظر مثال iOS أدناه.

عرض مثال iOS

نموذج الوصف

يصف هذا القسم التوقيع الخاص بنماذج Single-Shot Detector المحولة إلى TensorFlow Lite من TensorFlow Object Detection API .

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

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

توقيع الإدخال

يأخذ النموذج صورة كمدخل.

لنفترض أن الصورة المتوقعة هي 300 × 300 بكسل، مع ثلاث قنوات (الأحمر والأزرق والأخضر) لكل بكسل. يجب تغذية هذا النموذج كمخزن مؤقت مسطح بقيمة 270.000 بايت (300 × 300 × 3). إذا كان النموذج كميًا ، فيجب أن تكون كل قيمة بايت واحد يمثل قيمة بين 0 و255.

يمكنك إلقاء نظرة على رمز التطبيق الخاص بنا لفهم كيفية إجراء هذه المعالجة المسبقة على Android.

توقيع الإخراج

يقوم النموذج بإخراج أربع صفائف، تم تعيينها للمؤشرات 0-4. تصف المصفوفات 0 و1 و2 N من الكائنات المكتشفة، مع وجود عنصر واحد في كل صفيف يتوافق مع كل كائن.

فِهرِس اسم وصف
0 المواقع مصفوفة متعددة الأبعاد لقيم الفاصلة العائمة [N] [4] بين 0 و1، والمصفوفات الداخلية التي تمثل المربعات المحيطة في النموذج [أعلى، يسار، أسفل، يمين]
1 الطبقات صفيف من الأعداد الصحيحة N (الإخراج كقيم الفاصلة العائمة) يشير كل منها إلى فهرس تسمية الفئة من ملف التسميات
2 درجات صفيف من قيم الفاصلة العائمة N بين 0 و1 يمثل احتمال اكتشاف فئة ما
3 عدد الاكتشافات القيمة الصحيحة لـ N

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

فصل نتيجة موقع
تفاحة 0.92 [18، 21، 57، 63]
موز 0.88 [100، 30، 180، 150]
الفراولة 0.87 [7، 82، 89، 163]
موز 0.23 [42، 66، 57، 83]
تفاحة 0.11 [6، 42، 31، 58]

درجة الثقة

لتفسير هذه النتائج، يمكننا أن ننظر إلى النتيجة والموقع لكل كائن تم اكتشافه. النتيجة هي رقم بين 0 و1 يشير إلى الثقة في اكتشاف الكائن بالفعل. كلما اقترب الرقم من 1، زادت ثقة النموذج.

اعتمادًا على التطبيق الخاص بك، يمكنك تحديد الحد الفاصل الذي ستتجاهل نتائج الكشف دونه. بالنسبة للمثال الحالي، الحد المعقول هو 0.5 درجة (يعني احتمال 50% بأن الاكتشاف صالح). في هذه الحالة، سيتم تجاهل العنصرين الأخيرين في المصفوفة لأن درجات الثقة أقل من 0.5:

فصل نتيجة موقع
تفاحة 0.92 [18، 21، 57، 63]
موز 0.88 [100، 30، 180، 150]
الفراولة 0.87 [7، 82، 89، 163]
موز 0.23 [42، 66، 57، 83]
تفاحة 0.11 [6، 42، 31، 58]

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

على سبيل المثال، في الصورة التالية، تم تعريف الكمثرى (وهي ليست كائنًا تم تدريب النموذج على اكتشافه) بشكل خاطئ على أنها "شخص". وهذا مثال على نتيجة إيجابية كاذبة يمكن تجاهلها عن طريق تحديد الحد الفاصل المناسب. في هذه الحالة، فإن الحد الفاصل بمقدار 0.6 (أو 60%) من شأنه أن يستبعد بشكل مريح الإيجابية الكاذبة.

لقطة شاشة لمثال Android تظهر نتيجة إيجابية كاذبة

موقع

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

[ قمة، غادر، قاع، يمين ]

تمثل القيمة العليا مسافة الحافة العلوية للمستطيل من أعلى الصورة بالبكسل. تمثل القيمة اليسرى مسافة الحافة اليسرى من يسار الصورة المدخلة. تمثل القيم الأخرى الحواف السفلية واليمنى بطريقة مماثلة.

معايير الأداء

يتم إنشاء أرقام قياس الأداء لنموذجنا المبدئي باستخدام الأداة الموضحة هنا .

اسم النموذج حجم النموذج جهاز GPU وحدة المعالجة المركزية
كوكو SSD موبايل نت v1 27 ميجا بايت بكسل 3 (أندرويد 10) 22 مللي ثانية 46 مللي ثانية*
بكسل 4 (أندرويد 10) 20 مللي ثانية 29 مللي ثانية*
آيفون XS (iOS 12.4.1) 7.6 مللي ثانية 11 مللي ثانية**

* 4 خيوط مستخدمة.

** 2 خيط يستخدم على الايفون للحصول على أفضل نتيجة أداء.

تخصيص النموذج

النماذج المدربة مسبقا

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

تحتوي معظم ملفات zip التي يتم تنزيلها على ملف model.tflite . إذا لم يكن هناك واحد، فيمكن إنشاء TensorFlow Lite flatbuffer باستخدام هذه التعليمات . يمكن أيضًا تحويل نماذج SSD من TF2 Object Detection Zoo إلى TensorFlow Lite باستخدام الإرشادات الواردة هنا . من المهم ملاحظة أن نماذج الكشف لا يمكن تحويلها مباشرة باستخدام TensorFlow Lite Converter ، لأنها تتطلب خطوة وسيطة لإنشاء نموذج مصدر متوافق مع الهاتف المحمول. تنفذ البرامج النصية المرتبطة أعلاه هذه الخطوة.

يحتوي كل من نصوص التصدير TF1 و TF2 على معلمات يمكنها تمكين عدد أكبر من كائنات الإخراج أو معالجة لاحقة أبطأ وأكثر دقة. الرجاء استخدام --help مع البرامج النصية لرؤية قائمة شاملة بالوسائط المدعومة.

في الوقت الحالي، يتم تحسين الاستدلال على الجهاز فقط مع نماذج SSD. ويجري حاليًا التحقيق في دعم أفضل للبنيات الأخرى مثل CenterNet وEfficientDet.

كيفية اختيار نموذج للتخصيص؟

يأتي كل نموذج بدقة خاصة به (يتم قياسها بواسطة قيمة mAP) وخصائص زمن الوصول. يجب عليك اختيار الطراز الذي يعمل بشكل أفضل لحالة الاستخدام والأجهزة المقصودة. على سبيل المثال، تعد نماذج Edge TPU مثالية للاستدلال على Google Edge TPU على Pixel 4.

يمكنك استخدام أداة قياس الأداء لدينا لتقييم النماذج واختيار الخيار الأكثر كفاءة المتاح.

نماذج الضبط الدقيق على البيانات المخصصة

تم تدريب النماذج المدربة مسبقًا التي نقدمها على اكتشاف 90 فئة من الكائنات. للحصول على قائمة كاملة بالفئات، راجع ملف التسميات في بيانات تعريف النموذج .

يمكنك استخدام تقنية تُعرف باسم نقل التعلم لإعادة تدريب النموذج للتعرف على الفئات غير الموجودة في المجموعة الأصلية. على سبيل المثال، يمكنك إعادة تدريب النموذج لاكتشاف أنواع متعددة من الخضروات، على الرغم من وجود خضروات واحدة فقط في بيانات التدريب الأصلية. للقيام بذلك، ستحتاج إلى مجموعة من الصور التدريبية لكل من العلامات الجديدة التي ترغب في تدريبها. الطريقة الموصى بها هي استخدام مكتبة TensorFlow Lite Model Maker التي تبسط عملية تدريب نموذج TensorFlow Lite باستخدام مجموعة بيانات مخصصة، مع بضعة أسطر من الرموز. يستخدم نقل التعلم لتقليل كمية بيانات التدريب المطلوبة والوقت. يمكنك أيضًا التعلم من اكتشاف اللقطات القليلة Colab كمثال على الضبط الدقيق لنموذج تم تدريبه مسبقًا مع بعض الأمثلة.

لضبط مجموعات البيانات الأكبر حجمًا، قم بإلقاء نظرة على هذه الأدلة لتدريب النماذج الخاصة بك باستخدام TensorFlow Object Detection API: TF1 , TF2 . بمجرد التدريب، يمكن تحويلها إلى تنسيق متوافق مع TFLite من خلال التعليمات الواردة هنا: TF1 , TF2