डीप लर्निंग - न केवल मोबाइल फोन पर सील या हम कैसे लोकोमोटिव ट्रॉलियों का निदान करते हैं


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

कार्य विवरण

शिफ्ट फ़ोरमैन को ब्रेक पैड और डेटा आउटपुट के दोषों का पता लगाने के लिए एक हार्डवेयर-सॉफ़्टवेयर कॉम्प्लेक्स बनाना आवश्यक है।

कार्य के लिए आवश्यक शर्तें

जैसा कि यह निकला, बड़ी संख्या में पैड, लगभग 80%, पीटीएल में परिवर्तन (लोकोमोटिव तकनीकी निरीक्षण बिंदु), और यह प्रत्येक लोकोमोटिव के लिए हर 72 घंटे में होता है। PTOL में चेक का थोक लोकोमोटिव ट्रॉली के बाहरी भाग के मास्टर द्वारा एक दृश्य निरीक्षण है।



समस्या को हल करने के लिए योजना:

  1. उपकरण चयन
  2. डेटा संग्रह
  3. मॉडल प्रशिक्षण
  4. REST API के साथ सर्वर डेवलपमेंट
  5. एंड्रॉइड टैबलेट क्लाइंट विकास
  6. कैमरों और प्रकाश की नियुक्ति के लिए एक रैक का डिजाइन और संयोजन
  7. परीक्षण संचालन

उपकरण चयन

शायद सबसे कठिन में से एक, यदि सबसे कठिन नहीं है, तो काम सीमित बजट और समय में कैमरे, लेंस और प्रकाश का चयन करना था: एमवीपी को डेढ़ महीने में किया जाना था। कुछ दिनों में, Google ने मुझे मशीन विज़न के लिए हार्डवेयर पर एक विशेषज्ञ बना दिया। पसंद को बस्लर कैमरों पर बनाया गया था और कैमरे के साथ सिंक्रनाइज़ एक 6k ल्यूमेंस स्पंदित बैकलाइट था। बेसलर (70 फ्रेम / सेकेंड, 1920x1024 तक रिज़ॉल्यूशन) के पक्ष में, इसके अजगर एपीआई ने बात की, जिसने सभी सिस्टम घटकों के एकीकरण की सुविधा प्रदान की, केवल माइनस कैमरों की कीमत ~ 100 tr है।

कैमरों के लिए लेंस की पसंद आवश्यक फोकल लंबाई और देखने के कोण की समझ की कमी से जटिल थी, मुझे जोखिम उठाना पड़ा, लेकिन मैंने एक लेंस कैलकुलेटर और एक चुटकी भाग्य लिया।

बैकलाइट: एल ई डी के लिए चमक, उनके प्रकार, और लेंस मापदंडों के लिए आवश्यक समय प्रयोगात्मक रूप से स्थापित किया गया था। मैंने एल ई डी के लिए 3 अलग-अलग लेंस संशोधनों की कोशिश की, 30, 45, 60 के कोण के साथ, अंततः 45 के कोण के साथ मैट लेंस को चुना।





कैमरे के लिए पल्स कंट्रोल सिग्नल को असेंबल करना और परीक्षण करना



सर्वर हार्डवेयर के लिए, मैंने Intel Core i7-7740X Kaby Lake, 46gb RAM, 1 TB SSD और 3x1080Ti लिया - यह 2 3-सेक्शन लोकोमोटिव की भविष्यवाणी करने के लिए पर्याप्त है जो 2 मिनट से अधिक नहीं है।

वीडियो कार्ड से एक सैंडविच का सामूहिक खेत 10 डिग्री तक उड़ता है।



डेटा संग्रह

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

यह केवल एक चमत्कार पर विश्वास करने के लिए बना रहा, वृद्धि पर ढेर, गलत खंडों को हटाने के लिए उत्तराधिकार के साथ आया, जिनमें से कई थे, क्योंकि मैंने विरोधी उदाहरणों के बारे में नहीं सोचा था।

उम्मीद:



वास्तविकता:





यहाँ यह कहना होगा कि भारी पहनावा ब्लॉक का एक भी उदाहरण नहीं था।

मॉडल प्रशिक्षण

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

def train_transform(p=1): return Compose([ OneOf([ CLAHE(clip_limit=2), IAASharpen(), IAAEmboss(), RandomBrightnessContrast(brightness_limit=0.8, contrast_limit=0.8), HueSaturationValue(hue_shift_limit=50, sat_shift_limit=50, val_shift_limit=50), RGBShift(r_shift_limit=50, g_shift_limit=50, b_shift_limit=50), JpegCompression(quality_lower=30), RandomGamma(), GaussNoise() ], p=0.3), OneOf([ Blur(), MotionBlur(), MedianBlur(), ], p=0.3), ShiftScaleRotate(shift_limit=0.2, scale_limit=0.4, rotate_limit=5, p=0.5), Normalize(p=1) ], p=p) 

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

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

प्रशिक्षण पाइपलाइन यहाँ से MICCAI 2017 रोबोटिक इंस्ट्रूमेंटेशन से लिया गया था। प्रशिक्षण प्रक्रिया में तीन चरण होते हैं: एक जमे हुए एनकोडर के साथ प्रशिक्षण, पूरे नेटवर्क को प्रशिक्षित करना और CosineAnnealingLR के साथ प्रशिक्षण। पहले दो चरण ReduceLROnPlateau का उपयोग करते हैं

Android पर एक REST सर्वर और क्लाइंट प्रोग्रामिंग

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

कैमरों और प्रकाश की नियुक्ति के लिए एक रैक का डिजाइन और संयोजन

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





परीक्षण के लिए हो रही है!


परिणाम सभी अपेक्षाओं को पार कर गया। कंप्यूटर दृष्टि विशेषज्ञों के लिए, कार्य काफी सरल और सरल लग सकता है। हालांकि, मुझे दो चीजों के कारण कुछ संदेह था: सबसे पहले, प्रशिक्षण सेट छोटा था और इसमें बहुत पतले ब्लॉक जैसे सीमा मामले नहीं थे; दूसरे, परीक्षण बहुत अलग शूटिंग और प्रकाश व्यवस्था की स्थिति में हुए।





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





अंत में, मैं यह कहना चाहता हूं कि प्रौद्योगिकी ने खुद को बहुत अच्छी तरह से दिखाया है और, मेरी राय में, मानव कारक को खत्म करने, एक लोकोमोटिव के डाउनटाइम को कम करने और पूर्वानुमान बनाने के मामले में काफी संभावनाएं हैं।

धन्यवाद

ओडेसाई समुदाय के लिए धन्यवाद, आपकी मदद के बिना मैं इतने कम समय में यह सब नहीं कर पाऊंगा! N01z3 , DL के लिए बहुत-बहुत धन्यवाद, जिन्होंने मुझे अपनी अमूल्य सलाह और असाधारण व्यावसायिकता के लिए DL लेने की कामना की! वैचारिक मास्टरमाइंड वासिली मानको (सीईओ, औरोराई कंपनी), सर्वश्रेष्ठ डिजाइनर तात्याना ब्रूसोवा को बहुत धन्यवाद।

आपको मिलते हैं कहानी के अगले एपिसोड में!

औरोराय, llc

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


All Articles