ছবির প্রেডিকশন

Earth Engine ee.Model-কে Vertex AI-তে হোস্ট করা মডেলের কানেক্টর হিসেবে প্রদান করে। এই কানেক্টর, Vertex AI এন্ডপয়েন্টে ডিপ্লয় করা কোনও ট্রেনড মডেলে অনলাইন প্রেডিকশন অনুরোধ হিসেবে ছবি বা টেবিল ডেটা পাঠায়। মডেল আউটপুটগুলি তারপর Earth Engine ছবি বা টেবিল হিসাবে ফেরত দেওয়া হয়।

ee.Model.predictImage

হোস্ট করা মডেল ব্যবহার করে ee.Image-এ ভবিষ্যদ্বাণী করতে model.predictImage() ব্যবহার করুন। ee.Image-এর মাধ্যমে ব্যান্ডের টাইল (ইমেজ প্যাচ) তৈরি করা হয়, যা হোস্ট করা মডেলে পাঠানো হয়। predictImage()-এর রিটার্ন টাইপ হল একটি ee.Image যা ম্যাপে যোগ করা, এক্সপোর্ট করা বা অন্যান্য গণনায় ব্যবহার করা যেতে পারে।

ইনপুট বিকল্প

ee.Image-এ ইনফারেন্স পারফর্ম করার সময় ee.Model কানেক্টরে অনেক প্যারামিটার ব্যবহার করা হয়। এই কন্ট্রোলগুলি ইনপুট ব্যান্ড এবং প্রপার্টি, ইনপুট ইমেজ প্যাচ টাইলিং, আউটপুট ইমেজ প্যাচ সাইজ এবং আউটপুট ইমেজ ব্যান্ডের জন্য।

ব্যান্ড ও প্রপার্টি

ইনপুট ব্যান্ড ও প্রপার্টি নির্দিষ্ট করতে নিম্নলিখিত প্যারামিটার ব্যবহার করুন:

inputProperties

inputProperties হল প্রপার্টির নামের তালিকা যা প্রতিটি পূর্বাভাসের ইনস্ট্যান্সে ফরওয়ার্ড করতে হবে। নিউমেরিক, স্ট্রিং ও বুলিয়ান প্রপার্টি কাজ করে।

inputTypeOverride

inputTypeOverride হল নির্দিষ্ট ধরন ও ডাইমেনশন সংক্রান্ত তথ্য সহ প্রপার্টি এবং/অথবা ব্যান্ডের নামের ডিকশনারি। এটি প্রয়োজনীয় হতে পারে কারণ অনেক Earth Engine অ্যালগরিদম ডাইনামিক টাইপ সহ আউটপুট তৈরি করে যা রানটাইম পর্যন্ত অনুমান করা যায় না।

যেমন, আপনি যদি ee.Terrain.slope ফাংশনটি একটি কালেকশনের উপর ম্যাপ করে "slope" গণনা করেন, তাহলে আপনাকে আমাদের ইনফারেন্স ইনপুটে "slope"-এর আউটপুট টাইপ নির্দিষ্ট করতে হবে, যেমন:

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

পরামর্শ: আপনি যদি কোনও ব্যান্ড বা প্রপার্টি "টেনসরে কনভার্ট করা যাবে না" সংক্রান্ত সমস্যার মেসেজ দেখতে পান, তাহলে সম্ভাব্য সমাধান হল ইনপুটকে নির্দিষ্ট টাইপে কনভার্ট করতে টাইপ ওভাররাইড ব্যবহার করা।

inputShapes

inputShapes হল ব্যান্ড নাম ও অ্যারে-পিক্সেল আকারের ডিকশনারি। আপনার মডেলকে ১-এর বেশি দৈর্ঘ্যের অ্যারে-ভ্যালুড পিক্সেল পাঠাতে, inputShapes আর্গুমেন্ট সেট করুন। আর্গুমেন্টটি inputTypeOverride-এর মতো হলেও এটি ছবির পূর্বাভাসের জন্য ইনপুট ব্যান্ড শেপের ক্ষেত্রে নির্দিষ্ট। যেমন, তিনটি ব্যান্ড এনকোড করতে, (১) "ndvi_series" ১২টি ভ্যালু সহ 1D টাইম সিরিজ হিসেবে, (২) "temp" স্কেলার হিসেবে, এবং (৩) "patch" 2D পিক্সেল অ্যারে হিসেবে, নিম্নলিখিতগুলি ব্যবহার করুন:

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

outputBands

outputBands হল আউটপুট ব্যান্ড নামের একটি ডিকশনারি যা একটি অবজেক্টে থাকে, যার মধ্যে ee.PixelType এবং ব্যান্ডের ডাইমেনশন থাকে। এখানে ডাইমেনশন টেনসর শেপ অ্যারের দৈর্ঘ্যের সমান হতে হবে। অন্যভাবে বলতে গেলে, () আকারের স্কেলার ডেটার ডাইমেনশন ০, (N) আকারের 1D ডেটার ডাইমেনশন ১, (N, M) আকারের 2D ডেটার ডাইমেনশন ২ হতে হবে। যেমন, "B1" নামের একটি আউটপুট ব্যান্ড, যার অ্যারে-ভ্যালুড পিক্সেল ও শেপ আছে, সেটি নিম্নলিখিতভাবে উল্লেখ করা হয়:

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

টাইলের সাইজ

নিম্নলিখিত প্যারামিটার ব্যবহার করে আপনি নিয়ন্ত্রণ করতে পারবেন যে কীভাবে ছবি টাইল করা হবে:

  • inputTileSize
  • inputOverlapSize
  • outputTileSize

ইনপুট টাইলের সাইজ

ইনপুট টাইল সাইজ সেট করতে inputTileSize এবং inputOverlapSize ব্যবহার করুন। পিক্সেল (যেমন [32, 32]) হিসেবে টাইল প্রস্থ ও উচ্চতার একটি জোড়া প্রদান করে এই প্যারামিটার সেট করুন। inputTileSize এবং outputTileSize-এর উচ্চতা ও প্রস্থ যোগ করে মোট প্যাচের সাইজ নির্ধারণ করা হয়।

যেমন, একটি সম্পূর্ণ কনভোলিউশনাল মডেল (২৫৬ x ২৫৬ x চ্যানেল) আকারের ইনপুট আশা করতে পারে। অনুমান ফলাফলের মধ্যে এজ এফেক্ট নিয়ে আমরা চিন্তিত হলে, প্রতিটি অনুমান ফলাফলের বাঁদিক ও ডানদিক থেকে inputOverlapSize[0] পিক্সেল এবং উপর ও নিচ থেকে inputOverlapSize[1] পিক্সেল বাদ দিতে পারি। এর ফলে পূর্বাভাস দেওয়ার এলাকা সম্পূর্ণভাবে কভার করার জন্য আরও বেশি পূর্বাভাস কল করা হবে।

যেমন, আমাদের মডেল যদি (২৫৬ x ২৫৬ x ৩) আশা করে এবং আমরা যদি ৩২ বর্ডার পিক্সেল বাদ দিতে চাই, তাহলে আমরা নিম্নলিখিতগুলি উল্লেখ করব:

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

মনে রাখবেন: inputOverlapSize হল মোট x এবং y ওভারল্যাপ। আপনি যদি সম্পূর্ণ ছবির চারপাশে N পিক্সেলের বাফার রাখতে চান, তাহলে ওভারল্যাপ হবে [2N, 2N]

আউটপুট টাইল সাইজ

আউটপুট টাইল সাইজ সেট করতে outputTileSize আর্গুমেন্ট সেট করুন। outputTileSize সেট করা না থাকলে, ডিফল্ট টাইল সাইজ inputTileSize-এর মতো একই হবে।

কিছু মডেলের ক্ষেত্রে আউটপুট সাইজ ইনপুট সাইজের থেকে আলাদা হতে পারে। যেমন, একটি ক্লাসিফিকেশন মডেল (২৫৬, ২৫৬, চ্যানেল) আকারের ইনপুট গ্রহণ করতে পারে, কিন্তু (১, ১, ১) আকারের টেনসর ফেরত দিতে পারে। এই ক্ষেত্রে outputTileSize-কে [1, 1]-এ সেট করতে হবে। এটি সাধারণত সেইসব মডেলের ক্ষেত্রে দেখা যায় যেগুলি কোনও টাইল বৈশিষ্ট্যের সম্ভাবনার আউটপুট (কম রেজোলিউশনে) প্রদান করে।

Projection

প্রায় সব কনভোলিউশনাল মডেল একটি নির্দিষ্ট প্রজেকশনের ইনপুট আশা করবে। এর কারণ হল, বেশিরভাগ কনভোলিউশনাল মডেলকে একটি নির্দিষ্ট স্কেলে প্রশিক্ষণ দেওয়া হয়। এই ক্ষেত্রে, ee.Model.fromVertexAi()-এ আপনার কলে fixInputProj প্যারামিটারকে true হিসেবে সেট করুন এবং proj প্যারামিটারে ডেটার প্রোজেকশন নির্দিষ্ট করুন।

ইনপুট ছবির প্রোজেকশন এবং মডেলের নির্দিষ্ট প্রোজেকশন আউটপুট ভ্যালুকে প্রভাবিত করবে। EE রিপ্রোজেকশন গাইড দেখুন।