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

دمج مقسمات الصور

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

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

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

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

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

  • نوعان من المخرجات ، قناع الفئة وأقنعة الثقة.

  • ملصق ملون لغرض العرض.

نماذج التجزئة المدعومة للصور

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

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

راجع التطبيق المرجعي Image Segmentation للحصول على مثال حول كيفية استخدام ImageSegmenter في تطبيق 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
ImageSegmenterOptions options = ImageSegmenterOptions.builder().setOutputType(OutputType.CONFIDENCE_MASK).build();
ImageSegmenter imageSegmenter = ImageSegmenter.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Segmentation> results = imageSegmenter.segment(image);

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

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

// Initialization
ImageSegmenterOptions options;
options.mutable_model_file_with_metadata()->set_file_name(model_file);
std::unique_ptr<ImageSegmenter> image_segmenter = ImageSegmenter::CreateFromOptions(options).value();

// Run inference
const SegmentationResult result = image_segmenter->Segment(*frame_buffer).value();

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

نتائج المثال

فيما يلي مثال على نتائج تجزئة deeplab_v3 ، وهو نموذج تجزئة عام متاح على TensorFlow Hub.

طائرة

Color Legend:
 (r: 000, g: 000, b: 000):
  index       : 0
  class name  : background
 (r: 128, g: 000, b: 000):
  index       : 1
  class name  : aeroplane

# (omitting multiple lines for conciseness) ...

 (r: 128, g: 192, b: 000):
  index       : 19
  class name  : train
 (r: 000, g: 064, b: 128):
  index       : 20
  class name  : tv
Tip: use a color picker on the output PNG file to inspect the output mask with
this legend.

يجب أن يبدو قناع فئة التجزئة كما يلي:

تجزئة الإخراج

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

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

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

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

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

    • موتر الحجم [batch x mask_height x mask_width x num_classes] ، حيث يلزم أن تكون batch 1 ، mask_width وارتفاع mask_height هما أبعاد أقنعة التجزئة التي ينتجها النموذج ، وعدد num_classes هو عدد الفئات التي يدعمها النموذج.

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