जब आपको संतोषजनक से बेहतर परिणाम चाहिए
भाग 1
भाग २

सर्दियों से गर्मियों तक के क्षेत्र का संक्रमण सेंटिनल -2 छवियों से बना है। आप बर्फ में कवर के प्रकारों में कुछ अंतर देख सकते हैं, जिसका वर्णन पिछले लेख में किया गया था।
प्रस्तावना
पिछले कुछ हफ़्ते बहुत मुश्किल रहे हैं। हमने अपने लेखों के पहले और दूसरे भाग को eo-learn
फ्रेमवर्क का उपयोग करके पूरे देश में कवर के वर्गीकरण पर प्रकाशित किया। eo-learn
उपग्रह चित्रों और मशीन सीखने को प्राप्त करने और प्रसंस्करण के बीच एक परत बनाने के लिए एक खुला स्रोत पुस्तकालय है। उदाहरणों में पिछले लेखों में , हमने केवल आंकड़ों के एक छोटे से उपसमूह का संकेत दिया था और परिणामों को केवल ब्याज के पूरे क्षेत्र (AOI - ब्याज के क्षेत्र) के एक छोटे प्रतिशत पर दिखाया था। मुझे पता है कि यह कम से कम बहुत प्रभावशाली नहीं है, और शायद हमारी ओर से बहुत अशिष्ट है। यह सब समय आपको इस सवाल से पीड़ा देता है कि आप इस ज्ञान का उपयोग कैसे कर सकते हैं और इसे अगले स्तर पर स्थानांतरित कर सकते हैं।
चिंता न करें, यह इस श्रृंखला का तीसरा लेख है! एक कप कॉफी ले लो और एक सीट ले लो ...
हमारे सभी डेटा आप के लिए हैं!
क्या आप पहले से ही बैठे हैं? हो सकता है कि एक और सेकंड के लिए टेबल पर कॉफी छोड़ दें, क्योंकि अब आप आज के लिए सबसे अच्छी खबर सुनेंगे ...
हमने सिनर्जी में स्लोवेनिया के लिए 2017 के लिए पूरा डेटा प्रकाशित करने का निर्णय लिया। मुफ्त में। आप स्वतंत्र रूप से EOPatch के ~ 300 टुकड़े के रूप में 200GB डेटा का उपयोग कर सकते हैं, प्रत्येक लगभग 1000x1000 के आकार में, 10 मीटर के रिज़ॉल्यूशन में! आप eo-learn
लर्निंग के बारे में अंतिम पोस्ट में ईओपीच प्रारूप के बारे में अधिक पढ़ सकते हैं, लेकिन वास्तव में यह भू-अस्थायी ईओ (पृथ्वी अवलोकन) और गैर-ईओ डेटा के लिए एक कंटेनर है: उदाहरण के लिए, उपग्रह चित्र, मुखौटे, नक्शे, आदि।

EOPatch संरचना )
जब हमने यह डेटा डाउनलोड किया था तब हमने हैक नहीं किया था। प्रत्येक EOPatch में सेंटिनल -2 L1C चित्र, उनके संबंधित s2cloudless मास्क और रेखापुंज प्रारूप में आधिकारिक भूमि कवर मानचित्र शामिल हैं!
डेटा AWS S3 पर संग्रहीत है: http://eo-learn.sentinel-hub.com/
एक EOPatch वस्तु का वर्णन करना काफी सरल है:
EOPatch.load('path_to_eopatches/eopatch-0x6/')
परिणामस्वरूप, आपको निम्न संरचना का एक ऑब्जेक्ट मिलता है:
EOPatch( data: { BANDS: numpy.ndarray(shape=(80, 1010, 999, 6), dtype=float32) } mask: { CLM: numpy.ndarray(shape=(80, 1010, 999, 1), dtype=uint8) IS_DATA: numpy.ndarray(shape=(80, 1010, 999, 1), dtype=uint8) IS_VALID: numpy.ndarray(shape=(80, 1010, 999, 1), dtype=bool) } mask_timeless: { LULC: numpy.ndarray(shape=(1010, 999, 1), dtype=uint8) VALID_COUNT: numpy.ndarray(shape=(1010, 999, 1), dtype=int64) } meta_info: { maxcc: 0.8 service_type: 'wcs' size_x: '10m' size_y: '10m' time_difference: datetime.timedelta(-1, 86399) time_interval: (datetime.datetime(2017, 1, 1, 0, 0), datetime.datetime(2017, 12, 31, 0, 0)) } bbox: BBox(((370230.5261411405, 5085303.344972428), (380225.31836121203, 5095400.767924464)), crs=EPSG:32633) timestamp: [datetime.datetime(2017, 1, 1, 10, 4, 7), ..., datetime.datetime(2017, 12, 25, 10, 15, 32)], length=80 )
विभिन्न EOPatch विशेषताओं तक पहुंच निम्नानुसार है:
eopatch.timestamp eopatch.mask['LULC'] eopatch.data['CLM'][0] eopatch.data['BANDS'][5][..., [3, 2, 1]]
EOExecute ऑर्डर 66
बढ़िया, डेटा लोड हो रहा है। जब हम इस प्रक्रिया के पूरा होने की प्रतीक्षा कर रहे हैं, तो आइए एक वर्ग की क्षमताओं पर एक नज़र डालें जो अभी तक इन लेखों में चर्चा नहीं की गई है - EOExecutor
। यह मॉड्यूल पाइपलाइन के निष्पादन और निगरानी में लगा हुआ है और अनावश्यक प्रयासों के बिना मल्टी-थ्रेडिंग का उपयोग करने की अनुमति देता है। स्टैक ओवरफ्लो पर कोई और खोज नहीं कि पाइपलाइन को सही तरीके से कैसे व्यवस्थित किया जाए या इस मोड में प्रगति बार को कैसे काम किया जाए - हमने आपके लिए सब कुछ पहले ही कर दिया है!
इसके अतिरिक्त, यह होने वाली त्रुटियों को संभालता है और निष्पादन प्रक्रिया का एक संक्षिप्त सारांश उत्पन्न कर सकता है। भविष्य में अपने परिणामों की पुनरावृत्ति सुनिश्चित करने के लिए उत्तरार्द्ध सबसे महत्वपूर्ण क्षण है, ताकि उपयोगकर्ता को कीमती काम करने के लिए उन मापदंडों की खोज में खर्च न करना पड़े जो उन्होंने पिछले गुरुवार को सुबह 9 बजे के बाद रहस्योद्घाटन की पूरी रात (शराब और प्रोग्रामिंग का मिश्रण न करें) किया। इसके लायक!)। यह वर्ग पाइपलाइन के लिए एक अच्छी निर्भरता ग्राफ उत्पन्न करने में सक्षम है, जिसे आप अपने बॉस को दिखा सकते हैं!

eo-learn
द्वारा उत्पन्न पाइपलाइन निर्भरता ग्राफ
मशीन लर्निंग प्रयोग
जैसा कि वादा किया गया था, इस लेख का मुख्य उद्देश्य विभिन्न मॉडलों का अध्ययन करना है, जो हमारे द्वारा प्रदान किए गए डेटा का उपयोग करके eo-learn
। नीचे हमने दो प्रयोग तैयार किए हैं जहां हम अंतिम परिणाम पर लौकिक प्रक्षेप के दौरान बादलों और अलग-अलग पुनरुत्पादन एल्गोरिदम के प्रभाव का अध्ययन करते हैं। इस सब के बाद, हम दृढ़ संकल्प नेटवर्क (CNN) के साथ काम करना शुरू कर देंगे, और दो दृष्टिकोणों के परिणामों की तुलना करेंगे - निर्णय पेड़ के पिक्सेल-बाय-पिक्सेल विश्लेषण और दृढ़ तंत्रिका नेटवर्क का उपयोग करके गहरी सीख।
दुर्भाग्य से, कोई भी इस बात का स्पष्ट जवाब नहीं दे सकता है कि प्रयोगों के दौरान क्या निर्णय लेने चाहिए। आप विषय क्षेत्र का अधिक गहराई से अध्ययन कर सकते हैं और यह तय करने के लिए धारणा बना सकते हैं कि क्या खेल मोमबत्ती के लायक है, लेकिन अंततः काम अभी भी परीक्षण और त्रुटि के लिए नीचे आ जाएगा।
बादलों के साथ खेलते हैं
ईओ की दुनिया में बादल एक बहुत बड़ा दर्द हैं, खासकर जब मशीन लर्निंग एल्गोरिदम की बात आती है, जहां आप उन्हें निर्धारित करना चाहते हैं और लापता मूल्यों के आधार पर प्रक्षेप के लिए निर्धारित डेटा से उन्हें हटा देते हैं। लेकिन इस प्रक्रिया का लाभ कितना बड़ा है? क्या यह इसके लायक है? Ruwurm और Körner, अपने मल्टी-टेम्पोरल लैंड कवर क्लासिफिकेशन विथ सीक्वेंशियल रिक्वायरमेंट एन्कोडर्स आर्टिकल में, यहां तक कि यह भी बताया कि गहरी सीखने के लिए, क्लाउड फ़िल्टरिंग प्रक्रिया शायद बिल्कुल महत्वहीन है, क्योंकि क्लासिफायरियर ही क्लाउड का पता लगाने और उन्हें अनदेखा करने में सक्षम है।

एक तंत्रिका नेटवर्क के लिए एक विशिष्ट टुकड़े की छवियों के अनुक्रम में इनपुट परत (ऊपर) और मॉड्यूलेशन परत (नीचे) का सक्रियण। आप देख सकते हैं कि यह नेटवर्क टुकड़ा क्लाउड मास्क बनाने और प्राप्त परिणामों को फ़िल्टर करने के लिए सीखा है। (पेज 9 पर https://www.researchgate.net/publication/322975904_Multi-Temporal_Land_Cover_Classification_with_Sequential_Recurrent_Encoders )
हम संक्षेप में डेटा फ़िल्टरिंग चरण की संरचना को याद करते हैं (विवरण के लिए, देखें [पिछला लेख] ())। सेंटिनल -2 स्नैपशॉट लेने के बाद, हम क्लाउड स्नैपशॉट को फ़िल्टर करना शुरू करते हैं। सभी छवियां जिनमें गैर-बादल वाले पिक्सेल की संख्या 80% से अधिक नहीं है, स्क्रीनिंग के अधीन हैं (ब्याज के विभिन्न क्षेत्रों के लिए सीमा मूल्य भिन्न हो सकते हैं)। उसके बाद, मनमाने दिनों पर पिक्सेल मान प्राप्त करने के लिए, क्लाउड मास्क का उपयोग इस तरह के डेटा को ध्यान में नहीं रखने के लिए किया जाता है।
कुल मिलाकर, चार व्यवहार संभव हैं:
- छवि फ़िल्टर के साथ , क्लाउड मास्क दिए गए हैं
- कोई स्नैपशॉट फ़िल्टर नहीं, जो क्लाउड मास्क दिया गया है
- क्लाउड मास्क को छोड़कर, छवि फ़िल्टर के साथ
- बिना इमेज फिल्टर, क्लाउड मास्क सहित नहीं

प्रहरी -2 उपग्रह से छवियों के ढेर का दृश्य प्रदर्शन। क्लाउड कवर की वजह से बाईं ओर पारदर्शी पिक्सल का मतलब पारदर्शी पिक्सल है। छवियों को फ़िल्टर करने और उन्हें क्लाउड मास्क (केस 4) के साथ प्रक्षेपित करने के बाद केंद्र स्टैक पिक्सेल मान दिखाता है, और दाईं ओर का स्टैक छवियों को फ़िल्टर किए बिना और क्लाउड मास्क (1) के बिना मामले में प्रक्षेप परिणाम दिखाता है। (नोट लेन - जाहिर है, लेख में एक टाइपो होता है, और इसका अर्थ था - केंद्र में विपरीत 1 केस, और दाईं ओर 4)।
पिछले लेख में, हमने पहले ही केस 1 की विविधता का प्रदर्शन किया और परिणाम दिखाए, इसलिए हम उनकी तुलना के लिए उपयोग करेंगे। अन्य कन्वेयर तैयार करना और मॉडल को प्रशिक्षित करना एक सरल कार्य की तरह लगता है - आपको बस यह सुनिश्चित करने की आवश्यकता है कि हम सही मूल्यों की तुलना कर रहे हैं। ऐसा करने के लिए, बस मॉडल को प्रशिक्षित करने और मान्य करने के लिए पिक्सेल का एक ही सेट लें।
परिणाम नीचे दी गई तालिका में दिखाए गए हैं। आप देख सकते हैं कि सामान्य तौर पर, मॉडल के परिणाम पर बादलों का प्रभाव काफी कम है! यह इस तथ्य के कारण हो सकता है कि संदर्भ कार्ड बहुत अच्छी गुणवत्ता का है और मॉडल अधिकांश छवियों को अनदेखा करने में सक्षम है। किसी भी स्थिति में, इस व्यवहार की गारंटी किसी AOI के लिए नहीं दी जा सकती है, इसलिए इस चरण को अपने मॉडल से बाहर फेंकने के लिए अपना समय निकालें!
विभिन्न Resampling दृष्टिकोण का प्रभाव
टेम्पोरल रिसमलिंग विकल्पों का विकल्प स्पष्ट नहीं है। एक तरफ, हमें उन चित्रों की एक विस्तृत सारणी की आवश्यकता होती है, जो स्रोत चित्रों के विवरण को अच्छी तरह से दिखाते हैं - हम स्रोत डेटा में छवियों की निकटतम संभावित संख्या को शामिल करना चाहते हैं। दूसरी ओर, हम कंप्यूटिंग संसाधनों द्वारा सीमित हैं। रेज़मैपलिंग चरण को कम करने से प्रक्षेप के बाद फ़्रेम की संख्या दोगुनी हो जाती है, और इस प्रकार प्रशिक्षण में उपयोग होने वाले गुणों की संख्या बढ़ जाती है। क्या ऐसा सुधार संसाधनों की लागत के लायक है? यही हमें सीखना है।
इस प्रयोग के लिए, हम पिछले चरण से भिन्नता 1 का उपयोग करेंगे। प्रक्षेप के बाद, हम निम्नलिखित भिन्नताओं के साथ फिर से जुड़ते हैं:
- 16 दिनों के अंतराल के साथ वर्दी को फिर से खोलना
- 8 दिनों के अंतराल के साथ वर्दी को फिर से खोलना
- "सर्वश्रेष्ठ" तिथियों की पसंद, संख्या 2 केस से मेल खाती है।
मामले 3 में नमूना चयनित एओआई में सभी ईओपीच के लिए आम तारीखों की सबसे बड़ी संख्या पर आधारित है

ग्राफ ईओपीच अंशों की संख्या दर्शाता है जिनमें 2017 के प्रत्येक दिन (नीला) के लिए डेटा होता है। लाल रेखाएं पुनरुत्पादन के लिए इष्टतम तिथियां दिखाती हैं, जो दिए गए 2017 ओओआई के लिए सेंटिनल -2 छवियों की तारीखों पर आधारित हैं।
नीचे दी गई तालिका को देखते हुए, आप देख सकते हैं कि परिणाम बहुत प्रभावशाली नहीं हैं, जैसा कि पिछले अनुभव में है। मामलों 2 और 3 के लिए, समय की मात्रा दोगुनी हो जाती है, लेकिन प्रारंभिक दृष्टिकोण के साथ अंतर 1% से कम है। इस तरह के सुधार व्यावहारिक उपयोग के लिए बहुत असंगत हैं, इसलिए हम कार्य के लिए उपयुक्त 16-दिन के अंतराल पर विचार कर सकते हैं।
पुनरावर्तन के दृष्टिकोण में बदलाव के साथ विभिन्न पाइपलाइनों के लिए समग्र सटीकता और भारित एफ 1 के परिणाम।
डीप लर्निंग: कन्वर्सेशनल न्यूरल नेटवर्क (CNN) का उपयोग करना
डीप लर्निंग कंप्यूटर विज़न, नेचुरल लैंग्वेज वर्ड प्रोसेसिंग और सिग्नल प्रोसेसिंग जैसे कई कार्यों के लिए मानक दृष्टिकोण बन गया है। यह जटिल बहुआयामी इनपुट से पैटर्न निकालने की उनकी क्षमता के कारण है। शास्त्रीय मशीन लर्निंग एप्रोच (जैसे निर्णय पेड़) का उपयोग कई लौकिक जियोडेटा कार्यों में किया गया है। दूसरी ओर, संवेदी नेटवर्क का उपयोग आसन्न छवियों के बीच स्थानिक सहसंबंध का विश्लेषण करने के लिए किया गया था। मूल रूप से, उनका उपयोग एकल छवियों के साथ काम करने तक सीमित था।
हम गहन शिक्षण मॉडल की वास्तुकला का अध्ययन करना चाहते थे, और एक ही समय में उपग्रह डेटा के स्थानिक और लौकिक दोनों पहलुओं का विश्लेषण करने में सक्षम एक को चुनने की कोशिश करते हैं।
ऐसा करने के लिए, हमने TensorFlow में कार्यान्वित किए गए U-Net के अस्थायी विस्तार, टेम्पोरल फुली-कन्वेंशनल नेट्वर्क, TFCN, या यों कहें, का उपयोग किया। अधिक विशेष रूप से, वास्तुकला परिणाम को बेहतर बनाने के लिए स्पैट-टेम्पोरल सहसंबंधों का उपयोग करता है। एक अतिरिक्त लाभ यह है कि नेटवर्क संरचना आपको यू-नेट में एन्कोडिंग / डिकोडिंग प्रक्रिया के लिए धन्यवाद, विभिन्न पैमानों पर स्थानिक संबंधों का बेहतर प्रतिनिधित्व करने की अनुमति देता है। शास्त्रीय मॉडलों की तरह, आउटपुट में हमें दो-आयामी मैट्रिक्स के लेबल मिलते हैं, जिनकी हम सत्य के साथ तुलना करेंगे।

हमने परीक्षण सेट पर अंकों की भविष्यवाणी करने के लिए प्रशिक्षित मॉडल का उपयोग किया, और प्राप्त मूल्यों को सच्चाई के साथ जांचा गया। कुल मिलाकर, सटीकता 84.4% और F1 85.4% थी।

हमारे कार्य के लिए विभिन्न भविष्यवाणियों की तुलना। विज़ुअल इमेज (टॉप लेफ्ट), ट्रू रेफरेंस मैप (टॉप राइट), लाइट जीबीएम मॉडल प्रीडिक्शन (लेफ्ट लेफ्ट) और यू-नेट प्रेडिक्शन (नीचे दाएं)
ये परिणाम इस प्रोटोटाइप पर केवल प्रारंभिक कार्य दिखाते हैं, जो वर्तमान कार्य के लिए अत्यधिक अनुकूलित नहीं है। इसके बावजूद, परिणाम क्षेत्र में प्राप्त कुछ आंकड़ों से सहमत हैं। तंत्रिका नेटवर्क की क्षमता को प्राप्त करने के लिए, वास्तुकला (सुविधाओं का सेट, नेटवर्क की गहराई, संकल्पों की संख्या), साथ ही हाइपर मापदंडों (सीखने की गति, युगों की संख्या, वर्ग भार) को अनुकूलित करना आवश्यक है। हम इस विषय (और हा) में और भी अधिक गहराई से जाने की उम्मीद करते हैं, और जब यह स्वीकार्य रूप में होता है तो हमारे कोड को वितरित करने की योजना बनाते हैं।
अन्य प्रयोग
आप अपने वर्तमान परिणामों को बेहतर बनाने के लिए कई तरीके अपना सकते हैं, लेकिन हम उन सभी को न तो हल कर सकते हैं और न ही आजमा सकते हैं। यह उस क्षण है जब आप दृश्य पर दिखाई देते हैं! दिखाएँ कि आप इस डेटा सेट के साथ क्या कर सकते हैं और परिणामों को बेहतर बनाने में हमारी सहायता करें!
उदाहरण के लिए, निकट भविष्य में, हमारा एक सहयोगी दोषी नेटवर्क का उपयोग करके व्यक्तिगत छवियों के अस्थायी स्टैक के आधार पर कवर के वर्गीकरण में संलग्न होगा। विचार यह है कि कुछ सतहों, उदाहरण के लिए, कृत्रिम लोगों को अस्थायी विशेषताओं के बिना प्रतिष्ठित किया जा सकता है - काफी स्थानिक। जब यह कार्य परिणाम की ओर ले जाएगा तो हमें एक अलग लेख लिखने में खुशी होगी!
अनुवादक से
दुर्भाग्य से, लेखों की इस श्रृंखला का अगला हिस्सा नहीं निकला, जिसका अर्थ है कि लेखकों ने यू-नेट के निर्माण के साथ स्रोत कोड के उदाहरण नहीं दिखाए। एक विकल्प के रूप में, मैं निम्नलिखित स्रोतों की पेशकश कर सकता हूं:
- यू-नेट: बायोमेडिकल इमेज सेगमेंटेशन के लिए कन्वेंशनल नेटवर्क - ओलाफ रोनेबर्गर, फिलिप फिशर, थॉमस ब्रोक्स यू-नेट आर्किटेक्चर पर मूल लेखों में से एक है जिसमें अस्थायी डेटा शामिल नहीं है।
- **
- https://github.com/divamgupta/image-segmentation-keras - कई नेटवर्क के साथ एक रिपॉजिटरी का उपयोग कर लागू किया गया है। मेरे पास कार्यान्वयन के बारे में कुछ प्रश्न हैं (वे मूल लेखों में वर्णित उन लोगों से थोड़ा अलग हैं), लेकिन सामान्य तौर पर, समाधान आसानी से व्यक्तिगत उद्देश्यों के लिए अनुकूलित होते हैं और काफी काम कर रहे हैं।