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

مشكلة متجر على الانترنت من مسامير في الأوراق المالية. الآلاف أو عشرات الآلاف من النماذج. كل المسمار له وصفه وخصائصه الخاصة ، لذلك ليس هناك أمل للمرشحات. ما يجب القيام به البحث يدويا أو البحث في هايبر ماركت على الرفوف؟ في كلتا الحالتين ، هو مضيعة للوقت. نتيجة لذلك ، يتعب العميل ويذهب إلى مطرقة الظفر. لمساعدته ، سوف نستخدم شبكة عصبية. إذا تمكنت من العثور على أختام أو أرائك ، فدعها تفعل شيئًا مفيدًا - التقط البراغي والمسامير. كيفية تعليم شبكة عصبية لتحديد البراغي بسرعة وبدقة للمستخدم ،
سنخبرك في نص تقرير
ماريا ماتسكيفيتشوس ، الذي
يشارك في
Grid Dynamics في تحليل البيانات والتعلم الآلي.
مشاكل المشتري
تخيل - لقد اشترينا طاولة ، ولكن تم فقد برغي واحد صغير ، ولا يمكن تجميع الطاولة بدونها. نذهب إلى المتجر على الإنترنت للبحث ، ونرى 15000 مركز فريد من نوعه ، كل واحدة منها ربما تكون برغي لدينا.
نذهب إلى الفلاتر - هناك حوالي 10 منهم ، لكل منها 5 إلى 100 سمة. اختيار نوع القبعة واللون: قبعة مسطحة - النحاس الأصفر والأصفر - النحاس. نتلقى هذه القضية.

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

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

صعوبات التنفيذ
لقد تولينا المهمة وأدركنا أن هناك العديد من المشاكل.
مسامير تبدو على حد سواء. انظر الى الصور

هذه مسامير مختلفة. إذا قمت بقلب الصور ، يمكنك أن ترى أن الخاصية المهمة مختلفة - الرأس.

وفي هذه الصورة؟

هنا النماذج هي نفسها. الإضاءة مختلفة ، لكن في كلتا الصورتين يوجد نموذج برغي واحد.
هناك أنواع نادرة تتطلب التصنيف. على سبيل المثال ، مع "آذان" أو حلقة.
الحد الأدنى من المتطلبات لاستخدام التطبيق. يمكن للمستخدم تحميل صورة مع أي خلفية ، مع كائنات غريبة ، مع الظلال ، مع الإضاءة السيئة ، ويجب أن يعطي التطبيق النتيجة. المسمار أو الترباس على خلفية بيضاء أمر نادر الحدوث.
يجب أن يعمل التطبيق في الوقت الحقيقي. المستخدم ينتظر النتيجة هنا والآن.
المنافسين. أطلقت Amazon مؤخراً - منافس لعملائنا -
Part Finder . هذا هو التطبيق الذي يبحث عن مسامير وبراغي من صورة.

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

الخصائص المحددة التالية:
- قبعة رأس (32 سمة) ؛
- طلاء خارجي - النهاية (15 سمة) ؛
- نقطة نقطة (12 سمة) ؛
- تغطية مؤشر الترابط - تغطية مؤشر الترابط (4 سمات).
لقد فحصنا خريطة جميع العلامات وأدركنا أنه لوصف 15000 مسامير مختلفة ، فإنها تحتاج فقط إلى 50. وستكون عبارة عن مزيج من علامات مختلفة ذات سمات مختلفة. يستغرق 50 مسامير وعملة واحدة لقياس حجم المسمار في الصورة.
لذلك قرروا. قررنا الفكرة. مطلوب مزيد من البيانات.
معطيات
لقد تلقينا بيانات من العميل ، وانزعجنا قليلاً. بيانات الكتالوج - صور فوتوغرافية لكائنات على خلفية بيضاء.

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

بعد جمع البيانات ، تتمثل الخطوة التالية في فهم مكان وجود الترباس في الصورة ، إن وجد.
التعريب
درسنا طريقتين لتوطين:
اكتشاف الكائن وتقسيم الدلالي .

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

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

نموذج
أخذنا
يو نت . هذه الشبكة مغرمة جدًا في Kaggle ، وكذلك نحن الآن.

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

هناك دائما الكثير من الخلفية ، والكائن نفسه لا يكفي. لذلك ، سيعطي النموذج دائمًا دقة عالية جدًا واستدعاء منخفض جدًا. لوزن أخطاء النوع الأول والثاني بطرق مختلفة ، قررنا أن نأخذ
مؤشر تفرسكي :
عرض $$ $$ S (P ، G ، α ، β) = \ frac {| P \ cdot G |} {| P \ cdot G | + α | P / G | + β | G / P |} $$ عرض $$
يحتوي مؤشر تفرسكي على معملين ، α و β ، يزن الخطأين بشكل مختلف. إذا أخذنا α = β = 0.5 ، فسوف نحصل على معامل Dice نفسه. إذا حددنا معلمات أخرى ،
فسنحصل على فهرس Jaccard - أحد مقاييس تشابه الكائنات. بالنسبة إلى α = β = 1 - يساوي مؤشر Tversky مؤشر Jaccard.
يمكنك أيضًا الحصول على درجة Fβ. بالنسبة إلى α + β = 1 ، يتوافق مؤشر تفرسكي مع درجة Fβ.
لتحديد α و β ، أجرينا العديد من التجارب. افترضوا أنه
سيتم تغريم النموذج أصعب بسبب الأخطاء من النوع الثاني . هذا ليس سيئًا للغاية عندما يصنف النموذج بكسل خلفية كبكسل كائن. إذا كان هناك إطار خلفية صغير حول الكائن ، فهذا أمر طبيعي. لكن عندما يصنف النموذج بكسلات البرغي على أنه بكسلات خلفية تظهر على المسمار ، يصبح غير متساو ، وهذا يتعارض مع تصنيفنا.
لذلك ، قررنا زيادة المعلمة β وجعلها أقرب إلى 1 ، والمعلمة α إلى 0.

توضح الصورة أنه تم الحصول على أفضل قناع بـ β = 0.7 و α = 0.3. قررنا التوقف عن هذا وتدريب النموذج على جميع بياناتنا.
تدريب
استراتيجية التعلم صعبة للغاية. نظرًا لأننا قمنا يدويًا بترميز البيانات في الوقت الشخصي ، فقد قررنا استخدام ميزة واحدة من شبكات U-Net. تقسم كل فئة جديدة على قناة جديدة - تضيف قناة جديدة ويتم ترجمة كائن إليها.
لذلك ، في تدريبنا لم يكن هناك صورة واحدة تحتوي على كل من العملة المعدنية والترباس. كل الصور تحتوي على فئة واحدة: 10٪ - عملات معدنية ، 90٪ - مسامير.

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

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

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

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

في Xception ، بدلاً من الإلتفاف المعتاد -
Convolution - يتم
فصل Convolution . لذلك ، Xception أخف من الشبكات الأخرى ، على سبيل المثال ، مع VGG.

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

نستبدل القيم في الصيغ لحساب المعلمات ، على سبيل المثال ، لـ 16 مرشحًا. بالنسبة إلى الإلتفاف العادي ، تحتاج إلى حساب المعلمات 7 مرات أكثر من الإغلاق المفصول. بسبب هذا ، Xception هو أكثر دقة وأقل.

تدريب
أولاً ، قررنا بناء بعض الأساس وتدريب النموذج في الصورة الأصلية. كان لدينا 4 مصنفات وكان كل منها مسؤولاً عن سمة محددة. وكانت النتيجة غير مرضية.

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

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

في هذه اللحظة ، ما زلنا لا نعرف أي جانب رأس المسمار ورأسه. لمعرفة ذلك ، قطعوا الصندوق إلى نصفين ونظروا إلى المربع.

المنطقة التي تحتوي على الرأس تكون دائمًا أكبر من المساحة التي تحتوي على الطرف. بمقارنة المنطقة ، نحدد في أي جزء ، أي جزء من المسمار. نجحت ، ولكن ليس لجميع الحالات.

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

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

ولكن لسبب ما ، لم إنهاء الاقلاع. درسنا الأخطاء ورأينا الصورة.

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

كحل ، أنشأ العلماء الصينيون شبكة ضحلة. ميزته في فرعين متسلسلين في النهاية. تسمى هذه البنية
ColorNet .

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

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

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

- المدخلات : تبدأ مع صورة الخام.
- التعريب : حدد مكان وجود البرغي أو البرغي وأين توجد العملة.
- التحول والتناوب .
- التصنيف : نحن نقطع كل شيء بعناية ونصنّف ونحدد الحجم.
- تصفية .
- الخروج إلى موضع SKU محدد.
كيفية تنفيذ مشروع معقد
أكل الفيل في أجزاء . قسّم المشكلة الكبيرة إلى أجزاء.
تسمية البيانات التي سوف تعكس الواقع. لا تخف من ترميز البيانات - فهذه هي الطريقة الأكثر أمانًا ، والتي ستضمن أقصى جودة للنموذج بسرعة. طرق توليف البيانات عادة ما تسفر عن نتائج أسوأ من استخدام البيانات الحقيقية.
اختبرها . قبل بناء العديد من النماذج ، أخذنا أجزاء صغيرة من البيانات ، وقمنا بتسمية ذلك بأيدينا ، واختبرنا تشغيل كل فرضية. فقط بعد ذلك قاموا بتدريب U-Net ، المصنفات ، التناوب.
لا تعيد اختراع العجلة . غالبًا ما يكون للمشكلة التي تواجهها حلاً بالفعل. انظر على الإنترنت ، وقراءة المقالات - تأكد من العثور على شيء!
القصة حول تطبيق البحث المرئي ليست فقط عن تصنيف البراغي. يتعلق الأمر بكيفية إنشاء مشروع معقد ، لا يحتوي على نظائر ، ولكن حتى إذا كان هناك ، فإنها لا تفي بالمتطلبات التي حددناها للتطبيق.
لمزيد من المعلومات حول مشاريع Grid Dynamics والتحديات الأخرى التي يواجهها فريق Data Science ، راجع
مدونة الشركة
التكنولوجية .
تقارير ذات مثل هذا التحيز - استخدام خوارزميات التعلم الآلي في مشاريع حقيقية غير قياسية - نحن نبحث فقط عن UseData Conf . إليك المزيد حول المجالات الأكثر اهتمامًا بنا.
إرسال التطبيقات إذا كنت تعرف كيفية مزحة النماذج بحيث تطير. إذا كنت تعرف أن التقارب لا يضمن السرعة ، وكنت على استعداد لإبلاغك بما هو أكثر أهمية للاهتمام به ، فإننا ننتظر منك يوم 16 سبتمبر.