تصنيف الغطاء الأرضي باستخدام التعلم الإلكتروني. الجزء 2

الجزء 1
الجزء 3


الانتقال من البيانات إلى النتائج دون ترك جهاز الكمبيوتر الخاص بك



كومة من الصور لمنطقة صغيرة في سلوفينيا ، وخريطة مع غطاء أرضي تم الحصول عليها باستخدام الطرق الموضحة في المقالة.


مقدمة


الجزء الثاني من سلسلة من المقالات حول تصنيف الغطاء الأرضي باستخدام مكتبة التعلم الإلكتروني. نذكرك أن المقالة الأولى أظهرت ما يلي:


  • تقسيم AOI (مجال الاهتمام) إلى أجزاء تسمى EOPatch
  • تلقي الصور والأقنعة السحابية من الأقمار الصناعية Sentinel-2
  • حساب معلومات إضافية مثل NDWI ، NDVI
  • إنشاء قناع مرجعي وإضافته إلى البيانات المصدر

بالإضافة إلى ذلك ، أجرينا دراسة سطحية للبيانات ، وهي خطوة مهمة للغاية قبل بدء الغوص في التعلم الآلي. تم استكمال المهام المذكورة أعلاه بمثال في شكل دفتر Jupyter ، والذي يحتوي الآن على مواد من هذه المقالة.


في هذه المقالة ، سننتهي من إعداد البيانات ، وكذلك بناء النموذج الأول لبناء خرائط الغطاء الأرضي لسلوفينيا في عام 2017.


إعداد البيانات


مقدار الكود الذي يرتبط مباشرة بالتعلم الآلي صغير جدًا مقارنة بالبرنامج الكامل. تتمثل حصة الأسد في المهمة في مسح البيانات ، والتعامل مع البيانات بطريقة تضمن الاستخدام السلس مع المصنف. سيتم وصف هذا الجزء من العمل أدناه.



يمثل مخطط خط أنابيب التعلم الآلي الذي يوضح أن الشفرة نفسها باستخدام ML جزءًا صغيرًا من العملية برمتها. مصدر


سحابة تصفية الصور


السحب عبارة عن كيانات تظهر عادةً على مقياس يتجاوز متوسط ​​EOPatch لدينا (1000 × 1000 بكسل ، دقة 10 أمتار). هذا يعني أنه يمكن تغطية أي موقع بالكامل بواسطة السحب في تواريخ عشوائية. لا تحتوي هذه الصور على معلومات مفيدة وتستهلك فقط الموارد ، لذلك نقوم بتخطيها استنادًا إلى نسبة البكسلات الصالحة إلى العدد الإجمالي وتعيين حد. يمكننا استدعاء جميع وحدات البكسل غير الصالحة المصنفة على هيئة سحب وتقع داخل صورة ساتلية. نلاحظ أيضًا أننا لا نستخدم الأقنعة المرفقة بصور Sentinel-2 ، نظرًا لأنها محسوبة على مستوى الصور الكاملة (حجم الصورة الكاملة S2 هو 10980 × 10980 بكسل ، حوالي 110 × 110 كم) ، مما يعني أنه ليس هناك حاجة لمعظمنا لـ AOI. لتحديد السحب ، سوف نستخدم الخوارزمية من الحزمة s2cloudless للحصول على قناع بكسل سحابة.


في دفتر الملاحظات الخاص بنا ، تم تعيين العتبة على 0.8 ، لذلك نختار فقط الصور المملوءة بالبيانات العادية بنسبة 80٪. قد يبدو هذا كقيمة عالية جدًا ، ولكن نظرًا لأن السحب ليست مشكلة كبيرة جدًا بالنسبة لمؤسسة AOI الخاصة بنا ، يمكننا تحملها. تجدر الإشارة إلى أنه لا يمكن تطبيق هذا النهج بدون تفكير على أي نقطة على هذا الكوكب ، حيث يمكن تغطية المنطقة التي اخترتها بالغيوم لجزء كبير من السنة.


الاستيفاء الزمني


نظرًا لحقيقة أن الصور قد يتم تخطيها في بعض التواريخ ، وكذلك بسبب تواريخ اقتناء AOI غير المتسقة ، فإن نقص البيانات هو أمر شائع جدًا في مجال مراقبة الأرض. طريقة واحدة لحل هذه المشكلة هي فرض قناع من صلاحية البكسل (من الخطوة السابقة) وإكمال القيم "لملء الثقوب". نتيجة لعملية الاستيفاء ، يمكن حساب قيم البكسل المفقودة لإنشاء EOPatch يحتوي على لقطات في الأيام الموزعة بالتساوي. في هذا المثال ، استخدمنا الاستيفاء الخطي ، ولكن هناك طرق أخرى ، بعضها مطبق بالفعل في التعليم الإلكتروني.



على اليسار يوجد كومة من صور Sentinel-2 من AOI تم اختيارها عشوائيًا. البيكسلات الشفافة تعني فقدان البيانات بسبب السحب. تظهر الصورة على اليمين المكدس بعد الاستيفاء ، مع مراعاة أقنعة السحابة.


المعلومات الزمنية مهمة للغاية في تصنيف الغطاء ، والأهم من ذلك في مهمة تحديد ثقافة تنبت. هذا كله يرجع إلى حقيقة أن كمية كبيرة من المعلومات حول الغطاء الأرضي مخفية في كيفية تغيير المؤامرة على مدار العام. على سبيل المثال ، عند عرض قيم NDVI المحرف ، يمكنك أن ترى أن القيم في الغابات والحقول تصل إلى أقصى حد لها في الربيع / الصيف وتهبط بقوة في الخريف / الشتاء ، في حين أن الأسطح المائية والصناعية تبقي هذه القيم ثابتة تقريبًا على مدار العام. تتميز الأسطح الاصطناعية بقيم NDVI أعلى قليلاً مقارنة بالمياه ، وتكرر جزئيًا تطور الغابات والحقول ، حيث يمكنك في كثير من الأحيان العثور على الحدائق والنباتات الأخرى. يجب أيضًا أن تأخذ في الاعتبار القيود المرتبطة بدقة الصور - غالبًا في المنطقة التي يغطيها بكسل واحد ، يمكنك مراقبة عدة أنواع من التغطية في نفس الوقت.



التطوير الزمني لقيم NDVI للبكسل من أنواع محددة من الغطاء الأرضي على مدار العام


التخزين المؤقت السلبي


على الرغم من أن دقة الصورة التي تبلغ 10 أمتار كافية لمجموعة كبيرة جدًا من المهام ، إلا أن الآثار الجانبية للكائنات الصغيرة مهمة للغاية. توجد مثل هذه الكائنات على الحد الفاصل بين أنواع مختلفة من الغطاء ، ويتم تعيين هذه البكسل لقيم واحدة فقط من الأنواع. لهذا السبب ، عند تدريب المصنف ، توجد ضوضاء زائدة في بيانات الإدخال ، مما يؤدي إلى تفاقم النتيجة. بالإضافة إلى ذلك ، توجد طرق وكائنات أخرى بعرض 1 بكسل على الخريطة الأصلية ، على الرغم من صعوبة التعرف عليها من الصور. نقوم بتطبيق التخزين المؤقت السلبي بمقدار 1 بكسل على الخريطة المرجعية ، مع إزالة جميع مناطق المشكلات تقريبًا من الإدخال.



AOI خريطة مرجعية قبل (يسار) وبعد (يمين) التخزين المؤقت السلبي


اختيار عشوائي للبيانات


كما ذكرنا في مقالة سابقة ، يتم تقسيم AOI الكامل إلى حوالي 300 جزء ، كل منها يتكون من حوالي مليون بكسل. هذا مبلغ مثير للإعجاب من نفس وحدات البكسل هذه ، لذلك نأخذ بالتساوي حوالي 40000 بكسل لكل EOPatch للحصول على مجموعة بيانات من 12 مليون نسخة. نظرًا لأن البيكسلات يتم أخذها بالتساوي ، لا يهم عدد كبير على الخريطة المرجعية ، لأن هذه البيانات غير معروفة (أو فقدت بعد الخطوة السابقة). من المنطقي تصفية هذه البيانات من أجل تبسيط تدريب المصنف ، نظرًا لأننا لسنا بحاجة إلى تعليمها لتحديد تسمية "لا توجد بيانات". يتم تكرار نفس الإجراء لمجموعة الاختبار ، لأن مثل هذه البيانات تتسبب في تحطيم مؤشرات الجودة الخاصة بتنبؤات المصنف.


فصل البيانات وتوليدها


قمنا بتقسيم بيانات الإدخال إلى مجموعات تدريب / اختبار بنسبة 80/20٪ ، على التوالي ، على مستوى EOPatch ، مما يضمن لنا أن هذه المجموعات لا تتقاطع. نقوم أيضًا بتقسيم البيكسلات من مجموعة التدريب إلى مجموعات للاختبار والتحقق المتبادل بنفس الطريقة. بعد الانفصال ، نحصل على مجموعة numpy.ndarray من البعد (p,t,w,h,d) ، حيث:
p هو رقم EOPatch في مجموعة البيانات
t - عدد الصور المحرف لكل EOPatch
* w, h, d - العرض ، الارتفاع ، وعدد الطبقات في الصور ، على التوالي.


بعد تحديد المجموعات الفرعية ، يتوافق العرض w مع عدد البكسل المحدد (على سبيل المثال ، 40،000) ، بينما البعد h هو 1. لا يغير الفرق في شكل المصفوفة أي شيء ، وهذا الإجراء ضروري فقط لتبسيط العمل مع الصور.


تحدد البيانات من المستشعرات والقناع d في أي صورة بيانات الإدخال للتدريب ، حيث يبلغ مجموع هذه الحالات p*w*h . لتحويل البيانات إلى نموذج سهل الهضم بالنسبة إلى المصنف ، يجب علينا تقليل بُعد الصفيف من 5 إلى مصفوفة النموذج (p*w*h, d*t) . من السهل القيام بذلك باستخدام الكود التالي:


 import numpy as np p, t, w, h, d = features_array.shape #   t axis   1   3 features_array = np.moveaxis(features_array, 1, 3) #    features_array = features_array.reshape(p*w*h, t*d) 

مثل هذا الإجراء سوف يجعل من الممكن التنبؤ بالبيانات الجديدة من نفس النموذج ، ثم تحويلها مرة أخرى وتصورها بالوسائل القياسية.


إنشاء نموذج تعلم الآلة


يعتمد الاختيار الأمثل للمصنف بشدة على المهمة المحددة ، وحتى مع الاختيار الصحيح ، يجب ألا ننسى معلمات نموذج معين ، والتي يجب تغييرها من مهمة إلى مهمة. عادة ما يكون من الضروري إجراء العديد من التجارب مع مجموعات مختلفة من المعلمات من أجل أن نقول بدقة ما هو مطلوب في موقف معين.


في هذه السلسلة من المقالات ، نستخدم حزمة LightGBM ، لأنها إطار عمل سهل الاستخدام وسريع وموزع ومنتج لبناء نماذج تعتمد على أشجار القرار. لتحديد بارامترات المصنف ، يمكن للمرء استخدام طرق مختلفة ، مثل البحث في الشبكة ، والتي يجب اختبارها على مجموعة اختبار. للبساطة ، سنقوم بتخطي هذه الخطوة واستخدام المعلمات الافتراضية.



مخطط عمل الأشجار القرار في LightGBM. مصدر


تنفيذ النموذج بسيط للغاية ، وبما أن البيانات تأتي بالفعل في شكل مصفوفة ، فنحن ببساطة نطعم هذه البيانات لمدخلات النموذج وننتظر. تهانينا! الآن يمكنك إخبار الجميع بأنك منخرط في التعلم الآلي ، وسوف تكون الرجل الأكثر أناقة في الحفلة ، في حين أن والدتك ستشعر بالقلق إزاء تمرد الروبوتات وموت البشرية.


التحقق من صحة النموذج


نماذج التدريب في التعلم الآلي سهلة. الصعوبة تكمن في تدريبهم بشكل جيد . لهذا ، نحتاج إلى خوارزمية مناسبة وبطاقة مرجعية موثوق بها وكمية كافية من موارد الحوسبة. لكن حتى في هذه الحالة ، قد لا تكون النتائج هي ما تريد ، لذلك فإن التحقق من المصنف باستخدام مصفوفات الأخطاء والمقاييس الأخرى ضروري للغاية للحصول على بعض الثقة على الأقل في نتائج عملك.


مصفوفة خطأ


مصفوفات الأخطاء هي أول الأشياء التي يجب النظر إليها عند تقييم جودة المصنفات. يعرضون عدد العلامات التي تم التنبؤ بها بشكل صحيح وغير صحيح لكل علامة من البطاقة المرجعية والعكس صحيح. عادة ، يتم استخدام مصفوفة طبيعية ، حيث يتم تقسيم جميع القيم في الأسطر على إجمالي المبلغ. هذا يدل على ما إذا كان المصنف ليس لديه انحياز نحو نوع معين من الغطاء بالنسبة لآخر



مصفوفة خطأ اثنين من تطبيع نموذج المدربين.


بالنسبة لمعظم الفصول ، يُظهر النموذج نتائج جيدة. بالنسبة لبعض الفئات ، تحدث الأخطاء بسبب عدم التوازن في بيانات الإدخال. نرى أن المشكلة هي ، على سبيل المثال ، الشجيرات والمياه ، والتي غالباً ما يربك النموذج تسميات البكسل ويعرفها بشكل غير صحيح. من ناحية أخرى ، فإن ما يتم تمييزه على أنه شجيرة أو ماء يرتبط جيدًا بالخريطة المرجعية. من الصورة التالية ، يمكننا أن نلاحظ أن المشاكل تنشأ في الفصول التي لديها عدد قليل من حالات التدريب - وهذا يرجع بشكل أساسي إلى قلة البيانات في مثالنا ، ولكن يمكن أن تحدث هذه المشكلة في أي مهمة حقيقية.



عدد مرات حدوث وحدات البكسل لكل فصل في مجموعة التدريب.


خاصية تشغيل المستلم - منحنى ROC


يتنبأ المصممون بالتسميات بيقين معين ، لكن يمكن تغيير هذه العتبة لتسمية معينة. يُظهر منحنى ROC قدرة المصنف على عمل تنبؤات صحيحة عند تغيير عتبة الحساسية. عادةً ما يتم استخدام هذا الرسم البياني للأنظمة الثنائية ، ولكن يمكن استخدامه في حالتنا إذا قمنا بحساب العلامة المميزة "ضد كل الفئات الأخرى" لكل فئة. يُظهر المحور السيني نتائج إيجابية خاطئة (نحتاج إلى تقليل عددهم إلى الحد الأدنى) ، ويظهر المحور الصادي نتائج إيجابية حقيقية (نحتاج إلى زيادة عددهم) عند عتبات مختلفة. يمكن وصف المصنف الجيد من خلال منحنى تكون مساحة المنحنى في حدوده القصوى. يُعرف هذا المؤشر أيضًا بالمنطقة الواقعة أسفل المنحنى ، AUC. من الرسوم البيانية لمنحنيات ROC ، يمكن للمرء أن يستخلص نفس الاستنتاجات حول عدد غير كاف من الأمثلة للفئة "الأدغال" ، على الرغم من أن منحنى المياه يبدو أفضل بكثير - وهذا يرجع إلى حقيقة أن المياه بصريًا مختلفة تمامًا عن الفئات الأخرى ، حتى مع وجود عدد غير كاف من الأمثلة في البيانات.



منحنيات ROC الخاصة بالمصنف ، في شكل "واحد ضد الكل" لكل فئة. الأرقام الموجودة بين قوسين هي قيم AUC.


أهمية الأعراض


إذا كنت تريد الخوض في أعمق تعقيدات المصنف ، يمكنك إلقاء نظرة على الرسم البياني لأهمية الميزة ، والذي يخبرنا أي من السمات التي أثرت في النتيجة النهائية أكثر. بعض خوارزميات التعلم الآلي ، مثل تلك التي استخدمناها في هذه المقالة ، تُرجع هذه القيم. بالنسبة للنماذج الأخرى ، يجب مراعاة هذا القياس من قبل أنفسنا.



مصفوفة أهمية خصائص المصنف من المثال


على الرغم من أن العلامات الأخرى في الربيع (NDVI) أكثر أهمية بشكل عام ، فإننا نرى أن هناك تاريخًا محددًا عندما تكون إحدى العلامات (B2 - الأزرق) هي الأكثر أهمية. إذا نظرت إلى الصور ، اتضح أن AOI خلال هذه الفترة كانت مغطاة بالثلوج. يمكن أن نستنتج أن الثلوج تكشف عن معلومات حول الغطاء الأساسي ، مما يساعد المصنف إلى حد كبير على تحديد نوع السطح. تجدر الإشارة إلى أن هذه الظاهرة خاصة بـ AOI المرصودة وبصفة عامة لا يمكن الاعتماد عليها.



غطت الثلوج 3X3 جزء EOPatch AOI


نتائج التنبؤ


بعد التحقق من الصحة ، نفهم بشكل أفضل نقاط القوة والضعف في نموذجنا. إذا لم نكن راضين عن الوضع الحالي ، فيمكنك إجراء تغييرات على خط الأنابيب والمحاولة مرة أخرى. بعد تحسين النموذج ، نحدد EOTask بسيط يقبل EOPatch ونموذج المصنف ، ويقوم بالتنبؤ ، ويطبقه على الجزء.



صورة Sentinel-2 (يسار) ، الحقيقة (الوسط) والتنبؤ (يمين) لشظية عشوائية من AOI. قد تلاحظ بعض الاختلافات في الصور ، والتي يمكن تفسيرها باستخدام التخزين المؤقت السلبي على الخريطة الأصلية. بشكل عام ، كانت النتيجة لهذا المثال مرضية.


الطريق الآخر واضح. من الضروري تكرار الإجراء لجميع الأجزاء. يمكنك حتى تصديرها بتنسيق GeoTIFF ، ولصقها باستخدام gdal_merge.py .


لقد قمنا بتحميل GeoTIFF الملصقة على بوابة GeoPedia الخاصة بنا ، يمكنك رؤية النتائج في التفاصيل هنا



لقطة شاشة للتنبؤ بالغطاء الأرضي سلوفينيا 2017 باستخدام النهج المتبع في هذا المنشور. متوفر بتنسيق تفاعلي على الرابط أعلاه


يمكنك أيضًا مقارنة البيانات الرسمية بنتيجة المصنف. انتبه إلى الفرق بين مفاهيم استخدام الأراضي والغطاء الأرضي ، والتي توجد غالبًا في مهام التعلم الآلي - ليس من السهل دائمًا تعيين البيانات من السجلات الرسمية إلى الفصول في الطبيعة. على سبيل المثال ، نعرض مطارين في سلوفينيا. الأول هو ليفيتس ، بالقرب من مدينة سيلجي . هذا المطار صغير ، يستخدم بشكل أساسي في الطائرات الخاصة ، وهو مغطى بالعشب. بشكل رسمي ، يتم تمييز المنطقة كسطح اصطناعي ، على الرغم من أن المصنف قادر على تحديد المنطقة بشكل صحيح على أنها عشب ، انظر أدناه.



صورة Sentinel-2 (يسار) ، وصحيح (وسط) ، والتنبؤ (يمين) للمنطقة المحيطة بالمطار الرياضي الصغير. يعرف المصنف المدرج على أنه عشب ، على الرغم من أنه يتميز بسطح اصطناعي في البيانات الحالية.


من ناحية أخرى ، في أكبر مطار في سلوفينيا ، ليوبليانا ، فإن المناطق التي تم تحديدها على أنها سطح صناعي على الخريطة هي طرق. في هذه الحالة ، يميز المصنف بين الهياكل ، بينما يميز بشكل صحيح العشب والحقول في المنطقة المجاورة.



صورة Sentinel-2 (يسار) ، الحقيقة (الوسط) ، والتنبؤ (يمين) للمنطقة المحيطة بجبل ليجانا. يحدد المصنف المدرج والطرق ، مع التمييز بشكل صحيح بين العشب والحقول في الحي


فويلا!


أنت الآن تعرف كيفية إنشاء نموذج موثوق به على المستوى الوطني! تذكر أن تضيف هذا إلى سيرتك الذاتية.

Source: https://habr.com/ru/post/ar452378/


All Articles