স্যাটেলাইট এম্বেডিংগুলি স্ট্যান্ডার্ড রিমোট সেন্সিং ক্লাসিফিকেশন ওয়ার্কফ্লোগুলির জন্য ব্যবহার করা যেতে পারে। এম্বেডিংগুলি বিশেষভাবে কম-শট শেখার ক্ষেত্রে উৎকর্ষের জন্য ডিজাইন করা হয়েছিল, যার অর্থ উচ্চ-মানের শ্রেণীবিভাগের ফলাফল অর্জনের জন্য তুলনামূলকভাবে অল্প সংখ্যক লেবেলযুক্ত ডেটা (মনে করুন 10 থেকে 100 নমুনা) প্রয়োজন। যেহেতু এমবেডিং এর মধ্যে রয়েছে বর্ণালী, স্থানিক এবং অস্থায়ী প্রসঙ্গ, সেহেতু সহজ শ্রেণীবিভাগকারী যেমন কে-নিয়ারেস্ট নেবারস (kNN) বা র্যান্ডম ফরেস্ট এম্বেডিং ভেক্টর ব্যবহার করে জটিল ল্যান্ডস্কেপকে টার্গেট ক্লাসে শ্রেণীবদ্ধ করতে পারে।
এই টিউটোরিয়ালে, আমরা শিখব কিভাবে স্যাটেলাইট এমবেডিং ব্যবহার করে ম্যানগ্রোভকে শ্রেণীবদ্ধ করতে kNN ক্লাসিফায়ার ব্যবহার করে একটি তত্ত্বাবধানে শেখার পদ্ধতি ব্যবহার করতে হয়।
একটি অঞ্চল নির্বাচন করুন
আসুন আগ্রহের একটি অঞ্চল সংজ্ঞায়িত করে শুরু করি। এই টিউটোরিয়ালের জন্য, আমরা কেনিয়ার উপকূলরেখা বরাবর একটি অঞ্চল বেছে নেব এবং একটি বহুভুজকে জ্যামিতি পরিবর্তনশীল হিসাবে সংজ্ঞায়িত করব। বিকল্পভাবে, আপনি আগ্রহের অঞ্চলের চারপাশে একটি বহুভুজ আঁকতে কোড এডিটরের অঙ্কন সরঞ্জামগুলি ব্যবহার করতে পারেন যা আমদানিতে জ্যামিতি পরিবর্তনশীল হিসাবে সংরক্ষণ করা হবে।
var geometry = ee.Geometry.Polygon([[
[39.4926, -4.39833],
[39.4926, -4.47394],
[39.5491, -4.47394],
[39.5491, -4.39833]
]]);
চিত্র: ম্যানগ্রোভ শ্রেণীবিভাগের জন্য আগ্রহের এলাকা নির্বাচন করা
প্রশিক্ষণের নমুনা সংগ্রহ করুন
স্যাটেলাইট এম্বেডিংয়ের সাথে শ্রেণীবিভাগের কর্মপ্রবাহের জন্য অপেক্ষাকৃত সঠিক ফলাফল অর্জনের জন্য শুধুমাত্র কয়েকটি লেবেলযুক্ত নমুনা প্রয়োজন। আমাদের ল্যান্ডকভার শ্রেণীবিভাগের জন্য, প্রশিক্ষণের নমুনাগুলি তৈরি করতে পয়েন্ট ড্রপ করা এবং আর্থ ইঞ্জিনে লেবেল করা সবচেয়ে সহজ। আমরা একটি 3-শ্রেণীর শ্রেণীবিভাগ তৈরি করব যা স্যাটেলাইট এমবেডিং থেকে প্রতিটি পিক্সেলকে নিম্নলিখিত তিনটি শ্রেণীর একটিতে শ্রেণীবদ্ধ করবে:
ল্যান্ডকভার ক্লাস | বর্ণনা | শ্রেণী মান |
---|---|---|
ম্যানগ্রোভস | লবণ-সহনশীল উপকূলীয় গাছপালা সব প্রজাতি | 1 |
জল | সমস্ত পৃষ্ঠের জল - হ্রদ, পুকুর, নদী, মহাসাগর ইত্যাদি। | 2 |
অন্যান্য | অন্যান্য সমস্ত পৃষ্ঠ - নির্মিত, উন্মুক্ত মাটি, বালি, ফসল, গাছ ইত্যাদি সহ। | 3 |
পয়েন্টগুলিকে সঠিকভাবে লেবেল করতে আমাদের সক্ষম করতে, আমরা প্রথমে একটি সেন্টিনেল-2 ক্লাউড-মুক্ত যৌগ তৈরি করি এবং এটি লোড করি। আমরা একটি মিথ্যা-রঙের ভিজ্যুয়ালাইজেশন বেছে নিই যা জল, গাছপালা এবং নির্মিত পৃষ্ঠতলের মধ্যে পার্থক্যকে হাইলাইট করে, যা আমাদের সহজেই উপযুক্ত নমুনা বাছাই করতে দেয়।
// Pick a year for classification
var year = 2020;
var startDate = ee.Date.fromYMD(year, 1, 1);
var endDate = startDate.advance(1, 'year');
// Create a Sentinel-2 composite for the selected year
// for selecting training samples
var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED');
var filteredS2 = s2
.filter(ee.Filter.date(startDate, endDate))
.filter(ee.Filter.bounds(geometry));
// Use the Cloud Score+ collection for cloud masking
var csPlus = ee.ImageCollection('GOOGLE/CLOUD_SCORE_PLUS/V1/S2_HARMONIZED');
var csPlusBands = csPlus.first().bandNames();
var filteredS2WithCs = filteredS2.linkCollection(csPlus, csPlusBands);
function maskLowQA(image) {
var qaBand = 'cs';
var clearThreshold = 0.6;
var mask = image.select(qaBand).gte(clearThreshold);
return image.updateMask(mask);
}
var filteredS2Masked = filteredS2WithCs
.map(maskLowQA)
.select('B.*');
// Create a median composite of cloud-masked images
var composite = filteredS2Masked.median();
// Display the input composite
var swirVis = {min: 300, max: 4000, bands: ['B11', 'B8', 'B4']};
Map.centerObject(geometry);
Map.addLayer(composite.clip(geometry), swirVis, 'S2 Composite (False Color)');
চিত্র: সেন্টিনেল-2 মিথ্যা রঙের সংমিশ্রণ
আমাদের কাছে এখন লক্ষ্য বছরের থেকে একটি রেফারেন্স চিত্র রয়েছে যা শ্রেণীবিভাগের জন্য নমুনাগুলিকে লেবেল করতে ব্যবহার করা যেতে পারে। প্রথমত, আমরা নমুনা সংগ্রহের জন্য স্তরগুলি কনফিগার করব। জ্যামিতি আমদানি বিভাগটি খুলুন এবং + নতুন স্তরে ক্লিক করুন।
চিত্র: একটি নতুন স্তর তৈরি করা
নতুন লেয়ারের পাশে Edit Layer Properties (Gear Icon) এ ক্লিক করুন এবং নিচের মত করে কনফিগার করুন। mangroves
হিসাবে স্তরের নাম লিখুন এবং FeatureCollection
ধরণটি পরিবর্তন করুন। + সম্পত্তিতে ক্লিক করুন এবং মান 1
সহ একটি নতুন সম্পত্তি landcover
যোগ করুন। রঙ পরিবর্তন করে সবুজের শেড হতে ওকে ক্লিক করুন।
চিত্র: ম্যানগ্রোভ স্তরের জন্য স্তর বৈশিষ্ট্য কনফিগার করা
একইভাবে, অন্যান্য ক্লাসের জন্য 2টি নতুন স্তর যোগ করুন। জলের জন্য landcover
মান 2
এবং অন্যের জন্য 3
ব্যবহার করুন।
চিত্র: (বাম) জল এবং (ডান) অন্যান্য স্তরগুলির জন্য স্তর বৈশিষ্ট্যগুলি কনফিগার করা
স্তরগুলি কনফিগার হয়ে গেলে, আমরা নমুনা সংগ্রহ শুরু করতে পারি। একটি অঞ্চলে জুম ইন করুন এবং দৃশ্যত বিভিন্ন শ্রেণীর পিক্সেল সনাক্ত করুন। mangroves
স্তর নির্বাচন করুন এবং ম্যানগ্রোভ বনের পিক্সেলগুলিতে পয়েন্ট ড্রপ করার জন্য একটি মার্কার টুল ব্যবহার করুন, যা আমাদের মিথ্যা-রঙের সেন্টিনেল -2 সংমিশ্রণে মধ্য-টোনযুক্ত সবুজ হিসাবে প্রদর্শিত হয় (এবং আপনি রেফারেন্সের জন্য স্যাটেলাইট বেসম্যাপ ভিউও পরীক্ষা করতে পারেন)। Satellite এমবেডিং ডেটাসেটের সাথে শ্রেণীবদ্ধ করার সময় আপনার অনেক পয়েন্টের প্রয়োজন নেই; বরং আপনার আগ্রহের অঞ্চলের মধ্যে পরিবর্তনশীলতার প্রতিনিধিত্ব করে এমন উচ্চ-মানের উদাহরণ নির্বাচন করা আরও গুরুত্বপূর্ণ। এই টিউটোরিয়ালের জন্য, 10 টি নমুনার একটি সেট যথেষ্ট হওয়া উচিত।
চিত্র: ম্যানগ্রোভ শ্রেণীর জন্য নমুনা সংগ্রহ করা
এর পরে, water
স্তরে যান এবং পৃষ্ঠের জলের পিক্সেলগুলির জন্য নমুনা সংগ্রহ করুন, যা খোলা জলের জন্য SWIR ব্যান্ডগুলির শক্তিশালী শোষণের কারণে আমাদের সেন্টিনেল-2 সংমিশ্রণে প্রায় কালো দেখায়। other
স্তরের জন্য প্রক্রিয়াটি পুনরাবৃত্তি করুন, এর উদাহরণ নির্বাচন করুন স্পষ্টতই mangrove
বা water
নয়।
চিত্র: জল এবং অন্যান্য শ্রেণীর জন্য নমুনা সংগ্রহ
প্রশিক্ষণের নমুনা সংগ্রহ এখন সম্পূর্ণ। আমরা তিনটি পৃথক বৈশিষ্ট্য সংগ্রহকে গ্রাউন্ড কন্ট্রোল পয়েন্ট (gcps) এর একক সংগ্রহে একত্রিত করতে পারি।
var gcps = mangroves.merge(water).merge(other);
একটি ক্লাসিফায়ার প্রশিক্ষণ
আমরা এখন একটি ক্লাসিফায়ার প্রশিক্ষণের জন্য প্রস্তুত। আমরা স্যাটেলাইট এমবেডিং ডেটাসেট লোড করি, আমাদের নির্বাচিত বছর এবং আগ্রহের অঞ্চলের জন্য টাইলস ফিল্টার করি, একটি মোজাইক তৈরি করি এবং তারপর একটি প্রশিক্ষণ ডেটাসেট তৈরি করতে এমবেডিং ভেক্টরের নমুনা করি।
var embeddings = ee.ImageCollection('GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL');
var embeddingsFiltered = embeddings
.filter(ee.Filter.date(startDate, endDate))
.filter(ee.Filter.bounds(geometry));
var embeddingsImage = embeddingsFiltered.mosaic();
// Overlay the samples on the image to get training data.
var training = embeddingsImage.sampleRegions({
collection: gcps,
properties: ['landcover'],
scale: 10
});
print('Training Feature', training.first());
প্রশিক্ষণ বৈশিষ্ট্যগুলিতে ইনপুট বৈশিষ্ট্য হিসাবে এমবেডিং ভেক্টর এবং শ্রেণি সম্পত্তি হিসাবে সম্পর্কিত লেবেল রয়েছে। আমরা এখন এই নিষ্কাশিত বৈশিষ্ট্যগুলির সাথে একটি শ্রেণিবদ্ধকারীকে প্রশিক্ষণ দিতে পারি। আমরা আর্থ ইঞ্জিনে উপলব্ধ বিভিন্ন শ্রেণিবিন্যাস থেকে বেছে নিতে পারি। লো-শট শ্রেণীবিভাগের জন্য একটি ভাল পছন্দ (আমাদের উদাহরণের মতো খুব কম সংখ্যক উদাহরণ ব্যবহার করে শ্রেণীবিভাগ), হ'ল কে-নেয়ারেস্ট নেবারস (কেএনএন)। একটি kNN শ্রেণীবিভাগে, লেবেলযুক্ত উদাহরণগুলি "পার্টিশন" বা এমবেডিং স্পেস ক্লাস্টার করতে ব্যবহৃত হয়, এমবেডিং স্পেসে তার নিকটতম প্রতিবেশীর(গুলি) লেবেলের উপর ভিত্তি করে প্রতিটি পিক্সেলের জন্য একটি লেবেল বরাদ্দ করে৷ আমাদের প্রশিক্ষণের ডেটা দিয়ে একটি kNN ক্লাসিফায়ারকে প্রশিক্ষণ দেওয়া যাক।
var classifier = ee.Classifier.smileKNN().train({
features: training,
classProperty: 'landcover',
inputProperties: embeddingsImage.bandNames()
});
স্যাটেলাইট এমবেডিং মোজাইক শ্রেণীবদ্ধ করুন
আমরা এখন স্যাটেলাইট এমবেডিং মোজাইকের সমস্ত পিক্সেলে ক্লাসের পূর্বাভাস দিতে প্রশিক্ষিত ক্লাসিফায়ার ব্যবহার করতে পারি।
var classified = embeddingsImage.classify(classifier);
একটি সম্পদে শ্রেণীবদ্ধ ছবি রপ্তানি করুন (ঐচ্ছিক)
আপনি যদি একটি বৃহৎ অঞ্চলকে শ্রেণীবদ্ধ করার চেষ্টা করছেন, তাহলে আর্থ ইঞ্জিনের ইন্টারেক্টিভ কম্পিউটিং পরিবেশে যা অনুমোদিত তার চেয়ে বেশি সময় প্রয়োজন। ব্যাচ কম্পিউটিং এনভায়রনমেন্টের লিভারেজ করার জন্য মধ্যবর্তী ফলাফল রপ্তানি করা একটি ভাল অভ্যাস যার টাস্ক এক্সিকিউশনের জন্য দীর্ঘ সীমা রয়েছে এবং আরও সংস্থান রয়েছে। এটি বৃহৎ অঞ্চলের সাথে কাজ করার সময় গণনার সময় শেষ হওয়া বা ব্যবহারকারীর মেমরির ত্রুটি অতিক্রম করতে সহায়তা করে। ক্লাসিফাইড ইমেজ এক্সপোর্ট করা যাক.
// Replace this with your asset folder
// The folder must exist before exporting
var exportFolder = 'projects/spatialthoughts/assets/satellite_embedding/';
var classifiedExportImage = 'mangrove_classification';
var classifiedExportImagePath = exportFolder + classifiedExportImage;
Export.image.toAsset({
image: classified.clip(geometry),
description: 'Classified_Image_Export',
assetId: classifiedExportImagePath,
region: geometry,
scale: 10,
maxPixels: 1e10
});
রপ্তানি কাজগুলি শুরু করুন এবং আরও এগিয়ে যাওয়ার আগে এটি শেষ হওয়ার জন্য অপেক্ষা করুন৷ এক্সপোর্ট টাস্ক শেষ হয়ে গেলে, আমরা আবার আমাদের কোডে ক্লাসিফাইড ইমেজ ইমপোর্ট করি।
// Use the exported asset
var classified = ee.Image(classifiedExportImagePath);
শ্রেণিবিন্যাসটি কল্পনা করুন
আপনি আপনার শ্রেণীবিভাগ ইন্টারেক্টিভভাবে চালান বা কোনো সম্পদে রপ্তানি করুন না কেন, আপনার শ্রেণীবিভাগের ফলাফলের সাথে আপনার এখন একটি শ্রেণীবদ্ধ পরিবর্তনশীল থাকবে।
// Choose a 3-color palette
// Assign a color for each class in the following order
// Mangrove, Water, Other
var palette = ['green', 'blue', 'gray'];
Map.addLayer(
classified.clip(geometry),
{min: 1, max: 3, palette: palette},
'Classified Satellite Embeddings Image');
চিত্র: শ্রেণীবদ্ধ স্যাটেলাইট এম্বেডিং চিত্র
একটি ম্যানগ্রোভ মানচিত্র তৈরি করুন
আমরা 3টি ক্লাস সহ একটি শ্রেণিবদ্ধ চিত্র তৈরি করেছি। একটি ম্যানগ্রোভ মানচিত্র তৈরি করতে আমরা ম্যানগ্রোভ (শ্রেণী 1) হিসাবে শ্রেণীবদ্ধ পিক্সেলগুলি বের করতে পারি।
// Extract mangroves class
var mangrovesImage = classified.eq(1).selfMask();
var mangroveVis = {min: 0, max: 1, palette: ['green']};
Map.addLayer(mangrovesImage.clip(geometry),
mangroveVis, 'Mangroves Map (Satellite Embedding Classification)');
চিত্র: ম্যানগ্রোভস মানচিত্র
ফলাফল যাচাই
আমাদের ফলাফল মূল্যায়ন করতে, আমরা একটি উচ্চ-মানের পিয়ার-পর্যালোচিত ডেটাসেটের সাথে তাদের তুলনা করতে পারি: গ্লোবাল ম্যানগ্রোভ ওয়াচ । এই ডেটাসেটটি JAXA থেকে এল-ব্যান্ড সিন্থেটিক অ্যাপারচার রাডার (SAR) থেকে নেওয়া হয়েছে এবং 1996-2020 সাল পর্যন্ত বার্ষিক ম্যানগ্রোভ মানচিত্র রয়েছে। এই ডেটাসেটটি GEE কমিউনিটি ক্যাটালগে পাওয়া যায়, তাই আমরা সহজেই এটিকে আর্থ ইঞ্জিনে লোড এবং কল্পনা করতে পারি।
var gmw = ee.ImageCollection(
'projects/earthengine-legacy/assets/projects/sat-io/open-datasets/' +
'GMW/extent/GMW_V3');
var gmwFiltered = gmw
.filter(ee.Filter.date(startDate, endDate))
.filter(ee.Filter.bounds(geometry));
var gmwImage = gmwFiltered.first();
Map.addLayer(gmwImage.clip(geometry),
mangroveVis, 'Mangroves (Global Mangrove Watch)');
চিত্র: (বাম) স্যাটেলাইট এম্বেডিং থেকে ম্যানগ্রোভ মানচিত্র (ডান) GMW থেকে ম্যানগ্রোভ মানচিত্র
লক্ষ্য করুন যে বিশ্বব্যাপী ম্যানগ্রোভ ঘড়ির ফলাফল এবং স্যাটেলাইট এমবেডিং ডেটাসেটের লো-শট শ্রেণীবিভাগের আউটপুটের মধ্যে একটি ঘনিষ্ঠ মিল রয়েছে। আপনি যদি বেসম্যাপটি স্যাটেলাইটে স্যুইচ করেন, আপনি দেখতে পাবেন যে স্যাটেলাইট এমবেডিং শ্রেণীবিভাগও বিশ্বব্যাপী ম্যানগ্রোভ ঘড়ির শ্রেণীবিভাগ থেকে অনুপস্থিত ল্যান্ডস্কেপের সূক্ষ্ম বিবরণ ক্যাপচার করেছে।
আর্থ ইঞ্জিন কোড এডিটরে এই টিউটোরিয়ালটির জন্য সম্পূর্ণ স্ক্রিপ্টটি চেষ্টা করুন ।