احفظ التاريخ! يعود مؤتمر Google I / O من 18 إلى 20 مايو. سجل الآن
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

دمج مصنفات الصور

تصنيف الصور هو استخدام شائع للتعلم الآلي لتحديد ما تمثله الصورة. على سبيل المثال ، قد نرغب في معرفة نوع الحيوان الذي يظهر في صورة معينة. تسمى مهمة التنبؤ بما تمثله الصورة تصنيف الصورة . يتم تدريب مصنف الصور على التعرف على فئات مختلفة من الصور. على سبيل المثال ، قد يتم تدريب النموذج على التعرف على الصور التي تمثل ثلاثة أنواع مختلفة من الحيوانات: الأرانب والهامستر والكلاب. راجع مقدمة تصنيف الصور لمزيد من المعلومات حول مصنفات الصور.

استخدم واجهة برمجة تطبيقات ImageClassifier لمكتبة المهام لنشر مصنفات الصور المخصصة أو المصنّفات مسبقًا في تطبيقات النموذج.

الملامح الرئيسية لواجهة برمجة تطبيقات ImageClassifier

  • إدخال معالجة الصورة ، بما في ذلك التدوير وتغيير الحجم وتحويل مساحة اللون.

  • منطقة الاهتمام بالصورة المدخلة.

  • لغة خريطة التسمية.

  • عتبة النتيجة لتصفية النتائج.

  • نتائج تصنيف Top-k.

  • تسمية allowlist و denylist.

نماذج تصنيف الصور المدعومة

النماذج التالية مضمونة لتكون متوافقة مع ImageClassifier API.

تشغيل الاستدلال في Java

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

الخطوة 1: استيراد تبعية Gradle والإعدادات الأخرى

انسخ ملف النموذج .tflite إلى دليل الأصول الخاص بوحدة Android حيث سيتم تشغيل النموذج. حدد أنه لا ينبغي ضغط الملف ، وأضف مكتبة TensorFlow Lite إلى ملف build.gradle الخاص build.gradle :

android {
    // Other settings

    // Specify tflite file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Vision Library dependency
    implementation 'org.tensorflow:tensorflow-lite-task-vision:0.1.0'
}

الخطوة 2: استخدام النموذج

// Initialization
ImageClassifierOptions options = ImageClassifierOptions.builder().setMaxResults(1).build();
ImageClassifier imageClassifier = ImageClassifier.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Classifications> results = imageClassifier.classify(image);

راجع التعليمات البرمجية المصدر و javadoc لمزيد من الخيارات لتهيئة ImageClassifier .

تشغيل الاستدلال في C ++

// Initialization
ImageClassifierOptions options;
options.mutable_model_file_with_metadata()->set_file_name(model_file);
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

انظر التعليمات البرمجية المصدر لمزيد من الخيارات لتكوين ImageClassifier .

نتائج المثال

فيما يلي مثال على نتائج التصنيف لمصنف الطيور .

عصفور

Results:
  Rank #0:
   index       : 671
   score       : 0.91406
   class name  : /m/01bwb9
   display name: Passer domesticus
  Rank #1:
   index       : 670
   score       : 0.00391
   class name  : /m/01bwbt
   display name: Passer montanus
  Rank #2:
   index       : 495
   score       : 0.00391
   class name  : /m/0bwm6m
   display name: Passer italiae

جرب أداة CLI التجريبية البسيطة لـ ImageClassifier بنموذجك الخاص وبيانات الاختبار.

متطلبات توافق النموذج

و ImageClassifier API يتوقع نموذج TFLite مع إلزامية TFLite نموذج الفوقية .

يجب أن تفي نماذج مصنف الصور المتوافقة بالمتطلبات التالية:

  • موتر صورة الإدخال (kTfLiteUInt8 / kTfLiteFloat32)

    • إدخال الصورة بالحجم [batch x height x width x channels] .
    • الاستدلال الدُفعي غير مدعوم (يجب أن تكون batch 1).
    • يتم دعم مدخلات RGB فقط (يجب أن تكون channels 3).
    • إذا كان النوع هو kTfLiteFloat32 ، يلزم إرفاق خيارات Normalization بالبيانات الوصفية لتطبيع الإدخال.
  • موتر درجة الإخراج (kTfLiteUInt8 / kTfLiteFloat32)

    • مع فئات N وإما 2 أو 4 أبعاد ، أي [1 x N] أو [1 x 1 x 1 x N]

    • خريطة (خرائط) تسمية اختيارية (لكن موصى بها) كملفات مقترنة بالنوع TENSOR_AXIS_LABELS ، تحتوي على تسمية واحدة في كل سطر. يتم استخدام أول ملف AssociatedFile (إن وجد) لملء حقل label (المسمى class_name في C ++) من النتائج. و display_name شغل في الحقل من AssociatedFile (إن وجدت) الذي يطابق لغة display_names_locale مجال ImageClassifierOptions استخدامها في وقت الخلق ( "أون" افتراضيا، أي اللغة الإنجليزية). إذا لم يكن أي منها متاحًا ، فسيتم ملء حقل index النتائج فقط.