प्रतियोगिता "इंटरनेट गणित: Yandex.Maps" - हमारी भागीदारी का अनुभव और विजेता एल्गोरिदम का विवरण

प्रतियोगिता " इंटरनेट गणित: Yandex.Maps " के अंत से एक वर्ष से अधिक समय बीत चुका है, लेकिन हमें अभी भी एल्गोरिथ्म के बारे में पूछा जा रहा है जिसने हमें इस प्रतियोगिता में जीत दिलाई । यह जानकर कि यांडेक्स ने हाल ही में अगले " इंटरनेट गणित " के लॉन्च की घोषणा की है, हमने अपने पिछले साल की भागीदारी के अनुभव को साझा करने और हमारे दृष्टिकोण का वर्णन करने का निर्णय लिया। विकसित एल्गोरिथ्म 99.44% की सटीकता के साथ मनोरम छवियों की एक श्रृंखला में अतिरिक्त छवियों को सही ढंग से पहचानने में सक्षम था, उदाहरण के लिए, यहां:



इस लेख में, हम एल्गोरिथ्म के मुख्य विचारों का वर्णन करते हैं और जो लोग रुचि रखते हैं, उनके लिए अपने विवरण प्रदान करते हैं, सीखे गए पाठों के बारे में बात करते हैं और यह सब कैसे हुआ।

हमारे समाधान के लिए स्रोत कोड github ( OpenCV का उपयोग करके C ++) पर उपलब्ध है।

प्रतिस्पर्धी कार्य का विवरण


2011 में, यैंडेक्स ने प्रतियोगिता के प्रतिभागियों को कंप्यूटर विज़न में एक दिलचस्प काम करने की पेशकश की, इसलिए यह हमारी कंपनी के लिए इस क्षेत्र में विशेषज्ञता के लिए एक पाप होगा जो भाग नहीं लेगा। कार्य Yandex.Maps से मनोरम छवियों की एक श्रृंखला में अतिरिक्त छवियों की खोज करना था। प्रत्येक श्रृंखला में, 5 चित्र दिए गए थे, जिनमें से कुछ (3, 4 या सभी 5) एक ही स्थान पर और लगभग एक ही समय में बनाए गए थे, और शेष निरर्थक थे। उदाहरण के लिए, ऊपर दी गई श्रृंखला में चित्र 1, 3 और 5 चित्रमाला बनाते हैं, और चित्र 2 और 4 अतिश्योक्तिपूर्ण हैं । कुल मिलाकर, 6000 एपिसोड दिए गए थे और उनमें से प्रत्येक में अतिरिक्त चित्रों को खोजना आवश्यक था।

शुरू से अंत तक


अपने कॉरपोरेट समाचार पत्र से प्रतियोगिता के बारे में जानने के बाद, हम में से प्रत्येक ने डेटा डाउनलोड किया, तस्वीरों को घूरते हुए कई दिन बिताए (कुछ ऐसा करना था - कुल 6000 x 5 = 30,000 चित्र) और अकेले जीतने की उम्मीद। यह जल्द ही स्पष्ट हो गया कि यह कार्य वास्तव में उतना सरल नहीं था जितना पहली नज़र में लग रहा था। इसलिए, हमने एक साथ रहने, विचारों पर चर्चा करने और एक संभावित संयुक्त प्रयास पर बातचीत करने का फैसला किया। जैसा कि यह निकला, समस्या को हल करने के लिए हमारे पास बहुत अलग दृष्टिकोण थे और एक ही टीम में एक-दूसरे के पूरक होना बहुत अच्छा होगा। तो हमने किया, और फिर सब कुछ मानक योजना के अनुसार किया गया: हमने एक सामान्य कोड रिपॉजिटरी बनाई, एल्गोरिदम की सटीकता का परीक्षण करने के लिए एक बुनियादी ढांचा लिखा, और प्रत्येक ने अपने विचारों पर काम करना शुरू कर दिया। हमने उपयुक्त लेखों का अध्ययन किया, समय-समय पर विचार-मंथन सत्रों का आयोजन किया, नए विचारों की कोशिश की और बेकार लोगों को त्याग दिया ... इसलिए एक महीना बीत गया।

और फिर अंतिम दिन आया - प्रतियोगिता की शर्तों के अनुसार , अंतिम दिन यैंडेक्स ने एक नया डेटा सेट जारी किया, जिस पर एल्गोरिथ्म को चलाने और एक दिन में उत्तर प्राप्त करना आवश्यक था। हमारी टीम में काम के दौरान एक नींद की रात थी, इसलिए प्राथमिकता अभी भी चिप्स और सब कुछ खरीदने के लिए थी जो उत्पादक प्रोग्रामिंग के लिए आवश्यक थी। अंतिम डेटा सेट तक पहुंच प्राप्त करने के बाद, हमने अपने एल्गोरिथ्म का सबसे अच्छा संस्करण लॉन्च किया, 30,000 छवियों के एक नए बैच की जांच शुरू की और, आखिरी तक, डेटा के नए गुणों को ध्यान में रखने के लिए नए विचार उत्पन्न किए (हालांकि सुबह 5 बजे तक कुछ बकवास निकले, जो अब तक तब से हमारे पास चुटकुलों का एक कारण है)। सब कुछ व्यर्थ नहीं निकला: कुछ दिनों बाद हमें पता चला कि हमारी टीम "पौराणिक निज़नी नोवगोरोड" प्रतियोगिता की विजेता बनी!

अगला, हम बात करेंगे कि हम किस एल्गोरिथ्म के साथ समाप्त हुए।

एल्गोरिथ्म के मुख्य विचार


तो, कार्य समूहों में छवियों की श्रृंखला को विभाजित करना है: वांछित चित्रमाला और अतिरिक्त छवियां। इस तरह के विभाजन को खोजने के लिए, आपको इस तथ्य की बहुलता का मूल्यांकन करने में सक्षम होना चाहिए कि वे किसी भी चित्र की जोड़ी के लिए समान पैनोरमा से संबंधित हैं। ऐसा करने के लिए, हमने पूरक दृष्टिकोणों के आधार पर छवियों की एक जोड़ी के लिए दो समानता वाले उपाय पेश किए: छवियों के रंग हिस्टोग्राम की तुलना करना और छवियों में सामान्य भागों की खोज करना। हमने इन दो उपायों को एक में जोड़ा और छवियों को समूहों में विभाजित करने के लिए परिणामी उपाय का उपयोग किया (क्लस्टरिंग)। प्रत्येक दृष्टिकोण का माप अलग से इस्तेमाल किया जा सकता है, लेकिन संयोजन हमें उनकी ताकत को संयोजित करने की अनुमति देता है।

हिस्टोग्राम आपको एक छवि में दूसरे में आवृत्तियों के साथ रंगों की आवृत्तियों की तुलना करने की अनुमति देता है। चूंकि, कार्य के विवरण के अनुसार, एक ही पैनोरमा में चित्र कैमरे के करीबी पदों से एक बार में एक दृश्य को चित्रित करते हैं, उनकी रंग विशेषताएं आमतौर पर एक दूसरे के समान होती हैं, और अतिरिक्त छवियों के लिए वे आमतौर पर अलग होते हैं। इसलिए, हिस्टोग्राम के बीच की दूरी छवियों की निकटता का एक उपयुक्त अनुमान देती है। उदाहरण के लिए, लेख की शुरुआत में प्रस्तुत श्रृंखला की अतिरिक्त छवियां पैनोरमिक छवियों की तुलना में बहुत अधिक गहरी हैं, इसलिए गहरे रंग अतिरिक्त छवियों के हिस्टोग्राम में प्रबल होंगे, और ये हिस्टोग्राम्स पैनोरमिक छवियों के हिस्टोग्राम से बहुत दूर होंगे।

दूसरा दृष्टिकोण, छवियों में सामान्य भागों की खोज, यह निर्धारित करना संभव बनाता है कि दो चित्र मामले में एक ही पैनोरमा के हैं जब उनके बीच पर्याप्त चौराहा होता है, उदाहरण के लिए, एक ही वस्तु उन्हें मिलती है। यह कंप्यूटर दृष्टि में लोकप्रिय दृष्टिकोण का उपयोग करके प्राप्त किया जाता है: दो तुलना की गई छवियों पर विशेषता प्रमुख बिंदुओं का पता लगाया जाता है, जिसके बाद उनके बीच के पत्राचार के लिए एक खोज की जाती है, उदाहरण के लिए, इन बिंदुओं के पड़ोस की तुलना करके। यदि आप कई समान पड़ोस खोजने में कामयाब रहे, तो सबसे अधिक संभावना है कि वे एक ही वस्तुओं से संबंधित हैं और ये एक ही दृश्य के दो चित्र हैं। इस दृष्टिकोण में, निकटता का एक उपाय समान पड़ोस की संख्या है। उदाहरण के लिए, इस दृष्टिकोण का संचालन अंजीर में चित्रित किया गया है। 1 और 2।


अंजीर। 1. एक श्रृंखला का एक उदाहरण जिसमें आम हिस्सों की खोज सही वर्गीकरण देती है, क्योंकि तस्वीरों में एक ही इमारत के कुछ हिस्से होते हैं। इस मामले में, छवियों 1 और 4 के रंग हिस्टोग्राम्स बाकी हिस्सों से बहुत अलग हैं, इसलिए हिस्टोग्राम दृष्टिकोण इन दो छवियों को अतिरेक मानता है, जो वास्तव में गलत है।


अंजीर। 2. एल्गोरिथ्म द्वारा पाए गए प्रमुख बिंदुओं के अनुरूप।

ये दोनों दृष्टिकोण परस्पर प्रबल हैं। हिस्टोग्राम दृष्टिकोण उन मामलों में भी काम कर सकता है जब एक ही पैनोरमा की छवियों के बीच कोई चौराहा और सामान्य हिस्से नहीं होते हैं (चित्र 3 में उदाहरण देखें)। हालांकि, कुछ मामलों में छवियों के बीच एक चौराहा होता है, लेकिन शेष भाग रंग में बहुत भिन्न होते हैं (उदाहरण के लिए, सूरज ने एक बादल के पीछे सेट किया है)। इस मामले में, हिस्टोग्राम एक दूसरे से बहुत दूर होंगे, और सामान्य भागों की खोज यह निर्धारित कर सकती है कि ये चित्र अभी भी एक ही ओवरलैम द्वारा एक ही पैनोरमा से संबंधित हैं (चित्र 1 और 2 में उदाहरण देखें)।


अंजीर। 3. एक श्रृंखला का एक उदाहरण जिसमें समान पैनोरमा (3, 4 और 5) के चित्रों के बीच आम प्रमुख बिंदुओं वाले क्षेत्र नहीं हैं, लेकिन रंग हिस्टोग्राम के कारण, सही वर्गीकरण प्राप्त होता है (चित्र 1 और 2 अतिरेक हैं )।

जैसा कि प्रयोगों ने दिखाया है, अधिकांश सही उत्तर अकेले हिस्टोग्राम दृष्टिकोण देने में सक्षम हैं, और केवल कुछ मामलों में दूसरे दृष्टिकोण के अलावा वर्गीकरण में सुधार करता है।

जो लोग कंप्यूटर विज़न और इन दो दृष्टिकोणों के विवरण में रुचि रखते हैं, उनके लिए निम्नलिखित दो खंड लिखे गए हैं, और बाकी सभी को दो दृष्टिकोणों और परिणामों के संयोजन के लिए आगे बढ़ने के लिए आमंत्रित किया गया है।

हिस्टोग्राम दृष्टिकोण का विवरण


कार्यान्वयन के दौरान, YCrCb रंग स्थान का उपयोग किया गया था, क्योंकि इसमें चमक घटक स्पष्ट रूप से हाइलाइट किया गया था। यह आपको इस घटक के लिए कम संख्या में डिब्बे (समूहन अंतराल) लेने की अनुमति देता है और जिससे रोशनी और छाया में परिवर्तन करने के लिए एल्गोरिथ्म की स्थिरता बढ़ जाती है।

इसके अलावा, हिस्टोग्राम के निर्माण के लिए इन तीन घटकों (वाई, सीआर, सीबी) में, हमने एक और जोड़ा - रंगों की स्थानिक व्यवस्था को ध्यान में रखने के लिए छवि में पिक्सेल का समन्वय । यह विचार आपको उन वस्तुओं के रंगों की अधिक सटीक रूप से तुलना करने की अनुमति देता है जो आमतौर पर एक ही ऊंचाई पर स्थित होते हैं: सड़क की तुलना सड़क, घास के साथ घास, आकाश के साथ आकाश की तुलना की जानी चाहिए। क्षैतिज पट्टियों में छवि का ऐसा विभाजन इस तथ्य के कारण पेश किया गया था कि प्रतियोगिता के आंकड़ों में एक ही पैनोरमा के अंदर की छवियों को मुख्य रूप से क्षैतिज रूप से एक दूसरे के सापेक्ष स्थानांतरित किया जाता है।

इस प्रकार, चमक के लिए 12 डिब्बे, दो रंग घटकों में से प्रत्येक के लिए 256 डिब्बे, और पिक्सेल के लिए 4 डिब्बे के साथ एक चार-आयामी हिस्टोग्राम का निर्माण किया गया था।

हिस्टोग्राम के बीच की दूरी की गणना करने के लिए, उनके चौराहे ( हिस्टोग्राम इंटरसेक्शन दूरी ) का उपयोग किया गया था। एक ही रिज़ॉल्यूशन की छवियों के लिए, यह दूरी वास्तव में दो छवियों के बीच समान पिक्सेल की संख्या को दर्शाती है।

स्थानीय सुविधाओं के आधार पर दृष्टिकोण का विवरण


कंप्यूटर दृष्टि में सबसे सफल तरीकों में से एक छवि में अद्वितीय स्थानीय विशेषताओं का उपयोग है, उदाहरण के लिए कोणों या बूँद के केंद्र (छोटे सजातीय क्षेत्र)। यह दृष्टिकोण लागू होता है यदि दृश्य काफी पाठ्य है, अर्थात इसमें बड़ी संख्या में ऐसी स्थानीय विशेषताएं हैं। Yandex.Maps से छवियाँ बनावट सड़क दृश्यों को दर्शाती हैं, इसलिए यह दृष्टिकोण लागू करने के लिए उचित है। हालांकि, प्रतिस्पर्धी डेटा सेट में कई कठिनाइयां हैं: छवियों में कम रिज़ॉल्यूशन (300x300 पिक्सेल) है और अक्सर बड़े गैर-बनावट क्षेत्र (डामर, आकाश, ...) होते हैं। इस तरह के एक कम रिज़ॉल्यूशन में स्थानीय विशेषताओं के डिटेक्टर की कम पुनरावृत्ति होती है: छवियों में से एक में पाया जाने वाला मुख्य बिंदु अक्सर एक ही पैनोरमा की दूसरी छवि में नहीं पाया जाएगा, और हम यह निर्धारित नहीं कर पाएंगे कि छवियों के बीच पत्राचार हैं। इन समस्याओं को हल करने के लिए, हमने लोकल फीचर्स डिटेक्टर के ऐसे पैरामीटर सेट किए हैं ताकि यह इमेज (~ 10k) में बड़ी संख्या में मुख्य बिंदुओं को खोजे। हालांकि, यह इस तथ्य की ओर जाता है कि तुलना की गई छवियों पर विशेषताएं कम अद्वितीय हो जाती हैं, और जब मिलान सुविधाओं की खोज करते हैं, तो अक्सर झूठे मिलान पाए जाते हैं। इसलिए, सही मैचों का चयन करने के लिए, हमने कई अतिरिक्त फिल्ट्रेशन लागू किए। चलिए डिटेल्स पर चलते हैं।

  1. स्थानीय सुविधाओं के डिटेक्टर के रूप में, हमने FAST का उपयोग किया, जो आपको छवि में कोणों को जल्दी से खोजने की अनुमति देता है। एल्गोरिथ्म के लिए विभिन्न कैमरा पदों पर कब्जा कर लिया वस्तुओं में दूरी में परिवर्तन के लिए प्रतिरोधी होने के लिए, विभिन्न पैमानों की स्थानीय विशेषताओं का पता लगाना आवश्यक है। ऐसा करने के लिए, हम गाऊसी छवि पिरामिड के 4 स्तरों का उपयोग करके छवियों को स्केल करते हैं, प्रत्येक स्तर पर FAST चलाते हैं और पाए गए प्रमुख बिंदुओं के सेट को मिलाते हैं।
  2. प्रत्येक छवि के प्रमुख बिंदुओं के लिए, हम उनके परिवेश के विवरणों (विवरणकों) की गणना करते हैं। हमने SURF डिस्क्रिप्टर का उपयोग किया, जो कि अधिक प्रसिद्ध SIFT की तुलना में तेज़ है, लेकिन इसमें तुलनीय गुणवत्ता है।
  3. इसके बाद, हम गणना किए गए विवरणों का उपयोग करके दो छवियों में एक दूसरे के लिए महत्वपूर्ण बिंदुओं को पाते हैं, जो वास्तविक संख्याओं के 64-आयामी वैक्टर हैं। इसके लिए, एक छवि के प्रत्येक विवरणक के लिए, वर्णनकर्ता वैक्टर के बीच की दूरी के साथ L1 के साथ एक और छवि पर निकटतम विवरणक पाया जाता है। यह दूरी मानक यूक्लिडियन दूरी की तुलना में अधिक शोर प्रतिरोधी है। चूंकि हमारे पास बड़ी संख्या में स्थानीय विशेषताएं हैं, इसलिए संपूर्ण विवरण खोजने के लिए निकटतम वर्णनकर्ता को खोजने में बहुत अधिक समय लगेगा। इसलिए, हमने OpenCV में एकीकृत FLANN लाइब्रेरी का उपयोग करके निकटतम विवरणक के लिए एक अनुमानित खोज का उपयोग किया।
  4. स्थानीय विशेषताओं के बीच पाए गए पत्राचार को क्रॉस-चेक विश्वसनीयता मानदंड द्वारा फ़िल्टर किया जाता है, जो सभी पत्राचार केवल एक-से-एक को छोड़ देता है।
  5. हम शेष पत्राचारों को y- निर्देशांक द्वारा फ़िल्टर करते हैं: यदि y- मैच से जुड़े बिंदुओं के निर्देशांक 100 पिक्सेल (पैरामीटर मान को प्रयोगात्मक रूप से चुना गया है) से भिन्न होते हैं, तो हम इस पत्राचार को गलत मानते हैं। यह फिल्टर इस तथ्य से उचित है कि प्रतिस्पर्धी छवियों में केवल क्षैतिज पैनोरमा पाए गए थे।
  6. हम स्थानीय विशेषताओं के बीच एक-से-एक पत्राचार के सेट के अनुसार RANSAC योजना के अनुसार होमोग्राफी मैट्रिक्स की गणना करते हैं। सिद्धांत के अनुसार, अगर 3 डी दुनिया में एक ही विमान पर झूठ बोलते हैं, तो छवि बिंदुओं (कैमरे की स्थिति में एक मनमाना परिवर्तन के साथ) के बीच एक होमोग्राफी परिवर्तन होता है। गैर-प्लानर वस्तुओं के लिए, हम एक होमोग्राफ़ी परिवर्तन की भी तलाश कर सकते हैं यदि ऑब्जेक्ट के अंकों का समतल आकार से विचलन कैमरे से वस्तु की दूरी से बहुत कम है। पैनोरमा की प्रतिस्पर्धी छवियों के लिए होमोग्राफी की खोज निम्नलिखित तथ्यों द्वारा उचित है: 1) विमानों की उपस्थिति शहरी दृश्यों में वस्तुओं की विशेषता है; 2) वस्तुओं अक्सर उन्हें फ्लैट पर विचार करने के लिए पर्याप्त हैं; 3) होमोग्राफी की गणना के लिए मूलभूत मैट्रिक्स को खोजने की आवश्यकता से कम RANSAC पुनरावृत्तियों की आवश्यकता होती है।

    RANSAC होमोग्राफी खोज चक्र में, कई होम्युरिस्टिक्स का उपयोग अगले होमोग्राफी परिकल्पना की गुणवत्ता का मूल्यांकन करने के लिए किया गया था: होमोग्राफी मैट्रिक्स की न्यूनतम एकवचन संख्या के आधार पर एक फिल्टर, एक इनलेयर फिल्टर (होमोग्राफी मैट्रिक्स की वर्तमान परिकल्पना से मेल खाता मिलान), ज्ञात कोणों के झुकावों में परिवर्तन के अनुसार, बारीकी से बंद iners की जगह । नतीजतन, होमोग्राफी का चयन किया गया, जिसमें सबसे बड़ी संख्या में शौचालय थे।
  7. छवियों के बीच निकटता के एक उपाय के रूप में, होमोग्राफी मैट्रिक्स के लिए इनले की संख्या ली गई है।


कई चित्रों में, छवियों के बीच एक छोटा सा चौराहा भी इस एल्गोरिथ्म के लिए पर्याप्त संख्या में संबंधित महत्वपूर्ण बिंदुओं को खोजने के लिए पर्याप्त था। तो, वर्णित एल्गोरिथ्म के संचालन का एक दिलचस्प और अप्रत्याशित उदाहरण अंजीर में दिखाया गया है। 4।


अंजीर। 4. एक मज़ेदार स्थिति जहां तस्वीरों को आकाश में एक ही बादलों की उपस्थिति से एक चित्रमाला में जोड़ा जा सकता है। स्नैपशॉट के इस जोड़े में, हिस्टोग्राम बड़े छाया के कारण असुरक्षित महसूस करते हैं, लेकिन स्थानीय विशेषताएं और बादल मौसम स्थिति को बचाते हैं।

दो दृष्टिकोणों का मेल


वर्णित दृष्टिकोण हमें छवियों के बीच दो प्रकार की दूरी की गणना करने की अनुमति देता है। दोनों दृष्टिकोणों को ध्यान में रखते हुए, हम इन दूरियों को इस प्रकार संयोजित करते हैं:

डी कंघी = मिनट ( सी * डी हिस्ट , डी करतब ),

जहाँ
डी कंघी - संयुक्त दूरी,
डी हिस्ट और डी करतब अंतराल के लिए सामान्यीकृत दूरी हैं [0, 1], क्रमशः हिस्टोग्राम और स्थानीय विशेषताओं पर दृष्टिकोण का उपयोग करके गणना की जाती है;
सी - एक से कम गुणांक, जो हिस्टोग्राम के उपयोग से एल्गोरिथ्म के परिणामों को अधिक प्राथमिकता देने की अनुमति देता है।

यह वास्तव में न्यूनतम कार्य था जिसे दो दृष्टिकोणों को संयोजित करने के लिए चुना गया था, क्योंकि यदि कम से कम दो में से एक दूरी छोटी है, तो चित्र वास्तव में करीब हैं।

एक ही श्रृंखला की छवियों के बीच युग्मित संयुक्त दूरी की गणना करने के बाद, हम इन छवियों के एकल-लिंकेज का उपयोग करके एग्लोमेरेटिव पदानुक्रमित क्लस्टरिंग करते हैं। तत्वों की अधिकतम संख्या के साथ क्लस्टर वांछित पैनोरमा के रूप में पहचाना जाता है, और शेष चित्र बेमानी हैं। इस कार्य के लिए इस तरह की पदानुक्रमित क्लस्टरिंग बहुत स्वाभाविक रूप से उपयुक्त है, क्योंकि एक पैनोरमा के भीतर दूर-दूर की छवियां हो सकती हैं जो एक दूसरे के करीब अन्य पैनोरमा छवियों की एक श्रृंखला से जुड़ी होती हैं, और यह विधि आपको एक पैनोरमा में ऐसी छवियों को संयोजित करने की अनुमति देती है।

परिणाम


इसलिए, हमारे एल्गोरिथ्म पर कड़ी मेहनत करने के बाद, उन्होंने अंतिम डेटा सेट पर बहुत अच्छा परिणाम दिखाया: 99.44% छवियों को सही ढंग से वर्गीकृत किया गया था, जिससे हमें प्रतियोगिता में पहला स्थान प्राप्त करने की अनुमति मिली। और जीत का जश्न मनाने के लिए $ 100,000 का पुरस्कार भी पाएं :-)

प्रतियोगिता का पाठ


अंत में, हम कई सबक साझा करना चाहते हैं जो हमने प्रतियोगिता में भाग लेकर सीखा या समेकित किया है। वे निश्चित रूप से हमारे लिए उपयोगी हैं।

!




लेख के लेखक:
मारिया डिमाशोवा (इत्सेज़, अनुसंधान अभियंता), एमडी
इलिया लिसेनकोव (इत्सेज़, अनुसंधान अभियंता), बिली

Source: https://habr.com/ru/post/In158645/


All Articles