Object-based Cloud detection with Machine Learning

chaipat ncm
Geo Data Science
Published in
3 min readOct 1, 2019

การสกัดเมฆและปรับปรุงข้อมูลจากภาพถ่ายดาวเทียม Sentinel2 ด้วย Machine Learning.

จากโพสบทความก่อนหน้า มีผลตอบรับกลับมาดีมากถึงประโยชน์ในการเข้าถึงข้อมูล ภาพถ่ายดาวเทียมทั้งจาก Landsat8 , Sentinel-2 เพื่อนำไปใช้ทำการวิจัยต่อ

แม้จะมีระบบบริการข้อมูลที่เปิดให้เราเข้าถึงและนำข้อมูลภาพใหม่ทุกสัปดาห์เพื่อไปใช้ได้อย่าง sentinel-2 แต่ประเด็นปัญหาหนึ่งของการใช้ข้อมูลจากภาพถ่ายดาวเทียม นั้นคือ เมฆ (Cloud) และเงาของเมฆ บทความนี้ผมจะมาแชร์ประสบการณ์ ในการจัดการกับปัญหานั้นด้วยการใช้เทคนิคการวิเคราะห์ข้อมูลด้วย Machine Learning ซึ่งเป้าหมายของเราสร้างระบบที่มาช่วยทำงานแบบอัตโนมัติ

การทำงานแบ่งเป็น 3 ส่วน คือการเลือกภาพ, ตรวจจับเมฆ และการปรับปรุงภาพ

การเลือกภาพถ่ายดาวเทียม

ขั้นตอนนี้สำคัญ และเราจะทำกันตั้งแต่ download โดยพยายามเลือกซีนภาพที่มี %cloud coverไม่สูงเกินไป (15-20%) แต่ปัญหาของ Passive Remote Sensing คือหนีไม่พ้นเรื่องการต้องเจอเมฆ โดยเฉพาะช่วงหน้าฝน

** เรียนรู้วิธีการดาวน์โหลดภาพถ่ายดาวเทียม sentinel2 ได้จาก บทความก่อนหน้า[link]

ตรวจจับเมฆบนภาพถ่ายดาวเทียม

การตรวจับ เมฆ บนภาพถ่ายดาวเทียม ส่วนใหญ่เป็นกระบวนการทาง digital image processing นั้นคือการสร้าง mask จาก anomaly ของค่าการสะท้อนที่เกิด โมเดลที่นิยมมีแบบ stat ทั่วไป จนถึงแบบใช้หลายช่วง band มาช่วยแยก อย่าง Fmask algorithm ซึ่งมีการทำค่อนข้างเป็นปกติแล้ว ซึ่งเราสามารถใช้ในโปรแกรม remote sensing ทั่วไปได้ หรือกรณี Landsat8 สามารถใช้บน qgis plug-in ด้วย Fmask cloud ได้เช่นกัน (link)

ติดตั้ง plug-in สามารถทำ cloud masking ได้ทันที

แต่ข้อจำกัดของ Fmask Algorithm ที่เกิด นั้นคือเรื่องของ เงาเมฆ และ เมฆกลุ่มบางๆ โดยเฉพาะบนภาพมีความละเอียดสูง 10 เมตร ที่โมเดลเหล่านี้อาจจะทำงานได้ไม่ค่อยดี โดยเฉพาะในพื้นที่ เงาเมฆ และเมฆจางกลุ่มเล็กยิ่งถ้าไม่มี band ย่าน SWIR เหมือนกับ landsat ผลลัพธ์ในจุดนี้จะอ่อนลงไปอีก

จุดนี้จึงมีแนวคิดนำเอา Machine Learning มาประยุกต์ใช้มีหลาย paper งานวิจัยที่ออกมา อย่างกรณีของ sentinel hub ก็มีการประยุกต์ใช้วิธีการนี้ ข้อดีของ Machine Learning การวิเคราะห์ pattern ของ cloud แบบต่างๆ จากนั้นสร้าง โมเดลจาก data ที่เรามีการทำ profile เอาไว้ ดังนั้นสามารถจำแนกเมฆ ในหลายลักษณะได้

ซึ่งใน Lab เราใช้ Gaussian Naive Bayes Model มาใช้ แยกข้อมูล เมฆ โดยทำการสร้างโมเดล จาก Feature ข้อมูลการสะท้อนของเมฆในหลายช่วงคลื่น( B01, B02, B04, B05, B08, B8A, B09, B10, B11, B12) และค่าต่าง band differences

Gaussian Naive Bayes Model

รวมไปถึงการใช้ อุณหภูมิภาคพื้นดิน ในพื้นที่ช่วงวัน/เวลา ที่มีการบันทึกภาพมาใช้ช่วยอีกด้วย ซึ่งวิธีนี้ได้ค่าความถูกต้องที่พึงพอใจ เมื่อเทียบกับ ประสิทธิภาพและเวลาในการประมวลผลข้อมูลจำนวนมาก

การปรับปรุงภาพถ่ายดาวเทียมบริเวณที่มีเมฆ

ขั้นตอนนี้เป็นขั้นตอนที่ยากสุด แน่นอนว่าเราสามารถใช้เทคนิคการแทนที่ปกติที่นิยม เช่น - การนำภาพจากช่วงเวลาอื่นๆ มาใส่แทนก็เป็นได้ หรือ เกลี่ยด้วยการเฉลี่ยค่าDN จาก pixel ใกล้เคียง ก็ทำได้เช่นกัน ซึ่งวิธีการเหล่านี้เป้าหมายพยายามจะ สร้าง ข้อมูลใหม่ชดเชยข้อมูลที่ขาดไป แต่ก็ล้วนมีข้อจำกัด ด้านการกู้คืนข้อมูล

ดังนั้น ผมจึงนำเอา Deep Learning มาใช้วิเคราะห์ข้อมูลจำนวนมาก(หลายสิบฟีเจอร์)และซับซ้อนเพื่อสร้างโมเดล โดยนำข้อมูลจากช่วงเวลาก่อนหน้า ใกล้เคียงกับภาพล่าสุดที่เกิดเมฆ (ไม่เกิน 6 สัปดาห์ เพื่อป้องกันเรื่อง landcover change) และไม่มี cloud บริเวณเดียวกัน มาใช้ทำ Image Enhancement

ขั้นตอนนี้ขออธิบายคราวๆ(ไม่ขอเปิดเผยเทคนิควิธีการเชิงลึกในการทำโมเดล ,การออกแบบ Deep Neural Network และเทคนิคการ optimization) คือเราจะใช้ข้อมูลค่าการสะท้อนหลายช่วงเวลา(Multi Temporal หรือ time-series based approach )ในอดีต T-3, T-2, T-1 (แบบ Muti Band + Multi Scale ) มาทำการเทรนโมเดลด้วย Deep Nuerual Network ในการ prediction ค่า การสะท้อน(DN)ของภาพ ปัจจุบัน

ภาพอธิบาย DNN จาก http://cs231n.stanford.edu

โดยพิจารณาค่าที่ได้จากโมเดล ให้ใกล้เคียงกับภาพถ่ายดาวเทียมจริงจากการบันทึกในเวลาที่ T-0 โดยใช้ตัวทดแทนข้อมูลบริเวณที่ทำ cloud Mask เอาไว้ จากนั้นทำการปรับภาพด้วย Con2D Fiter ที่ออกแบบ ทั้งหมดนี้ใช้การเขียนโปรแกรมด้วยภาษา Python ทำงานร่วมกับ Keras + Tensorflow

ภาพผลลัพธ์ที่ออกมา ถือว่าค่อนข้างใช้ได้เลยทีเดียว สามารถขจัดเมฆออกจากภาพ และ ปรับปรุงค่า DN ใน band ต่างๆชดเชยส่วนหายไป ในลักษณะที่ใกล้เคียงกับข้อมูล ปัจจุบันมากที่สุด

แหล่งความรู้อ้างอิง

https://www.gis-blog.com/cloud-masking-sentinel-2/

https://www.semanticscholar.org/paper/Two-Pass-Robust-Component-Analysis-for-Cloud-in-Wen-Zhang

https://medium.com/sentinel-hub/improving-cloud-detection-with-machine-learning-c09dc5d7cf13

--

--

chaipat ncm
Geo Data Science

GIS Developer , Data Scientist (Machine Learning &Deep Learning) at Ayutthaya-GIS Co., Ltd. ,Contract Me >> chaipat.ayutthaya.gis@gmail.com