স্যাটেলাইট এমবেডিং ডেটাসেটের ভূমিকা

GitHub এ সম্পাদনা করুন
রিপোর্ট সমস্যা
পৃষ্ঠার ইতিহাস
এই টিউটোরিয়ালটি স্যাটেলাইট এমবেডিং ডেটাসেটের টিউটোরিয়ালের একটি সিরিজের অংশ, এছাড়াও দেখুন Unsupervised Classification , Supervised Classification , Regression and Similarity Search

Google-এর আলফাআর্থ ফাউন্ডেশন হল একটি ভূ-স্থানিক এম্বেডিং মডেল যা বিভিন্ন আর্থ অবজারভেশন (EO) ডেটাসেটের উপর প্রশিক্ষিত। মডেলটি ছবিগুলির বার্ষিক সময়-শ্রেণির উপর চালিত হয়েছে এবং ফলস্বরূপ এমবেডিংগুলি আর্থ ইঞ্জিনে বিশ্লেষণ-প্রস্তুত ডেটাসেট হিসাবে উপলব্ধ। এই ডেটাসেট ব্যবহারকারীদের গণনাগতভাবে ব্যয়বহুল ডিপ লার্নিং মডেল না চালিয়ে যেকোন সংখ্যক ফাইন-টিউনিং অ্যাপ্লিকেশন বা অন্যান্য কাজ তৈরি করতে সক্ষম করে। ফলাফলটি একটি সাধারণ-উদ্দেশ্য ডেটাসেট যা বিভিন্ন ডাউনস্ট্রিম কাজের জন্য ব্যবহার করা যেতে পারে, যেমন

  • শ্রেণীবিভাগ
  • রিগ্রেশন
  • সনাক্তকরণ পরিবর্তন করুন
  • সাদৃশ্য অনুসন্ধান

এই টিউটোরিয়ালে আমরা বুঝব কিভাবে এম্বেডিং কাজ করে এবং শিখব কিভাবে স্যাটেলাইট এমবেডিং ডেটাসেট অ্যাক্সেস ও ভিজ্যুয়ালাইজ করতে হয়।

এম্বেডিং বোঝা

এম্বেডিং হল একটি ছোট বৈশিষ্ট্যের মধ্যে প্রচুর পরিমাণে তথ্য সংকুচিত করার একটি উপায় যা অর্থপূর্ণ শব্দার্থকে উপস্থাপন করে। আলফাআর্থ ফাউন্ডেশন মডেলটি সেন্টিনেল-2, সেন্টিনেল-1 এবং ল্যান্ডস্যাট সহ সেন্সর থেকে সময়ের সিরিজের চিত্র নেয় এবং শুধুমাত্র 64টি সংখ্যার মাধ্যমে উত্স এবং লক্ষ্যগুলির মধ্যে পারস্পরিক তথ্যকে কীভাবে অনন্যভাবে উপস্থাপন করতে হয় তা শিখে ( পেপারে আরও জানুন)। ইনপুট ডেটা স্ট্রীমে একাধিক সেন্সর থেকে হাজার হাজার ইমেজ ব্যান্ড রয়েছে এবং মডেলটি এই উচ্চমাত্রিক ইনপুটটি নেয় এবং এটিকে নিম্ন মাত্রিক উপস্থাপনায় পরিণত করে।

আলফাআর্থ ফাউন্ডেশন কীভাবে কাজ করে তা বোঝার জন্য একটি ভাল মানসিক মডেল হল প্রিন্সিপাল কম্পোনেন্ট অ্যানালাইসিস (PCA) নামক একটি কৌশল। পিসিএ মেশিন লার্নিং অ্যাপ্লিকেশনের জন্য ডেটার মাত্রা কমাতেও সাহায্য করে। যদিও PCA হল একটি পরিসংখ্যানগত কৌশল এবং দশ হাজার ইনপুট ব্যান্ডগুলিকে মুষ্টিমেয় প্রধান উপাদানগুলিতে সংকুচিত করতে পারে, AlphaEarth Foundations হল একটি গভীর-শিক্ষার মডেল যা মাল্টি-সেন্সর টাইম-সিরিজ ডেটাসেটের হাজার হাজার ইনপুট মাত্রা নিতে পারে এবং একটি 64-ব্যান্ড তৈরি করতে শেখে যা অনন্যভাবে টেম্পাটিক্স বা টেম্পাটিক্সের উপস্থাপনাকে ক্যাপচার করে।

একটি এমবেডিং ক্ষেত্র হল অবিচ্ছিন্ন অ্যারে বা শেখা এমবেডিংয়ের "ক্ষেত্র"। এমবেডিং ফিল্ডের সংগ্রহে থাকা ছবিগুলি একটি পুরো বছর কভার করে স্থান-কালের গতিপথ উপস্থাপন করে এবং 64টি ব্যান্ড রয়েছে (প্রতিটি এমবেডিং মাত্রার জন্য একটি)।


চিত্র: এন-ডাইমেনশনাল এমবেডিং ভেক্টর একটি এমবেডিং ফিল্ড থেকে নমুনা করা হয়েছে

স্যাটেলাইট এমবেডিং ডেটাসেট অ্যাক্সেস করুন

স্যাটেলাইট এমবেডিং ডেটাসেট হল একটি ছবি সংগ্রহ যাতে 2017 সাল থেকে বার্ষিক ছবি থাকে (যেমন, 2017, 2018, 2019…)। প্রতিটি ছবিতে 64টি ব্যান্ড রয়েছে যেখানে প্রতিটি পিক্সেল হল প্রদত্ত বছরের জন্য মাল্টি-সেন্সর টাইম-সিরিজের প্রতিনিধিত্বকারী এমবেডিং ভেক্টর।

var embeddings = ee.ImageCollection('GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL');

একটি অঞ্চল নির্বাচন করুন

আসুন আগ্রহের একটি অঞ্চল সংজ্ঞায়িত করে শুরু করি। এই টিউটোরিয়ালটির জন্য, আমরা ভারতের কৃষ্ণ রাজা সাগর (KRS) জলাধারের চারপাশে একটি অঞ্চল বেছে নেব এবং একটি বহুভুজকে জ্যামিতি পরিবর্তনশীল হিসাবে সংজ্ঞায়িত করব। বিকল্পভাবে, আপনি আগ্রহের অঞ্চলের চারপাশে একটি বহুভুজ আঁকতে কোড এডিটরের অঙ্কন সরঞ্জামগুলি ব্যবহার করতে পারেন যা আমদানিতে geometry পরিবর্তনশীল হিসাবে সংরক্ষণ করা হবে।

// Use the satellite basemap
Map.setOptions('SATELLITE');

var geometry = ee.Geometry.Polygon([[
  [76.3978, 12.5521],
  [76.3978, 12.3550],
  [76.6519, 12.3550],
  [76.6519, 12.5521]
]]);

Map.centerObject(geometry, 12);


চিত্র: আগ্রহের অঞ্চল নির্বাচন করা

স্যাটেলাইট এমবেডিং ডেটাসেট প্রস্তুত করুন

প্রতি বছরের ছবি সহজে অ্যাক্সেসের জন্য টাইলগুলিতে বিভক্ত করা হয়। আমরা ফিল্টার প্রয়োগ করি এবং আমাদের নির্বাচিত বছর এবং অঞ্চলের জন্য চিত্রগুলি খুঁজে পাই।

var year = 2024;
var startDate = ee.Date.fromYMD(year, 1, 1);
var endDate = startDate.advance(1, 'year');

var filteredEmbeddings = embeddings
  .filter(ee.Filter.date(startDate, endDate))
  .filter(ee.Filter.bounds(geometry));

স্যাটেলাইট এমবেডিং ইমেজ প্রতিটি 163,840 mx 163,840 মিটার পর্যন্ত টাইলগুলিতে গ্রিড করা হয় এবং টাইলের জন্য UTM জোনের জন্য প্রজেকশনে পরিবেশন করা হয়। ফলস্বরূপ, আমরা একাধিক স্যাটেলাইট এম্বেডিং টাইলস পাই যা আগ্রহের অঞ্চলকে কভার করে। আমরা mosaic() ফাংশনটি ব্যবহার করতে পারি একাধিক টাইলসকে একত্রিত করতে। ব্যান্ডগুলি দেখতে এর ফলে চিত্রটি প্রিন্ট করা যাক।

var embeddingsImage = filteredEmbeddings.mosaic();
print('Satellite Embedding Image', embeddingsImage);

আপনি দেখতে পাবেন যে ছবিটিতে 64টি ব্যান্ড রয়েছে, যার নাম A00, A01, … , A63। প্রতিটি ব্যান্ডে সেই মাত্রা বা অক্ষে প্রদত্ত বছরের জন্য এমবেডিং ভেক্টরের মান থাকে। বর্ণালী ব্যান্ড বা সূচকগুলির বিপরীতে, পৃথক ব্যান্ডগুলির কোনও স্বাধীন অর্থ নেই - বরং, প্রতিটি ব্যান্ড এমবেডিং স্থানের একটি অক্ষকে প্রতিনিধিত্ব করে। আপনি আপনার ডাউনস্ট্রিম অ্যাপ্লিকেশনের জন্য ইনপুট হিসাবে 64 ব্যান্ডের সবকটি ব্যবহার করবেন।


চিত্র: স্যাটেলাইট এমবেডিং ইমেজের 64 ব্যান্ড

স্যাটেলাইট এমবেডিং ডেটাসেট কল্পনা করুন

আমরা এইমাত্র দেখেছি, আমাদের ছবিতে 64 টি ব্যান্ড রয়েছে। সমস্ত ব্যান্ডে থাকা সমস্ত তথ্য কল্পনা করার কোন সহজ উপায় নেই কারণ আমরা একবারে তিনটি ব্যান্ডের সংমিশ্রণ দেখতে পারি।

একটি RGB ইমেজ হিসাবে এমবেডিং স্পেসের তিনটি অক্ষকে কল্পনা করতে আমরা যেকোনো তিনটি ব্যান্ড বেছে নিতে পারি।

var visParams = {min: -0.3, max: 0.3, bands: ['A01', 'A16', 'A09']};
Map.addLayer(embeddingsImage.clip(geometry), visParams, 'Embeddings Image');


চিত্র: এমবেডিং স্পেসের 3টি অক্ষের RGB ভিজ্যুয়ালাইজেশন

এই তথ্যটি কল্পনা করার একটি বিকল্প উপায় হল অনুরূপ এমবেডিং সহ গ্রুপ পিক্সেলগুলিতে এটি ব্যবহার করা এবং মডেলটি কীভাবে একটি ল্যান্ডস্কেপের স্থানিক এবং অস্থায়ী পরিবর্তনশীলতা শিখেছে তা বোঝার জন্য এই গ্রুপিংগুলি ব্যবহার করা।

আমরা 64-মাত্রিক স্থানের পিক্সেলগুলিকে গোষ্ঠী বা অনুরূপ মানের "ক্লাস্টারে" গোষ্ঠীভুক্ত করতে অতত্ত্বাবধান করা ক্লাস্টারিং কৌশল ব্যবহার করতে পারি। এর জন্য, আমরা প্রথমে কিছু পিক্সেল মান নমুনা করি এবং একটি ee.Clusterer প্রশিক্ষণ দিই।

var nSamples = 1000;
var training = embeddingsImage.sample({
  region: geometry,
  scale: 10,
  numPixels: nSamples,
  seed: 100
});
print(training.first());

আপনি যদি প্রথম নমুনার মানগুলি মুদ্রণ করেন, আপনি দেখতে পাবেন এতে 64টি ব্যান্ড মান রয়েছে যা সেই পিক্সেলের জন্য এমবেডিং ভেক্টরকে সংজ্ঞায়িত করে। এমবেডিং ভেক্টরটিকে একটি ইউনিট দৈর্ঘ্যের জন্য ডিজাইন করা হয়েছে (অর্থাৎ, উৎপত্তি (0,0,....0) থেকে ভেক্টরের মান পর্যন্ত ভেক্টরের দৈর্ঘ্য 1 হবে)।


চিত্র: এক্সট্রাক্টেড এমবেডিং ভেক্টর

আমরা এখন নমুনাগুলিকে পছন্দসই সংখ্যক ক্লাস্টারে গোষ্ঠীভুক্ত করার জন্য একটি তত্ত্বাবধানহীন মডেলকে প্রশিক্ষণ দিতে পারি। প্রতিটি ক্লাস্টার অনুরূপ এমবেডিংয়ের পিক্সেল প্রতিনিধিত্ব করবে।

// Function to train a model for desired number of clusters
var getClusters = function(nClusters) {
  var clusterer = ee.Clusterer.wekaKMeans({nClusters: nClusters})
    .train(training);

  // Cluster the image
  var clustered = embeddingsImage.cluster(clusterer);
  return clustered;
};

আমরা এখন বৃহত্তর এমবেডিং ইমেজকে ক্লাস্টার করতে পারি যাতে পিক্সেলের গ্রুপগুলো একই রকম এমবেডিং আছে দেখতে পারি। আমরা এটি করার আগে, এটি বোঝা গুরুত্বপূর্ণ যে মডেলটি বছরের জন্য প্রতিটি পিক্সেলের সম্পূর্ণ টেম্পোরাল ট্র্যাজেক্টোরি ক্যাপচার করেছে - এর মানে যদি দুটি পিক্সেলের সমস্ত ছবিতে একই রকম বর্ণালী মান থাকে তবে বিভিন্ন সময়ে - সেগুলি আলাদা করা যেতে পারে।

নীচে 2024 সালের ক্লাউড-মাস্কড সেন্টিনেল-2 ছবিগুলির দ্বারা ধারণ করা আমাদের আগ্রহের এলাকার একটি ভিজ্যুয়ালাইজেশন রয়েছে। মনে রাখবেন যে সমস্ত ছবি (সেন্টিনেল-2, ল্যান্ডস্যাট 8/9 এবং আরও অনেক সেন্সর থেকে ছবি সহ) চূড়ান্ত এম্বেডিং শিখতে ব্যবহার করা হয়েছে।


চিত্র: আমাদের অঞ্চলের জন্য সেন্টিনেল-2 বার্ষিক সময়-সিরিজ

আসুন ল্যান্ডস্কেপকে ৩টি ক্লাস্টারে ভাগ করে স্যাটেলাইট এমবেডিং ইমেজগুলিকে কল্পনা করি,

var cluster3 = getClusters(3);
Map.addLayer(cluster3.randomVisualizer().clip(geometry), {}, '3 clusters');


চিত্র: 3 টি ক্লাস্টার সহ স্যাটেলাইট এমবেডিং চিত্র

আপনি লক্ষ্য করবেন যে ফলস্বরূপ ক্লাস্টারগুলির খুব পরিষ্কার সীমানা রয়েছে। এর কারণ হল এমবেডিংগুলি অন্তর্নিহিতভাবে স্থানিক প্রসঙ্গ অন্তর্ভুক্ত করে - একই বস্তুর মধ্যে থাকা পিক্সেলগুলিতে তুলনামূলকভাবে অনুরূপ এমবেডিং ভেক্টর থাকবে বলে আশা করা যায়। এছাড়াও, ক্লাস্টারগুলির একটিতে প্রধান জলাধারের চারপাশে মৌসুমী জল সহ এলাকাগুলি অন্তর্ভুক্ত রয়েছে। এটি সাময়িক প্রেক্ষাপটের কারণে যা এমবেডিং ভেক্টরে ক্যাপচার করা হয়েছে যা আমাদের অনুরূপ টেম্পোরাল প্যাটার্ন সহ এই জাতীয় পিক্সেল সনাক্ত করতে দেয়।

আসুন দেখি আমরা পিক্সেলগুলিকে 5 ক্লাস্টারে গ্রুপ করে ক্লাস্টারগুলিকে আরও পরিমার্জন করতে পারি কিনা।

var cluster5 = getClusters(5);
Map.addLayer(cluster5.randomVisualizer().clip(geometry), {}, '5 clusters');


চিত্র: 5 টি ক্লাস্টার সহ স্যাটেলাইট এমবেডিং চিত্র

ক্লাস্টারের সংখ্যা বাড়িয়ে আমরা ছবিগুলিকে আরও বিশেষ গোষ্ঠীতে পরিণত করতে এবং পরিমার্জন করতে পারি৷ 10 টি ক্লাস্টার সহ চিত্রটি দেখতে কেমন তা এখানে।

var cluster10 = getClusters(10);
Map.addLayer(cluster10.randomVisualizer().clip(geometry), {}, '10 clusters');


চিত্র: 10 টি ক্লাস্টার সহ স্যাটেলাইট এমবেডিং চিত্র

সেখানে অনেক বিবরণ উঠে আসছে এবং আমরা দেখতে পাচ্ছি বিভিন্ন ধরনের শস্যকে বিভিন্ন ক্লাস্টারে বিভক্ত করা হচ্ছে। যেহেতু স্যাটেলাইট এম্বেডিং ক্লাইমেটিক ভেরিয়েবলের সাথে ফসলের ফিনোলজি ক্যাপচার করে, তাই এটি ক্রপ টাইপ ম্যাপিংয়ের জন্য উপযুক্ত। পরবর্তী টিউটোরিয়ালে (Unsupervised Classification), আমরা দেখব কিভাবে স্যাটেলাইট এমবেডিং ডেটা সহ সামান্য বা কোন ফিল্ড-লেভেল লেবেল ছাড়াই ক্রপ-টাইপ ম্যাপ তৈরি করা যায়।

আর্থ ইঞ্জিন কোড এডিটরে এই টিউটোরিয়ালটির জন্য সম্পূর্ণ স্ক্রিপ্টটি চেষ্টা করুন