Object-based Cloud detection with Machine Learning

chaipat ncm
Ayutthaya-GIS
Published in
3 min readOct 2, 2019

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

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

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

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

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

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

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

การตรวจับ เมฆ บนภาพถ่ายดาวเทียม ส่วนใหญ่เป็นกระบวนการทาง digital image processing นั้นคือการสร้าง mask จาก anomaly ของค่าการสะท้อนที่เกิด โมเดลที่นิยมมีแบบ stat ทั่วไป จนถึงแบบใช้หลายช่วง band มาช่วยแยก อย่าง Fmask algorithm ซึ่งมีการทำค่อนข้างเป็นปกติแล้ว แต่ข้อจำกัดส่วนหนึ่งที่เกิด นั้นคือเรื่องของ เงาเมฆ และ เมฆกลุ่มบางๆ โดยเฉพาะบนภาพมีความละเอียดสูง 10 เมตร ที่โมเดลเหล่านี้อาจจะทำงานได้ไม่ค่อยดี โดยเฉพาะในพื้นที่ เงาเมฆ และเมฆจางกลุ่มเล็ก

จุดนี้จึงมีแนวคิดนำเอา 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

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

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

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

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

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

ภาพผลลัพธ์ที่ออกมา ถือว่าค่อนข้างใช้ได้เลยทีเดียว สามารถขจัดเมฆออกจากภาพ และ ปรับปรุงค่า 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
Ayutthaya-GIS

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