التعلم العميق - ليس فقط الأختام على الهواتف المحمولة أو كيف نشخص عربات القاطرة


منذ يومين فقط ، نقل أوروراي نظامًا للتعرف على العيوب ومراقبة العربات لقاطرات إيرماك إلى مرحلة التشغيل التجريبي. كانت المهمة غير تافهة ومثيرة للاهتمام للغاية ، وكانت الخطوة الأولى منها تقييم حالة منصات الفرامل وعرض الدعامة. تمكنا من حل المشكلة بدقة 1 مم بسرعة قاطرة تصل إلى 30 كم / ساعة! أريد أن أشير إلى أنه نظرًا للخصوصيات ، كان من الممكن استخدام "TTA (زيادة وقت الاختبار)" - مثال حي على اختراق المنافسة على غرار kaggle الذي لا يتناسب بشكل جيد مع تجزئة prod والدلالي بناءً على ترميز se_resnext50 ، والذي يعطي نتيجة دقيقة بشكل مدهش في تنبؤ القناع .

وصف المهمة

من الضروري إنشاء مجمع برمجيات الأجهزة للكشف عن عيوب منصات الفرامل وإخراج البيانات إلى عامل التحول.

المتطلبات الأساسية للمهمة

كما اتضح ، يتغير عدد كبير من الفوط ، حوالي 80 ٪ ، في PTL (نقاط الفحص الفني للقاطرة) ، وهذا يحدث كل 72 ساعة لكل قاطرة. الجزء الأكبر من الشيكات في PTOL هو الفحص البصري من قبل سيد الجزء الخارجي من عربة قاطرة.



خطة لحل المشكلة:

  1. اختيار المعدات
  2. جمع البيانات
  3. التدريب النموذجي
  4. تطوير الخادم مع واجهة برمجة تطبيقات REST
  5. تطوير عميل لوحي Android
  6. تصميم وتجميع الرف لوضع الكاميرات والضوء
  7. التشغيل التجريبي

اختيار المعدات

ربما كانت إحدى أصعب المهام ، إن لم تكن أصعبها ، اختيار الكاميرات والعدسات والإضاءة في ميزانية ووقت محدودين: كان يجب إجراء MVP في غضون شهر ونصف. في غضون يومين ، جعلني Google خبيرًا في أجهزة رؤية الجهاز. تم الاختيار على كاميرات Basler والإضاءة الخلفية النابضة التي يبلغ طولها 6 كيلو وات ، متزامنة مع الكاميرا. لصالح Basler (70 إطارًا / ثانية ، دقة تصل إلى 1920 × 1024) تحدثت واجهة برمجة تطبيقات python الخاصة بها ، والتي سهلت إلى حد كبير تكامل جميع مكونات النظام ، ناقص الوحيد هو سعر الكاميرات ~ 100 طن.

لقد كان اختيار العدسة للكاميرات معقدًا بسبب عدم فهم الطول البؤري وزاوية المشاهدة اللازمة ، واضطررت إلى المخاطرة ، لكني أخرجت آلة حاسبة للعدسة وقرصة الحظ.

الإضاءة الخلفية: تم تحديد الوقت اللازم لتوهج المصابيح ، ونوعها ، ومعلمات العدسة. لقد جربت 3 تعديلات مختلفة للعدسات لـ LEDs ، بزاوية 30 ، 45 ، 60 ، وفي النهاية اخترت العدسات غير اللامعة بزاوية 45.





تجميع واختبار إشارة التحكم في النبض للكاميرا



بالنسبة إلى أجهزة الخادم ، أخذت Intel Core i7-7740X Kaby Lake و 46 جيجابايت من ذاكرة الوصول العشوائي و 1 تيرابايت SSD و 3 x1080Ti - وهذا يكفي للتنبؤ بقاطرتين من 3 أقسام في أكثر من دقيقتين.

تهب المزرعة الجماعية لساندويتش من بطاقات الفيديو 10 درجات.



جمع البيانات

إن إنشاء مجموعة بيانات هي أغنية منفصلة ، ولا يمكن تكليف أي شخص بهذا الحدث ، ولذا فقد تم إرسالي إلى مدينة بعيدة غير معروفة في أعماق وطننا الشاسع. صورت حوالي 400 فوط على هاتفي (!!!) . في المستقبل ، سأقول إن موظفي المستودع الشجعان ، الذين خافوا على ما يبدو من قبل المراجع من موسكو ، غيروا جميع الفوط الموجودة في القاطرات إلى أخرى جديدة ورسموها بطبقة جديدة من الطلاء ، كان الأمر ممتعاً ومخيفاً أن ننظر إليها. كنت أتطلع إلى الأسوأ ، رغم أنه لا يزال هناك حوالي 400 صورة من كتل مختلفة تمامًا صنعتها في مستودع موسكو.

بقي فقط أن أؤمن بالمعجزة ، كومة على التعزيزات ، والتوصل إلى الاستدلال لإزالة شرائح خاطئة ، والتي كان هناك الكثير منها ، لأنني لم أفكر في الأمثلة المضادة.

الانتظار:



الواقع:





هنا يجب أن يقال أنه لم يكن هناك مثال واحد على الكتل البالية.

التدريب النموذجي

أظهر النموذج الذي يحتوي على مشفر se_resnext50 وفك التشفير مع كتلة scse من هذا المستودع نفسه بشكل أفضل ، ولكن كان يجب إزالة scse (تطبيق pytorch) لأسباب تسريع عملية التنبؤ ، وذلك بسبب كان لا بد من التنبؤ بها في دقيقة واحدة. للتدريب النموذجي ، تم استخدام إطار عمل 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) 

كدالة فقد ، اخترت خسارة Lovász-Softmax ، لقد تصرفت بنفس الطريقة تقريبًا مثل bce + jaccard ، ولكن أفضل من BCE ، التي تناسبها كثيرًا على العلامات. كان اختيار خوارزمية لتحديد الرقم التسلسلي لزوج من القطع والكتل يمثل أيضًا تحديا ، كانت هناك خيارات مع التعلم المتري ، لكنني كنت بحاجة لإظهار النتيجة بسرعة ، وجاءت الفكرة لتمييز الكتل في الفئتين 1 و 2 ، حيث 1 هي الاتجاه إلى اليمين ، و 2 إلى اليسار. بدأت الشبكة في التنبؤ ليس فقط القناع ، ولكن الاتجاه. باستخدام الاستدلال البسيط ، كان من الممكن تحديد الأرقام التسلسلية للكتل وعجلات العجلات بشكل موثوق ، ثم تحديد متوسط ​​التنبؤات ، في الواقع ، باستخدام TTA مع تحول بسيط في الكائن أثناء الحركة وزوايا الإضاءة المختلفة تعطي نتيجة جيدة في دقة القناع حتى بدقة 320 × 320.

بشكل منفصل ، كانت المهمة لتحديد الخلل على شكل إسفين من الكتل ، كانت هناك العديد من الأفكار من التحول هوف ، بمناسبة زوايا / حدود الكتلة مع نقاط / خطوط من فئات مختلفة. في النهاية ، فاز الخيار بكيفية قيام العمال بذلك: تحتاج إلى التراجع 5 سم عن الحافة الضيقة وقياس العرض ، إذا كان ضمن النطاق الطبيعي ، ثم تخطي الكتلة.

تم الحصول على خط التدريب من هنا بواسطة MICCAI 2017 Robotic Instrument Segmentation . تتكون عملية التدريب من ثلاث مراحل: التدريب باستخدام جهاز تشفير مجمد ، تدريب الشبكة بالكامل والتدريب مع CosineAnnealingLR . استخدام المرحلتين الأوليين ReduceLROnPlateau .

برمجة خادم REST والعميل على Android

بالنسبة لخادم REST ، اخترت قارورة - من الأسهل عدم طرح إطلاق خلال دقيقتين. قررت إنشاء قاعدة بيانات للتخزين بيدي في شكل بنية مجلد بسيطة وملف حالة الحالي. يعد تطبيق الجهاز اللوحي على Android Studio ، الاستفادة من أحدث الإصدارات مجرد جنة للمطور.

تصميم وتجميع الرف لوضع الكاميرات والضوء

تذكرت الأيام الخوالي عندما أنشأت محطات شحن للسيارات الكهربائية ، وكانت هذه التجربة مفيدة للغاية - قررنا أن نجعلها من رفوف الألومنيوم الهيكلية المطبوعة على طابعة ثلاثية الأبعاد.





الوصول إلى الاختبار!


النتيجة تجاوزت كل التوقعات. بالنسبة لمتخصصي رؤية الكمبيوتر ، قد تبدو المهمة بسيطة وبسيطة. ومع ذلك ، كان لدي بعض الشكوك بسبب أمرين: أولاً ، كانت مجموعة التدريب صغيرة ولم تحتوي على حالات حدودية مثل الكتل الرقيقة جدًا ؛ ثانياً ، تم إجراء الاختبارات في ظروف مختلفة جدًا لإطلاق النار والإضاءة.





يصل Jaccard على التحقق من الصحة إلى 0.96 ، ويتم تجزئة الوسائد بصريًا بوضوح شديد ، وتضيف متوسطًا على العديد من الصور والحصول على دقة جيدة للغاية في تقدير عرض الفوط. خلال الاختبارات ، تبين أنه يمكنك العمل مع عربات القاطرات الأخرى ، ولكن التقاط كاميرات أسرع:





في الختام ، أود أن أقول إن التكنولوجيا أظهرت نفسها بشكل جيد للغاية ، وفي رأيي ، لديها إمكانات كبيرة فيما يتعلق بالقضاء على العامل البشري ، وتقليل وقت توقف القاطرة ووضع التوقعات.

شكر وتقدير

بفضل مجتمع ods.ai ، بدون مساعدتكم ، لن أكون قادرًا على القيام بكل هذا في مثل هذا الوقت القصير! شكرا جزيلا ل n01z3 ، DL ، الذي تمنى لي أن أتناول DL ، على نصيحته التي لا تقدر بثمن والاحتراف غير عادية! شكرا جزيلا للعقل المدبر الأيديولوجي فاسيلي مانكو (الرئيس التنفيذي لشركة أوروراي) ، أفضل مصمّمة الأزياء تاتيانا بروسوفا.

نراكم في الحلقة القادمة من القصة!

أوروراي

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


All Articles