Earth Engine, ee.Model
को Vertex AI पर होस्ट किए गए मॉडल के लिए कनेक्टर के तौर पर उपलब्ध कराता है.
यह कनेक्टर, Vertex AI एंडपॉइंट पर डिप्लॉय किए गए, ट्रेन किए गए मॉडल को ऑनलाइन अनुमान के अनुरोधों के तौर पर इमेज या टेबल का डेटा भेजता है. इसके बाद, मॉडल के आउटपुट को Earth Engine इमेज या टेबल के तौर पर दिखाया जाता है.
ee.Model.predictImage
होस्ट किए गए मॉडल का इस्तेमाल करके, ee.Image
के लिए अनुमान लगाने के लिए model.predictImage()
का इस्तेमाल करें. ee.Image
का इस्तेमाल, बैंड की टाइल (इमेज पैच) बनाने के लिए किया जाता है. इसके बाद, इन्हें होस्ट किए गए मॉडल पर भेजा जाता है. predictImage()
का रिटर्न टाइप
ee.Image
होता है. इसे मैप में जोड़ा जा सकता है, एक्सपोर्ट किया जा सकता है या अन्य
कैलकुलेशन में इस्तेमाल किया जा सकता है.
इनपुट के विकल्प
ee.Image
का इस्तेमाल करके अनुमान लगाते समय, ee.Model
कनेक्टर में कई पैरामीटर का इस्तेमाल किया जाता है. ये कंट्रोल, इनपुट बैंड और प्रॉपर्टी, इनपुट इमेज पैच टाइल करने, आउटपुट इमेज पैच के साइज़, और आउटपुट इमेज बैंड के लिए हैं.
बैंड और प्रॉपर्टी
इनपुट बैंड और प्रॉपर्टी की जानकारी देने के लिए, इन पैरामीटर का इस्तेमाल करें:
inputProperties
inputProperties
, प्रॉपर्टी के नामों की सूची होती है. इसे हर अनुमान के उदाहरण पर फ़ॉरवर्ड किया जाता है. इसमें संख्या, स्ट्रिंग, और बूलियन प्रॉपर्टी काम करती हैं.
inputTypeOverride
inputTypeOverride
, प्रॉपर्टी और/या बैंड के नामों की डिक्शनरी है. इसमें खास तरह और डाइमेंशन की जानकारी दी गई है. ऐसा ज़रूरी हो सकता है, क्योंकि Earth Engine के कई एल्गोरिदम, डाइनैमिक टाइप के आउटपुट बनाते हैं. इनका अनुमान, रनटाइम तक नहीं लगाया जा सकता.
उदाहरण के लिए, अगर किसी कलेक्शन पर ee.Terrain.slope
फ़ंक्शन को मैप करके "ढलान" का हिसाब लगाया जा रहा है, तो आपको हमारे अनुमान के इनपुट में "ढलान" के आउटपुट टाइप की जानकारी देनी होगी. ऐसा इस तरह करें:
inputTypeOverride = {
"slope": {
"type": "PixelType",
"precision": "float",
"dimensions": 0,
"min": -100.0,
"max": 100.0
}
}
सलाह: अगर आपको गड़बड़ी का यह मैसेज मिलता है कि किसी बैंड या प्रॉपर्टी को "टेंसर में बदला नहीं जा सकता", तो इनपुट को किसी तय टाइप में बदलने के लिए, टाइप बदलने की सुविधा का इस्तेमाल करें.
inputShapes
inputShapes
, बैंड के नामों और ऐरे-पिक्सल आकार की डिक्शनरी है. अगर आपको एक से ज़्यादा एलिमेंट वाले मॉडल ऐरे-वैल्यू वाले पिक्सल भेजने हैं, तो inputShapes
आर्ग्युमेंट सेट करें. यह आर्ग्युमेंट inputTypeOverride
जैसा ही है, लेकिन यह इमेज के अनुमान के लिए इनपुट बैंड के आकार पर निर्भर करता है. उदाहरण के लिए, तीन बैंड को कोड में बदलने के लिए, (1) "ndvi_series" को 12 वैल्यू वाली 1D टाइम सीरीज़ के तौर पर, (2) "temp" को स्केलर के तौर पर, और (3) "patch" को 2D पिक्सल ऐरे के तौर पर कोड में बदलने के लिए, इनका इस्तेमाल करें:
inputShapes = {
"ndvi_series": [12], # 12 ndvi samples
"temp": [], # scalar
"patch": [2, 2], # 2px * 2px patch
}
outputBands
outputBands
, बैंड के आउटपुट नामों की एक डिक्शनरी है. इसमें बैंड के ee.PixelType
और डाइमेंशन वाले ऑब्जेक्ट शामिल होते हैं. यहां डाइमेंशन, टेंसर शेप ऐरे की लंबाई के बराबर होने चाहिए. दूसरे शब्दों में, शेप () वाले स्केलर डेटा का डाइमेंशन 0 होना चाहिए, शेप (N) वाले 1D डेटा का डाइमेंशन 1 होना चाहिए, शेप (N, M) वाले 2D डेटा का डाइमेंशन 2 होना चाहिए. उदाहरण के लिए, आकार वाले पिक्सल के साथ, अरे वैल्यू वाले पिक्सल वाला "B1" नाम का आउटपुट बैंड, यहां दिए गए तरीके से तय किया जाता है:
outputBands = {
'B1': {'type': ee.PixelType.float(), 'dimensions': 1}
}
टाइल के साइज़
इन पैरामीटर का इस्तेमाल करके, यह कंट्रोल किया जा सकता है कि इमेज को टाइल कैसे किया जाए:
inputTileSize
inputOverlapSize
outputTileSize
टाइल के साइज़ डालना
इनपुट टाइल के साइज़ सेट करने के लिए, inputTileSize
और inputOverlapSize
का इस्तेमाल करें.
इन पैरामीटर को सेट करने के लिए, टाइल की चौड़ाई और ऊंचाई को पिक्सल में डालें. उदाहरण के लिए, [32, 32]. पैच का कुल साइज़, inputTileSize
और outputTileSize
की ऊंचाई और चौड़ाई को जोड़कर तय किया जाता है.
उदाहरण के लिए, पूरी तरह से कॉन्वोल्यूशनल मॉडल में, (256 x 256
x चैनल) आकार के इनपुट की उम्मीद की जा सकती है. अगर हमें अनुमान के नतीजों के बीच किनारों के असर की चिंता है, तो हम अनुमान के हर नतीजे के बाईं और दाईं ओर से inputOverlapSize[0]
पिक्सल और सबसे ऊपर और सबसे नीचे से inputOverlapSize[1]
पिक्सल हटा सकते हैं. इससे, अनुमानित क्षेत्र को पूरी तरह कवर करने के लिए, अनुमान के ज़्यादा कॉल होंगे.
उदाहरण के लिए, अगर हमारा मॉडल (256 x 256 x 3) का इस्तेमाल करता है और हमें 32 बॉर्डर पिक्सल हटाने हैं, तो हम इनके बारे में बताएंगे:
ee.Model({
"endpoint": endpoint,
"inputTileSize": [192, 192],
"inputOverlapSize": [64, 64],
# rest omitted.
}
ध्यान दें: inputOverlapSize
, x और y के ओवरलैप का कुल योग है. अगर आपको पूरी इमेज के चारों ओर N पिक्सल का बफ़र चाहिए, तो ओवरलैप [2N, 2N]
होगा
आउटपुट टाइल का साइज़
आउटपुट टाइल का साइज़ सेट करने के लिए, outputTileSize
आर्ग्युमेंट सेट करें. अगर outputTileSize
सेट नहीं है, तो टाइल का डिफ़ॉल्ट साइज़ inputTileSize
जैसा ही होता है.
कुछ मॉडल के लिए, आउटपुट साइज़, इनपुट साइज़ से अलग हो सकता है. उदाहरण के लिए, किसी क्लासिफ़िकेशन मॉडल में (256, 256, चैनल) आकार के इनपुट स्वीकार किए जा सकते हैं, लेकिन (1, 1, 1) आकार के टेंसर दिखाए जा सकते हैं. इस मामले में, outputTileSize
को [1, 1]
पर सेट करना होगा. यह उन मॉडल के लिए काफ़ी आम है जो किसी टाइल की विशेषता की प्रायिकता का आउटपुट (कम रिज़ॉल्यूशन में) दिखाते हैं.
अनुमान
कन्वोल्यूशनल मॉडल के लिए, फ़िक्स्ड प्रोजेक्शन का इनपुट होना ज़रूरी है. ऐसा इसलिए होता है, क्योंकि ज़्यादातर कॉन्वोल्यूशनल मॉडल को तय स्केल पर ट्रेन किया जाता है. इस मामले में, ee.Model.fromVertexAi()
को कॉल करते समय fixInputProj
पैरामीटर को true पर सेट करें. साथ ही, proj
पैरामीटर में डेटा का प्रोजेक्शन बताएं.
इनपुट इमेज के प्रोजेक्शन और मॉडल के तय प्रोजेक्शन का असर, आउटपुट वैल्यू पर पड़ेगा. ईई का फिर से प्रोजेक्ट करना से जुड़ी गाइड देखें.