Machine Learning API
แมชชีนเลิร์นนิง (ML) เป็นเทคนิคที่มีประสิทธิภาพในการวิเคราะห์ข้อมูลการสังเกตการณ์โลก Earth Engine มีความสามารถในตัวที่ช่วยให้ผู้ใช้สร้างและใช้โมเดล ML สําหรับสถานการณ์ทั่วไปได้ด้วย API ที่ใช้งานง่าย
งาน ML ที่พบบ่อยคือการแยกประเภทพิกเซลในภาพถ่ายดาวเทียมออกเป็น 2 หมวดหมู่ขึ้นไป แนวทางนี้มีประโยชน์สำหรับการแมปการปกคลุมดินและการใช้ที่ดิน ตลอดจนแอปพลิเคชันยอดนิยมอื่นๆ
- การแยกประเภทที่มีการควบคุมดูแล: เทคนิค ML อย่างหนึ่งในการแยกประเภทที่ดินคือการใช้ตัวอย่างข้อมูลที่ได้จากการสังเกตการณ์เพื่อสอนโมเดลให้แยกความแตกต่างระหว่างคลาส ตัวแยกประเภทที่มีการควบคุมในตัวของ Earth Engine รองรับกระบวนการนี้
- การแยกประเภทที่ไม่มีการควบคุมดูแล: ในการแยกประเภทที่ไม่มีการควบคุมดูแล ระบบจะไม่แสดงตัวอย่างข้อมูลจากการสังเกตการณ์โดยตรงให้อัลกอริทึมการฝึก แต่อัลกอริทึมจะแบ่งข้อมูลที่พร้อมใช้งานออกเป็นคลัสเตอร์ตามความแตกต่างที่มีอยู่ ตัวแยกประเภทที่ไม่มีการควบคุมดูแลของ Earth Engine จะมีประโยชน์อย่างยิ่งเมื่อไม่มีข้อมูลที่เป็นความจริง เมื่อคุณไม่ทราบจํานวนคลาสสุดท้าย หรือเมื่อต้องการทําการทดสอบอย่างรวดเร็ว
- การถดถอย: ในขณะที่โมเดลการจัดประเภทพยายามจัดกลุ่มอินพุตแต่ละรายการไว้ในคลาสแบบไม่ต่อเนื่อง โมเดลการถดถอยจะพยายามคาดการณ์ตัวแปรต่อเนื่องสําหรับอินพุตแต่ละรายการ เช่น โมเดลการถดถอยอาจคาดการณ์คุณภาพน้ำ เปอร์เซ็นต์พื้นที่ป่า เปอร์เซ็นต์ของเมฆ หรือผลผลิตพืช ดูข้อมูลเพิ่มเติมได้ที่ส่วนการหาค่าสัมประสิทธิ์การถดถอยเชิงเส้นของ ee.Reducers
การฝึกและคาดการณ์นอก Earth Engine
การเรียนรู้เชิงลึกและโครงข่ายประสาทเป็นเทคนิคแมชชีนเลิร์นนิงที่ทํางานได้ดีกับข้อมูลที่ซับซ้อน เช่น ภาพถ่ายจากดาวเทียม Machine Learning API ของ Earth Engine ไม่รองรับทั้งการเรียนรู้เชิงลึกและโครงข่ายประสาท แต่หากต้องการใช้ประโยชน์จากโมเดลเหล่านี้ คุณจะต้องใช้เฟรมเวิร์กอย่าง TensorFlow หรือ PyTorch และฝึกโมเดลนอก Earth Engine
นอกจากนี้ คุณอาจต้องการฝึกนอก Earth Engine หากคุ้นเคยกับเฟรมเวิร์กอย่าง scikit-learn สําหรับแมชชีนเลิร์นนิงแบบคลาสสิก หรือ XGBoost สําหรับต้นไม้การตัดสินใจแบบเพิ่มประสิทธิภาพด้วย Gradient
สุดท้าย คุณอาจต้องฝึกโมเดลนอก Earth Engine หากชุดข้อมูลมีขนาดใหญ่มากและเกินขีดจำกัดที่ระบุไว้ด้านล่าง
การส่งออกข้อมูลจาก Earth Engine เพื่อการฝึก
- รูปแบบข้อมูล TFRecord เพิ่มประสิทธิภาพเพื่อการฝึกอบรมใน TensorFlow หน้าตัวอย่างแมชชีนเลิร์นนิงมีเวิร์กโฟลว์ TensorFlow หลายรายการที่สาธิตวิธีฝึกโมเดลโดยใช้ TFRecords
- หรือหากต้องการดูตัวอย่างวิธีดาวน์โหลดข้อมูลโดยใช้ Apache Beam ที่โฮสต์ใน Google Cloud Dataflow แล้วฝึกใน Vertex AI โดยใช้ TensorFlow โปรดไปที่บทแนะนำการจัดประเภทการปกคลุมดิน แล้วทําตามด้วยโน้ตบุ๊ก colab
การคาดการณ์จากโมเดลภายนอก Earth Engine
หากฝึกโมเดลนอก Earth Engine คุณจะมีตัวเลือก 2-3 รายการในการรับการคาดการณ์จากโมเดลนั้น
-
แพ็กเกจ
ee.Model
ของ Earth Engine ช่วยให้สามารถคาดการณ์โดยใช้ข้อมูลใน Earth Engine และโมเดลที่ผ่านการฝึกอบรมซึ่งโฮสต์ใน Vertex AI ของ Google คุณสามารถโฮสต์โมเดลที่ฝึกเองใน Vertex AI และทำการอนุมานใน Earth Engine ได้โดยตรงโดยใช้ee.Model.fromVertexAi
ดูข้อมูลเพิ่มเติมที่การเชื่อมต่อกับโมเดลที่โฮสต์ใน Vertex AI - หรือบทแนะนำการจัดประเภทการปกคลุมดินจะแสดงวิธีทำนายโดยใช้บริการระบบคลาวด์อย่าง Cloud Functions
เหตุผลอื่นๆ ที่ควรฝึกโมเดลนอก Earth Engine
นอกเหนือจากความคุ้นเคยและความต้องการแล้ว คุณอาจต้องการฝึกโมเดลนอก Earth Engine หากต้องการใช้สถาปัตยกรรมโมเดล (เช่น Convolutional Neural Network) ที่ Machine Learning API ของ Earth Engine ไม่รองรับ หากต้องการใช้ฟีเจอร์เพิ่มเติมของ Vertex AI หรือหากพบขีดจํากัดการปรับขนาดกับ Machine Learning API ของ Earth Engine
จำกัดชุดการฝึก
โดยทั่วไป การฝึกโดยใช้ ee.Classifier
หรือ ee.Clusterer
จะมีประสิทธิภาพกับชุดข้อมูลที่มีขนาดไม่เกิน 100 MB แนวทางคร่าวๆ ในกรณีที่ความแม่นยำเป็น 32 บิต (เช่น เลขทศนิยม) รูปแบบนี้จะรองรับชุดข้อมูลการฝึกที่ตรงตามเงื่อนไขต่อไปนี้ (โดยที่ n คือจํานวนตัวอย่าง และ b คือจํานวนแถบ)
nb ≤ (100 * 2 20) / 4
ตัวอย่างเช่น หากคุณฝึกโดยใช้ย่านความถี่ 100 ย่าน จำนวนตัวอย่างที่ใช้สำหรับการฝึกควรน้อยกว่า 200,000 รายการ
ขีดจํากัดการอนุมาน
เนื่องจาก Earth Engine ประมวลผลไทล์รูปภาพขนาด 256x256 คำขออนุมานเกี่ยวกับภาพต้องน้อยกว่า 400 ย่านความถี่ (อีกครั้ง สมมติว่าภาพมีความแม่นยำ 32 บิต)
คุณสามารถฝึกตัวแยกประเภทซ้ำได้มากกว่า 1 ครั้งเพื่อให้ชุดข้อมูลของการฝึกแต่ละครั้งอยู่ภายในขีดจํากัด
var trainings = ee.List.sequence(0, 3).map(function(cover) { return image.addBands(landcover.eq(cover).stratifiedSample(…) }) var classifier = ee.Classifier.smileCart() .train(trainings.get(0), "cover") .train(trainings.get(1), "cover") .train(trainings.get(2), "cover") .train(trainings.get(3), "cover")
ขีดจํากัดของขนาดโมเดล
นอกจากนี้ โมเดลเองต้องมีขนาดไม่เกิน 100 MB เราสามารถกําหนดค่าตัวแยกประเภทจํานวนมากเพื่อจํากัดความซับซ้อนและขนาดของตัวแยกประเภทได้ เช่น
var classifier = ee.Classifier.smileRandomForest({ numberOfTrees: 10, minLeafPopulation: 10, maxNodes: 10000 })