التواقيع المشتركة للصور

تصف هذه الصفحة التوقيعات الشائعة التي يجب تنفيذها بواسطة وحدات بتنسيق TF1 Hub للمهام المتعلقة بالصور. (بالنسبة إلى تنسيق TF2 SavedModel ، راجع واجهة برمجة تطبيقات SavedModel المماثلة.)

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

ناقل ميزة الصورة

ملخص الاستخدام

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

تحتوي الوحدة النمطية لاستخراج ميزة الصورة على توقيع افتراضي يقوم بتعيين مجموعة من الصور إلى مجموعة من ناقلات المعالم. يمكن استخدامه على النحو التالي:

  module_spec = hub.load_module_spec("path/to/module")
  height, width = hub.get_expected_image_size(module_spec)
  images = ...  # A batch of images with shape [batch_size, height, width, 3].
  module = hub.Module(module_spec)
  features = module(images)   # A batch with shape [batch_size, num_features].

كما أنها تحدد التوقيع المسمى المقابل.

مواصفات التوقيع

يتم استدعاء التوقيع المسمى لاستخراج متجهات معالم الصورة كـ

  outputs = module(dict(images=images), signature="image_feature_vector",
                   as_dict=True)
  features = outputs["default"]

الإدخال يتبع العرف العام لإدخال الصور .

يحتوي قاموس المخرجات على إخراج "default" لـ dtype float32 والشكل [batch_size, num_features] . batch_size هو نفسه الموجود في الإدخال ، ولكنه غير معروف في وقت إنشاء الرسم البياني. num_features معروف خاص بالوحدة النمطية ومستقل عن حجم الإدخال.

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

يجب ترك تطبيق التسرب على ميزات الإخراج (أو لا) لمستهلك الوحدة النمطية. يجب ألا تقوم الوحدة نفسها بإجراء التسرب على المخرجات الفعلية (حتى لو كانت تستخدم التسرب داخليًا في أماكن أخرى).

قد يوفر قاموس المخرجات مزيدًا من المخرجات ، على سبيل المثال ، تنشيط الطبقات المخفية داخل الوحدة. مفاتيحها وقيمها تعتمد على الوحدة النمطية. يوصى بوضع بادئة للمفاتيح التي تعتمد على البنية مع اسم معماري (على سبيل المثال ، لتجنب الخلط بين الطبقة المتوسطة "InceptionV3/Mixed_5c" والطبقة التلافيفية الأعلى "InceptionV2/Mixed_5c" ).

تصنيف الصور

ملخص الاستخدام

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

تحتوي الوحدة النمطية لاستخراج ميزة الصورة على توقيع افتراضي يقوم بتعيين مجموعة من الصور إلى مجموعة من السجلات. يمكن استخدامه على النحو التالي:

  module_spec = hub.load_module_spec("path/to/module")
  height, width = hub.get_expected_image_size(module_spec)
  images = ...  # A batch of images with shape [batch_size, height, width, 3].
  module = hub.Module(module_spec)
  logits = module(images)   # A batch with shape [batch_size, num_classes].

كما أنها تحدد التوقيع المسمى المقابل.

مواصفات التوقيع

يتم استدعاء التوقيع المسمى لاستخراج متجهات معالم الصورة كـ

  outputs = module(dict(images=images), signature="image_classification",
                   as_dict=True)
  logits = outputs["default"]

الإدخال يتبع العرف العام لإدخال الصور .

يحتوي قاموس المخرجات على إخراج "default" من dtype float32 والشكل [batch_size, num_classes] . batch_size هو نفسه الموجود في الإدخال ، ولكنه غير معروف في وقت إنشاء الرسم البياني. num_classes هو عدد الفئات في التصنيف ، وهو ثابت معروف ومستقل عن حجم الإدخال.

يؤدي تقييم outputs["default"][i, c] إلى الحصول على درجة تتنبأ بعضوية المثال i في الفصل ذي الفهرس c .

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

قد يوفر قاموس المخرجات مزيدًا من المخرجات ، على سبيل المثال ، تنشيط الطبقات المخفية داخل الوحدة. مفاتيحها وقيمها تعتمد على الوحدة النمطية. يوصى بوضع بادئة للمفاتيح التي تعتمد على البنية مع اسم معماري (على سبيل المثال ، لتجنب الخلط بين الطبقة المتوسطة "InceptionV3/Mixed_5c" والطبقة التلافيفية الأعلى "InceptionV2/Mixed_5c" ).

إدخال الصورة

هذا شائع لجميع أنواع وحدات الصور النمطية وتوقيعات الصور.

التوقيع الذي يأخذ مجموعة من الصور كمدخلات يقبلها كموتّر كثيف رباعي الأبعاد من نوع dtype float32 والشكل [batch_size, height, width, 3] التي تكون عناصرها عبارة عن قيم ألوان RGB للبكسل المقيسة إلى النطاق [0 ، 1] . هذا ما تحصل عليه من tf.image.decode_*() متبوعًا بـ tf.image.convert_image_dtype(..., tf.float32) .

تستخدم الوحدة النمطية التي تحتوي على إدخال واحد (أو أساسي واحد) من الصور اسم "images" لهذا الإدخال.

تقبل الوحدة أي batch_size ، وتعيين البعد الأول لـ TensorInfo.tensor_shape بالمقابل على "غير معروف". البعد الأخير ثابت على عدد 3 من قنوات RGB. أبعاد width height ثابتة على الحجم المتوقع للصور المدخلة. (قد يزيل العمل المستقبلي هذا التقييد للوحدات التلافيفية بالكامل.)

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

من أجل التبسيط ، تستخدم وحدات TF-Hub تخطيط channels_last (أو NHWC ) لـ Tensors ، واتركه لمحسن الرسم البياني TensorFlow لإعادة الكتابة إلى channels_first (أو NCHW ) إذا لزم الأمر. لقد كان يفعل ذلك افتراضيًا منذ الإصدار 1.7 من TensorFlow.