الرد على دعوة الحضور لحضور حدث TensorFlow Everywhere المحلي اليوم!
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

كشف الكائن

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

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

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

البدء

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

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

تنزيل نموذج بدء التشغيل باستخدام البيانات الوصفية

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

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

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

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

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

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

ذكري المظهر

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

يوضح مثال Android أدناه تنفيذ كلتا الطريقتين مثل lib_task_api و lib_interpreter ، على التوالي.

شاهد مثال Android

iOS

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

شاهد مثال iOS

نموذج الوصف

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

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

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

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

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

لنفترض أن الصورة المتوقعة هي 300 × 300 بكسل ، بثلاث قنوات (أحمر ، أزرق ، وأخضر) لكل بكسل. يجب إدخال هذا إلى النموذج كمخزن مؤقت مسطح بقيمة 270000 بايت (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 وحدة المعالجة المركزية
COCO SSD MobileNet v1.0.0 27 ميغا بايت Pixel 3 (Android 10) 22 مللي ثانية 46 مللي ثانية *
Pixel 4 (Android 10) 20 مللي ثانية 29 مللي ثانية *
iPhone XS (iOS 12.4.1) 7.6 مللي ثانية 11 مللي ثانية **

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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