تهیه لایه تنوع پوشش زمین با eo-learn - قسمت 1
eo-Learn یک کتابخانه پایتون منبع باز است که به عنوان پلی بین ارتباط زمین مشاهده / سنجش از راه دور و اکوسیستم Python برای علم داده و یادگیری ماشین عمل می کند. ما در حال حاضر یک پست وبلاگ اختصاصی در اینجا داریم که شما را به خواندن تشویق می کنید. این کتابخانه از آرایه های بی شماری و هندسه های زیبا به منظور ذخیره و اداره داده های سنجش از دور استفاده می کند. هم اکنون در منبع GitHub ما موجود است و می توانید مستندات بیشتری را در صفحه ReadTheDocs بیابید.
تصویر Sentinel-2 و ماسک پوشیده شده NDVI از منطقه ای در اسلوونی، که در فصل زمستان گرفته شده است.
برای به نمایش گذاشتن آموزش، ما تصمیم گرفتیم خط پردازش چند زمانه خود را برای طبقه بندی استفاده از زمین-پوشش برای جمهوری اسلوونی، با استفاده از داده های سالانه برای سال 2017 ارائه دهیم. روال ممکن است در یک قالب تک پستی کمی آزاردهنده باشد، ما تصمیم گرفته ایم آن را در دو بخش تقسیم کنیم، که در عین حال، ما را مجبور می کند که به سمت آموزش طبقه بندی عجله نکنیم، بلکه ابتدا به درک واقعی داده هایی که داریم برسیم. این کل داستان با یک نمونه نوت بوک Jupyter همراه است که تمام مراحل را در بر می گیرد.
در بخش اول این مجموعه، شما را از طریق روند انتخاب / تقسیم یک منطقه مورد علاقه (AOI) و به دست آوردن اطلاعات مربوطه مانند داده های باند Sentinel-2 و mask های cloud راهنمایی خواهیم کرد. نمونه ای از نحوه اضافه کردن نقشه مرجع رسنری از داده های برداری نیز نشان داده شده است. همه اینها اقدامات لازم برای بدست آوردن نتیجه طبقه بندی معتبر است.
در بخش دوم، ما برای تهیه داده های یادگیری ماشین، داده هایی کار خود را واقعاً انجام خواهیم داد، معرفی می کنیم. این شامل نمونه گیری تصادفی از زیر مجموعه ای از پیکسل های آموزش / تست، فیلتر کردن صحنه هایی که بسیار ابری هستند، انجام درون یابی خطی در بعد زمانی به "پر کردن شکاف ها" و غیره است. وقتی داده ها آماده شدند، ما ابزار طبقه بندی کننده خود را آموزش می دهیم، اعتبار سنجی می کنیم و البته برخی از پلات های زیبا را نشان می دهیم!
تصویر Sentinel-2 و ماسک پوشیده شده NDVI از منطقه در اسلوونی، که در فصل تابستان گرفته شده است.
چارچوب eo-learn اجازه می دهد تا AOI را به تکه های کوچکتر که با منابع محاسباتی محدود پردازش می شوند، تقسیم کند. در این مثال، مرز جمهوری اسلوونی (RS) از زمین طبیعی گرفته شده است، با این حال، AOI با هر اندازه می تواند انتخاب شود. یک بافر به مرز اضافه شد، بنابراین جعبه اتصال RS در نتیجه حدود 250 کیلومتر × 170 کیلومتر مساحت دارد. با استفاده از ژئوپانداها و بسته های پایتون، ابزاری برای تقسیم AOI پیاده سازی کردیم. در این حالت، جعبه محدوده کشور را به 17 در 25 قسمت مساوی تقسیم می کنیم، که منجر به 300 پوند در حدود 1000 در 1000 پیکسل مربع با وضوح 10 متر می شود. انتخاب تقسیم بستگی به میزان منابع موجود دارد، بنابراین خط می تواند بر روی یک دستگاه علمی پر مصرف (با تعداد زیادی پردازنده و یک حافظه بزرگ) و همچنین در لپ تاپ (که ما تمام تلاش خود را می کنیم) انجام دهیم. خروجی این مرحله لیستی از جعبه های محدود کننده است که AOI را پوشش می دهد.
منطقه مورد علاقه (جمهوری اسلوونی) به تکه های کوچکتر تقریباً 1000 در 1000 پیکسل مربع با وضوح 10 متر تقسیم شده است.
به دست آوردن داده های Sentinel با دسترسی آزاد
با استفاده از جعبه های محدوده تکه های خالی، eo-learn امکان بارگیری خودکار داده های تصویر Sentinel را فراهم می کند. در این مثال، باند Sentinel-2 L1C را برای هر پچ برای تاریخهای دستیابی در تقویم سال 2017 بدست می آوریم. با این حال، محصولات Sentinel-2 L2A یا منابع تصویربرداری اضافی (به عنوان مثال Landsat-8، Sentinel-1) به طور مشابه می توانند به خط پردازش اضافه شوند. در حقیقت، استفاده از محصولات L2A ممکن است نتایج طبقه بندی را بهبود بخشد، اما تصمیم گرفتیم از محصولات L1C استفاده کنیم تا این روند در سطح جهانی قابل اجرا باشد. این با استفاده از sentinelhub-py، یک بسته Python که به عنوان بسته بندی خدمات وب Sentinel-Hub OGC عمل می کند، انجام شد. خدمات Sentinel-Hub مبتنی بر اشتراک است، اما حساب های رایگان برای موسسات تحقیقاتی و مبتدیان در دسترس است.
تصاویر با رنگ واقعی از یک وصله واحد در بازه های زمانی مختلف. برخی فریم ها ابری هستند و این نشانگر نیاز به یک ردیاب ابر دارد.
علاوه بر داده های Sentinel ،eo-learn امکان دسترسی یکپارچه به ماسک های ابری و احتمال ابر را فراهم می کند، که با بسته پایتون متن باز s2cloudless تولید شده است. این بسته امکان شناسایی خودکار ابر در تصاویر Sentinel-2 L1C را فراهم می کند و بر اساس طبقه بندی پیکسلی مبتنی بر تک صحنه است.
ماسک های احتمال ابر از یک پچ واحد برای بازه های زمانی مختلف (همان بالا). مقیاس رنگ احتمال یک پیکسل ابری را نشان می دهد، از آبی (احتمال کم) تا زرد (احتمال زیاد).
افزودن داده های مرجع
روش های طبقه بندی نظارت شده به نقشه مرجع یا مختصات زمینی نیاز دارند. اصطلاح دوم نباید به معنای واقعی کلمه در نظر گرفته شود، زیرا نقشه مرجع تقریب صرفاً چیزی است که روی زمین نهفته است. متأسفانه، عملکرد طبقه بندی تا حد زیادی به کیفیت نقشه مرجع بستگی دارد، همانطور که برای بیشتر مشکلات یادگیری ماشین بستگی دارد. نقشه های مرجع معمولاً به عنوان داده های برداری در یک shapefile (به عنوان مثال تهیه شده توسط دولت یا جوامع منبع باز) در دسترس هستند. eo-learn در حال حاضر قابلیت های موجود برای تغییر داده های بردار را به صورت یک ماسک رستری در وصله دارد.
روند تغییر داده های بردار به ماسک های رستری برای یک پچ واحد. تصویر سمت چپ چند ضلعی های طرح بردار ارائه شده را نشان می دهد، در مرکز تصویر ماسک های شکاف تقسیم شده برای هر برچسب روی زمین، به رنگ سیاه و سفید به ترتیب نشانگر نمونه های مثبت و منفی است. تصویر سمت راست ماسک رستری ادغام شده با رنگ های مختلف برای برچسب های مختلف را نشان می دهد.
همه را با هم بگذارید
همه این کارها به عنوان بلوک های ساختاری رفتار می کنند و می توان آنها را در یک گردش کاری عالی قرار داد، که سپس برای هر پچ اجرا می شود. با توجه به تعداد بالقوه زیادی از چنین لکه ها، اتوماسیون خط پردازشی کاملاً مهم است.
# Define the workflow eo_workflow = eolearn.core.LinearWorkflow( | |
add_sentinel2_data, # Sentinel-2 data task | |
add_cloud_mask, # cloud mask task | |
append_ndvi, # calculate ndvi | |
append_ndwi, # calculate ndwi | |
append_norm, # calculate norm | |
add_valid_mask, # add new feature: valid mask | |
add_count_valid, # add new feature: valid counts | |
*reference_task_array, # add an array of tasks for adding each reference label | |
save_task # save to file | |
) |
قطعه کد خط ارائه شده، که برای هر پچ اجرا می شود.
آشنایی با اطلاعات موجود اولین گام هایی است که یک دانشمند داده باید انجام دهد. با استفاده از ماسک های ابری بر روی داده های تصویر Sentinel-2، به عنوان مثال می توانید تعداد مشاهدات معتبر را برای همه پیکسل ها یا حتی میانگین احتمال ابر در یک منطقه تعیین کنید. این بینش عمیق تری از داده ها ایجاد می کند، که در صورت رفع مشکلات اجتناب ناپذیر بعداً در خط دستور مفید واقع می شود.
تصویر رنگی واقعی (سمت چپ)، نقشه شمارش پیکسل های معتبر برای سال 2017 (مرکز)، و نقشه میانگین احتمال ابر در سال 2017 (سمت راست) برای یک پچ تصادفی در AOI.
حتی ممکن است فرد بعد از فیلتر کردن ابرها به میانگین NDVI در یک منطقه علاقه داشته باشد. این کار به راحتی با اعمال ماسک های ابری در مناطق و محاسبه میانگین هر ویژگی فقط برای پیکسل های معتبر انجام می شود. با استفاده از ماسک های ابری قادر به پاک کردن ویژگی ها هستیم و نقش آنها را در مرحله طبقه بندی مهم تر می کنیم.
میانگین NDVI تمام پیکسل ها در یک تکه تصادفی در طول سال. خط آبی نتیجه را با استفاده از فیلتر ابر اعمال می کند، در حالی که خط نارنجی محاسبه را با ابرهایی که در نظر گرفته می شود نشان می دهد.
اما، آیا این مقیاس خواهد بود؟
پس از اتمام راه اندازی تک پچ، تنها کاری که باقی مانده است اینست که اجازه دهیم eo-learn به طور خودکار تمام مراحل را به صورت خودکار انجام دهد و اگر منابع اجازه می دهند به صورت موازی، در حالی که شما با یک فنجان قهوه استراحت می کنید و به این فکر می کنید که چگونه رئیس بزرگ از این همه کارهایی که انجام داده اید تحت تأثیر قرار می گیرد. پس از اتمام کار و دستگاه شما می تواند نفس بکشد، می توان داده های مورد علاقه را به تصاویر GeoTIFF صادر کرد. اسکریپت gdal_merge.py سپس این تصاویر را می گیرد، همه آنها را حاکم می کند، آنها را گرد هم می آورد، و در شبکه آنها را به ایجاد یک نتیجه در سطح کشور متصل می کند.
تعداد مشاهدات معتبر Sentinel-2 برای این AOI در سال 2017. مناطقی که تعداد اعداد بالاتر دارند مناطقی هستند که بخش های Sentinel-2A و B با هم همپوشانی دارند، در حالی که این اتفاق در قسمت میانی AOI رخ نمی دهد.
در تصویر بالا می بینیم که در طول سال دو برابر پیکسل معتبر در لبه های چپ / راست AOI وجود دارد، به دلیل وجود تکان های همپوشانی Sentinel-2A و B. که این باعث می شود ورودی ما ناهمگن باشد، به این معنی که برای یکپارچه سازی ورودی خود باید اقداماتی انجام دهیم، مانند انجام درون یابی در بعد زمانی.
اجرای خط دستور ارائه شده به صورت متوالی در هر پچ حدود 140 ثانیه طول می کشد و 12 ساعت پوند برای اجرای فرایند در کل AOI است. کل AOI از حدود 300 لکه متشکل از مساحت 20،000 کیلومتر مربع تشکیل شده است. بیشتر این زمان صرف دانلود داده های تصویر Sentinel-2 می شود. به طور متوسط یک پچ فشرده نشده با تنظیمات شرح داده شده حدود 3 گیگابایت فضای ذخیره سازی طول می کشد، و در کل 1 AB ذخیره سازی برای کل AOI است. اگر منابع اجازه دهند، اعمال فرایند روی چندین پردازنده نیز امکان پذیر است، که باید باعث کاهش مصرف کلی وقت برنامه شود.
یک نمونه نوت بوک Jupyter
برای اینکه شما را به راحتی در کد یeo-learn غوطه ور شوید، نمونه ای را تهیه کرده ایم که مطالب مورد بحث در این پست را پوشش می دهد. مثال در نوت بوک مفید Jupyter نوشته شده است و می توانید آن را در فهرست نمونه های بسته Eo Learn بیابید.
شناسه تلگرام مدیر سایت: SubBasin@
نشانی ایمیل: behzadsarhadi@gmail.com
(سوالات تخصصی را در گروه تلگرام ارسال کنید)
_______________________________________________________
نظرات (۰)