कैसे हमने एक तंत्रिका नेटवर्क के साथ खेल स्काउट को बदल दिया


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

हम ( कॉन्स्टेंट ) सट्टेबाजी के आईटी उत्पादों को विकसित करने में विशेषज्ञ हैं: मोबाइल एप्लिकेशन, साइटें, और हाल ही में हम कंप्यूटर विजन और मशीन लर्निंग के क्षेत्र में परियोजनाएं विकसित कर रहे हैं। उनमें से एक पर चर्चा की जाएगी।

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


मुझे आपकी सभी गेंदों और आपके क्यू के निर्देशांक और गति की आवश्यकता है।

ध्यान दें कि परिणाम को सही ढंग से निर्धारित करने के लिए कई खेल खेलों के विश्लेषण में, आपको घटनाओं की श्रृंखला को सटीक रूप से ट्रैक करना होगा। इसलिए इन घटनाओं को निर्धारित करने के लिए जिम्मेदार घटकों की विश्वसनीयता पर उच्च मांग। आइए एक सरल उदाहरण में समझाते हैं: यदि औसतन, खिलाड़ी 20 गेंदों के लिए सभी गेंदों को जेब में रोल करते हैं, तो 99% हिट के परिणाम का निर्धारण करने की विश्वसनीयता के साथ, ड्रॉ में विजेता का निर्धारण करने की संभावना केवल 82% (0.99 20 ≈0.817) है। मैच एक खिलाड़ी की पांच जीत तक रहता है, यानी 5 से 9 तक ड्रॉ होता है, औसतन 7. इस प्रकार, औसतन, घटनाओं के निर्धारण में इस तरह की विश्वसनीयता के साथ, मैच का सही परिणाम केवल 24% (0.817 7 ≈0) की संभावना के साथ प्राप्त होता है। 24)। लेकिन शुरुआत में त्रुटि की संभावना केवल 1% थी!

नौ ताल


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

कंप्यूटर दृष्टि


सबसे पहले, आइए बात करते हैं कि एक तंत्रिका नेटवर्क डेटा कैसे प्राप्त करता है। इनपुट सूचना धारा - तालिका के ऊपर स्थित एक कैमरे से वीडियो प्रसारण और 60 फ्रेम प्रति सेकंड की आवृत्ति पर शूटिंग।


सिस्टम द्वारा संसाधित वीडियो स्ट्रीम के फ्रेम का एक उदाहरण।

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


प्रणाली की सामान्य योजना।

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

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


लिंकनेट -34 नेटवर्क आर्किटेक्चर (देखें arXiv )।

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

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


एक छवि और इसके संबंधित मार्कअप का एक उदाहरण। तंत्रिका नेटवर्क का कार्य इनपुट छवि से ऐसे "मास्क" प्राप्त करना है।

तेज, तेज, और भी तेज ...


डेटा के अंतिम उपयोगकर्ता को वास्तविक समय (या इससे भी बेहतर - वास्तविक समय की तुलना में तेज़) में जानकारी की आवश्यकता होती है। तंत्रिका नेटवर्क को गति देने के लिए कई तकनीकों का इस्तेमाल किया गया, जैसे कि 2 डी कनवल्शन (बैचन फ्यूजन) के साथ पैकेट सामान्यीकरण, जो आपको कई परतों के बिना एक समान नेटवर्क प्राप्त करने की अनुमति देता है। वीडियो कार्ड पर पिछले एक के प्रसंस्करण के समानांतर एक नए फ्रेम की तैयारी और लोडिंग भी एक अच्छा परिणाम देता है। इसके अलावा, कर्मियों के साथ तैयारी के संचालन और "मास्क" के बाद के प्रसंस्करण का हिस्सा जीपीयू पर किया जाता है। यहां तक ​​कि सरल विचार ने प्रत्येक फ्रेम के लिए कुल प्रसंस्करण समय को कम करने में मदद की - फ़्लोट 32 नेटवर्क से प्राप्त एक के बजाय uint8 के रूप में बिनराइजेशन के बाद वीडियो कार्ड से रैम तक नेटवर्क के परिणाम को स्थानांतरित करने के लिए।

नतीजतन, सभी आवश्यक पूर्व और बाद के प्रसंस्करण के साथ एक फ्रेम का सिमेंटिक विभाजन औसतन केवल 17 एमएस लेता है! और सिस्टम के संचालन के लिए, केवल एक गेमिंग वीडियो कार्ड पर्याप्त है।

क्या कोई टकराव था?


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


डेवलपर्स के भयानक सपने में बिलियर्ड्स खिलाड़ी।

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

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


कलमन फ़िल्टर द्वारा गेंदों की स्थिति और गति के निर्धारण को सुचारू करने का प्रदर्शन।
वाम: कच्चा: प्रत्यक्ष माप का परिणाम, गेंदों के वैक्टर गति के अनुरूप हैं, संख्याएं गति का अनुमान दर्शाती हैं; यूकेएफ: फिल्टर परिणाम।
दाएं: कलमन फिल्टर के साथ गेंद की गति की दिशा को चौरसाई करने का एक उदाहरण। नीला रंग माप परिणाम दिखाता है, लाल - फ़िल्टरिंग का परिणाम। दिशा में अचानक कूदता गेंद टकराव के अनुरूप है।

गेंदों की स्थिति और प्रक्षेपवक्र पर डेटा तथाकथित निम्न-स्तरीय घटना की घटना को निर्धारित करना संभव बनाता है, भले ही यह "फ्रेम के बीच" गिर गया हो।



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


गेंदों से एक रोम्बस के प्रारंभिक ब्रेकिंग के दौरान वीडियो स्ट्रीम के अनुक्रमिक फ्रेम। एक मॉडल के बिना जो गेंदों के प्रक्षेपवक्र का वर्णन करता है, यह निर्धारित करना मुश्किल है कि किस गेंद का सामना करना पड़ा है।

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

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

तो हम खेल रहे हैं या नहीं?


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


सिस्टम यह समझने की कोशिश कर रहा है कि खेल शुरू हुआ है या नहीं।

और आखिरकार कौन जीता?


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

यह कैसे काम करता है


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


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


सिस्टम कैसे काम करता है, इसका तकनीकी दृश्य। "क्यू बॉल" के पास वाली गेंद इंगित करती है कि क्यू बॉल का पहली बार सामना करना पड़ा है; "राज्य" - प्रणाली की स्थिति: यह "प्रतीक्षा" हो सकता है - जब तक खिलाड़ी हिट नहीं होता है, और "खेल" - जब गेंदें गति में होती हैं; "खिलाड़ी" - वर्तमान खिलाड़ी; गेंदों के आसपास की संख्या सेमी / एस में गति का अनुमान दर्शाती है।

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


All Articles