توقّعات الصور

توفّر أداة Earth Engine ee.Model كموصّل للنماذج المستضافة على Vertex AI. يُرسِل هذا الموصِّل بيانات الصور أو الجداول كطلبات توقّعات على الإنترنت إلى نموذج مدرَّب تم نشره على نقطة نهاية Vertex AI. بعد ذلك، يتم عرض نواتج النموذج كصور أو جداول في Earth Engine.

ee.Model.predictImage

استخدِم model.predictImage() لوضع توقّعات بشأن ee.Image باستخدام ملف نموذج مستضاف. يتم استخدام ee.Image لإنشاء مربّعات (جزء من الصورة) من النطاقات التي يتم إرسالها بعد ذلك إلى النموذج المستضاف. نوع الإرجاع لـ predictImage() هو ee.Image يمكن إضافته إلى الخريطة أو تصديره أو استخدامه في عمليات calculation أخرى.

خيارات الإدخال

عند إجراء الاستنتاج باستخدام ee.Image، هناك عدد من المَعلمات المستخدَمة في محوِّل ee.Model. هذه عناصر التحكّم مخصّصة لنطاقات الإدخال و خصائصها، وتجميع قطع الصورة المدخلة، وحجم قطعة الصورة الناتجة، ونطاقات الصورة الناتجة.

النطاقات والمواقع

لتحديد نطاقات الإدخال والسمات، استخدِم المَعلمات التالية:

inputProperties

inputProperties هي قائمة بأسماء المواقع التي سيتم توجيهها إلى كل مثيل توقّع. تتوفّر السمات الرقمية والسلاسل والقيم المنطقية.

inputTypeOverride

inputTypeOverride هو قاموس بأسماء المواقع أو النطاقات مع تقديم معلومات محدّدة عن النوع والسمة. قد يكون ذلك ضروريًا لأنّ العديد من خوارزميات Earth Engine تُنشئ نتائج بأنواع ديناميكية لا يمكن استنتاجها إلا في وقت التشغيل.

على سبيل المثال، إذا كنت تحسب "الانحدار" من خلال ربط الدالة ee.Terrain.slope بمجموعة، عليك تحديد نوع الإخراج "الانحدار" في مدخلات الاستنتاج على النحو التالي:

inputTypeOverride = {
  "slope": {
    "type": "PixelType",
    "precision": "float",
    "dimensions": 0,
    "min": -100.0,
    "max": 100.0
  }
}

ملاحظة: إذا ظهرت لك رسالة الخطأ "تعذُّر تحويل نطاق أو خاصية إلى مصفوفة كثيفة"، يمكنك استخدام بديل للنوع لفرض إدخال نوع معيّن.

inputShapes

inputShapes هو قاموس بأسماء النطاقات وشكل مصفوفة البكسل. لإرسال وحدات البكسل التي لها قيمة مصفوفة النموذج بطول أكبر من 1، يجب ضبط الوسيطة inputShapes. تشبه الوسيطة inputTypeOverride ولكنها خاصة بأشكال نطاقات الإدخال لعمليات التوقّعات بالصور. على سبيل المثال، لتشفير ثلاث نطاقات، (1) "ndvi_series" كسلسلة زمنية أحادية الأبعاد تحتوي على 12 قيمة، و(2) "temp" كدالة قياسية، و (3) "patch" كصفيف بكسل ثنائي الأبعاد، استخدِم ما يلي:

inputShapes = {
  "ndvi_series": [12],  # 12 ndvi samples
  "temp": [], # scalar
  "patch": [2, 2], # 2px * 2px patch
}

outputBands

outputBands هو قاموس بأسماء نطاقات الإخراج إلى عنصر يحتوي على ee.PixelType وسمات النطاق. يجب أن تكون الأبعاد هنا مثل طول صفيف شكل المتجه. بعبارة أخرى، يجب أن تحتوي البيانات السلّسلية التي لها شكل () على السمة 0، ويجب أن تحتوي البيانات ذات الأبعاد الواحدة التي لها شكل (N) على السمات 1، ويجب أن تحتوي البيانات ذات البعدين التي لها شكل (N, M) على السمات 2. على سبيل المثال، يتم تحديد شريط إخراج باسم "B1" يحتوي على وحدات بكسل ذات قيمة صفيف مع شكل باستخدام ما يلي:

outputBands = {
  'B1': {'type': ee.PixelType.float(), 'dimensions': 1}
}

أحجام المربّعات

يمكنك التحكّم في كيفية تجانب الصورة باستخدام المَعلمات التالية:

  • inputTileSize
  • inputOverlapSize
  • outputTileSize

إدخال أحجام المربّعات

لضبط أحجام مربّعات الإدخال، استخدِم inputTileSize وinputOverlapSize. اضبط هذه المَعلمات من خلال تقديم زوج من قيم عرض المربّع وارتفاعه بالبكسل (على سبيل المثال [32, 32]). يتم تحديد إجمالي حجم الرقعة من خلال إضافة ارتفاعات inputTileSize وoutputTileSize وعرضَيهما.

على سبيل المثال، قد يتوقّع نموذج تحويلي كامل إدخالات بالتنسيق (256 x ‏256 x القنوات). إذا كنا قلقين بشأن تأثيرات الحواف بين نتائج الاستنتاج، يمكننا تجاهل inputOverlapSize[0] بكسل من اليسار واليمين، وinputOverlapSize[1] من أعلى وأسفل كل نتيجة استنتاج. سيؤدي ذلك إلى إجراء المزيد من طلبات التوقّعات لتغطية منطقة التوقّعات بالكامل.

على سبيل المثال، إذا كان نموذجنا يتوقّع (256 x ‏256 x ‏3) وأردنا تجاهل 32 بكسل من الحدود، سنحدّد ما يلي:

ee.Model({
  "endpoint": endpoint,
  "inputTileSize": [192, 192],
  "inputOverlapSize": [64, 64],
  # rest omitted.
}

ملاحظة: يشير الرمز inputOverlapSize إلى التداخل التام بين x وy. إذا كنت تريد أن يكون لديك مساحة تخزين بحجم N بكسل حول الصورة بأكملها، سيكون التداخل [2N, 2N]

حجم مربّعات الإخراج

لضبط حجم مربّع الإخراج، اضبط الوسيطة outputTileSize. في حال عدم ضبط outputTileSize، يكون حجم المربّع التلقائي مطابقًا ل inputTileSize.

في بعض الطُرز، قد يختلف حجم الإخراج عن حجم الإدخال. على سبيل المثال، قد يقبل نموذج التصنيف مدخلات بالتنسيق (256، 256، القنوات)، ولكن يعرض مصفوفات ذات الشكل (1، 1، 1). في هذه الحالة، يجب ضبط القيمة outputTileSize على [1, 1]. وهذا شائع إلى حدٍ ما في النماذج التي تعرض احتمالية (بدرجة دقة منخفضة) لبعض سمات الفسيفساء.

الإسقاط

ستتوقع جميع النماذج التوليدية تقريبًا إدخال إسقاط ثابت. ويعود سبب ذلك إلى أنّ معظم النماذج التجميعية يتم تدريبها على مقياس ثابت. في هذه الحالة، اضبط المَعلمة fixInputProj على true في طلبك إلى ee.Model.fromVertexAi() وحدِّد إسقاط البيانات في المَعلمة proj.

ستؤثّر إسقاطات الصورة المُدخلة والإسقاط الثابت للنموذج في قيم الإخراج. راجِع دليل إعادة الإسقاط في تقنية العرض الإلكتروني.