
بدأ الأمر برمته - لمدة عام الآن ، دفعت شركتي رسومًا شهرية مقابل خدمة تعرف على كيفية العثور على منطقة بها لوحات ترخيص في الصورة. تُستخدم هذه الوظيفة لرسم الأرقام تلقائيًا لبعض العملاء.
ويوم واحد ، فتحت وزارة الشؤون الداخلية لأوكرانيا الوصول إلى
سجل المركبات . الآن ، باستخدام لوحة الترخيص ، أصبح من الممكن التحقق من بعض المعلومات حول السيارة (الصنع ، الطراز ، سنة الصنع ، اللون ، إلخ)! تلاشى الروتين الممل للبرمجة الخطية قبل مهمة جديدة - لقراءة الأرقام عبر قاعدة الصورة بأكملها والتحقق من صحة هذه البيانات مع تلك التي حددها المستخدم. أنت نفسك تعرف كيف يحدث "أنار العيون" - تم قبول المكالمة ، وأصبحت جميع المهام الأخرى مملة ورتيبة لفترة من الوقت ... لقد بدأنا العمل وحققنا نتائج جيدة ، والتي في الواقع ، قررنا مشاركتها مع المجتمع.
للإشارة: إلى موقع AUTO.RIA.com ، تتم إضافة حوالي 100000 صورة يوميًا.
لطالما عرف Datasaentists وقدرته على حل مثل هذه المشكلات ، لذلك كتبت
أنا و
dimabendera هذه المقالة خصيصًا للمبرمجين. إذا لم تكن خائفًا من عبارة "الشبكات التلافيفية" وتعرف كيف تكتب "Hello World" في الثعبان - فأنت مرحب بك تحت القط ...
من يعترف آخر
قبل عام درست هذا السوق واتضح أنه لا يوجد الكثير من الخدمات والبرامج التي يمكن أن تعمل مع أرقام دول exUSSR. فيما يلي قائمة بالشركات التي عملنا معها:
- هناك نسخة مفتوحة المصدر والتجارية. أظهر إصدار OpenSource معدل التعرف منخفضًا للغاية ، بالإضافة إلى أنه يتطلب تبعيات محددة للتجميع والتشغيل (لم نكن نحبها بشكل خاص). النسخة التجارية ، أو بالأحرى ، الخدمة التجارية تعمل بشكل جيد. قادرة على العمل مع الأرقام الروسية والأوكرانية. الأسعار معتدلة - 49 دولارًا / 50 ألفًا شهريًا. التجريبي عبر الإنترنت من OpenALPR
- لقد تم استخدام هذه الخدمة لمدة عام تقريبا. نوعية جيدة. يجد المنطقة مع الرقم جيدا. لا تعرف الخدمة كيفية العمل مع الأرقام الأوكرانية والأوروبية. تجدر الإشارة إلى العمل الجيد مع صور منخفضة الجودة (في الثلج ، صورة ذات دقة منخفضة ، ...). سعر الخدمة مقبول أيضًا ، لكنهم يترددون في تناول كميات صغيرة.
هناك العديد من الأنظمة التجارية التي تحتوي على برامج مغلقة ، لكننا لم نعثر على تطبيق مفتوح المصدر جيد. في الواقع ، هذا غريب للغاية ، لأن أدوات المصدر المفتوح التي تقوم عليها حل هذه المشكلة موجودة منذ فترة طويلة.
ما هي الأدوات اللازمة للتعرف على الأرقام
العثور على كائنات في صورة أو في دفق فيديو مهمة من مجال رؤية الكمبيوتر ، والتي يتم حلها بطرق مختلفة ، ولكن في معظم الأحيان بمساعدة ما يسمى الشبكات العصبية التلافيفية. لا نحتاج إلى العثور فقط على المساحة الموجودة في الصورة التي يوجد بها الكائن المرغوب فيه ، ولكن أيضًا لفصل جميع نقاطه عن الكائنات الأخرى أو الخلفية. يسمى هذا النوع من المهام "تقسيم مثيل". يوضح الشكل التوضيحي أدناه أنواعًا مختلفة من مهام رؤية الكمبيوتر.

لن أكتب الكثير من النظرية حول كيفية عمل شبكة الالتواء ، فهذه المعلومات كافية على الشبكة وتقارير على يوتيوب.
غالباً ما يستخدمون
U-Net أو
Mask R-CNN من البنى الحديثة للصفائف التلافيفية للقيام بمهام التجزئة. اخترنا قناع R-CNN.
الأداة الثانية التي نحتاجها هي مكتبة التعرف على النص التي يمكن أن تعمل مع لغات مختلفة والتي يمكن تخصيصها بسهولة لخصائص النصوص التي سوف نتعرف عليها. هنا ليس الخيار رائعًا ، والأكثر تقدمًا هو
tesseract من Google.
هناك أيضًا عدد من الأدوات "العالمية" الأقل التي سنحتاج إليها لتطبيع المنطقة باستخدام لوحة الترخيص (قم بإحضارها بطريقة تجعل التعرف على النص ممكنًا). عادةً ما يتم استخدام opencv لمثل هذه التحويلات.
أيضًا ، سيكون من الممكن محاولة تحديد البلد والنوع الذي ينتمي إليه رقم لوحة الترخيص ، بحيث نطبق في مرحلة ما بعد المعالجة قالب تحسين خاص بهذا البلد وهذا النوع من الأرقام. على سبيل المثال ، تتكون لوحة الترخيص الأوكرانية ، بدءًا من عام 2015 ، المزينة باللونين الأزرق والأصفر ، من قالب "حرفين يتكونان من أربعة أرقام بحرفين".

بالإضافة إلى ذلك ، بوجود إحصائيات حول عدد مرات "الاجتماع" في لوحات الترخيص لمجموعة معينة من الحروف أو الأرقام ، يمكنك تحسين جودة المعالجة اللاحقة في المواقف "المثيرة للجدل". "
Nomeroff صافي
من عنوان المقال ، من الواضح أننا جميعًا قمنا بتنفيذ مشروع
Nomeroff Net وتسمية هذا المشروع. الآن جزء من رمز هذا المشروع يعمل بالفعل في الإنتاج على
AUTO.RIA.com . بالطبع ، لا يزال بعيدًا عن نظائره التجارية ؛ كل شيء يعمل بشكل جيد فقط للأرقام الأوكرانية. بالإضافة إلى ذلك ، يتم تحقيق سرعة مقبولة فقط بدعم من وحدة معالجة الرسومات GPU tensorflow! بدون GPU ، يمكنك أيضًا تجربة ، ولكن ليس على Raspberry Pi :).
جميع المواد الخاصة بمشروعنا: مجموعات البيانات التي تم ترميزها والنماذج المدربة ، تم نشرها بشكل عام بإذن من RIA.com بموجب ترخيص Creative Commons CC BY 4.0
ماذا نحتاج
أنا و Dmitry يعملان جميعًا على Fedora 28 ، أنا متأكد من أنه يمكن تثبيته جميعًا على أي توزيع Linux آخر. لا أريد تحويل هذا المنشور إلى إرشادات لتثبيت tensorflow وتكوينه ، إذا كنت تريد المحاولة ولم ينجح شيء ما - اسأل في التعليقات ، وسأجيبك وأخبرك بذلك.
لتسريع عملية التثبيت ، نخطط لإنشاء dockerfile - نتوقع في التحديثات القادمة للمشروع.
نوميروف نت "Hello world"
دعونا نحاول التعرف على شيء ما. نحن نستنسخ
مستودعًا برمز من
جيثب . نزّل إلى مجلد النماذج ،
النماذج المدربة للبحث عن الأرقام وتصنيفها ، وسنقوم بضبط المتغيرات قليلاً مع موقع المجلدات لأنفسنا.
UPD: تم إهمال هذا الرمز ، وسوف يعمل فقط
في فرع 0.1.0 ،
راجع أحدث الأمثلة هنا :
كل شيء يمكن التعرف عليه:
import os import sys import json import matplotlib.image as mpimg
التجريبي عبر الإنترنت
لقد قاموا برسم
عرض توضيحي بسيط لأولئك الذين لا يريدون تثبيت وتشغيل كل هذا :). كن متساهلاً وصبورًا مع سرعة البرنامج النصي.
إذا كنت بحاجة إلى أمثلة للأرقام الأوكرانية (للتحقق من تشغيل خوارزميات التصحيح) ، فاخذ مثالاً
من هذا المجلد.ما التالي
أنا أفهم أن الموضوع مناسب جدًا ومن غير المرجح أن يسبب اهتمامًا كبيرًا بين مجموعة واسعة من المبرمجين ، بالإضافة إلى أن الكود والنماذج لا تزال "خام" تمامًا من حيث جودة الاعتراف والسرعة واستهلاك الذاكرة ، وما إلى ذلك ، لكن ما زال هناك أمل في أن يكون هناك عشاق من سيكون مهتمًا بنماذج التدريب لاحتياجاتهم ، وبلدهم ، والذين سيساعدونك ويخبرك أين توجد مشاكل ، ومعنا ، لن يجعل المشروع أسوأ من نظرائه التجاريين.
المشكلات المعروفة
- المشروع لا يوجد لديه وثائق ، فقط أمثلة التعليمات البرمجية الأساسية.
- كوحدة التعرف ، يتم تحديد أداة التعرف الضوئي على الحروف (OCR) الشاملة ويمكن أن تقرأ كثيرًا ، لكنها تحدث الكثير من الأخطاء. في حالة الاعتراف بالأرقام الأوكرانية ، يتم كتابة نظام تصحيح متخصص هناك ، والذي يعوض حتى الآن عن بعض الأخطاء ، ولكن هناك حدس يمكن فعل الكثير هنا.
- إن الأرقام "المربعة" (لوحات الترخيص بنسبة 1: 2) نادرة جدًا وقد بدأنا للتو في التعامل معها ، لذلك سيكون هناك خطأ أكبر فيها.
- في بعض الأحيان ، بدلاً من لوحة الترخيص ، يعثر طرازنا على علامات طريق تحمل اسم القرية ولوحة القيادة داخل المقصورة وغيرها من القطع الأثرية.
- مع جودة رديئة العدد أو دقة منخفضة ، لم يتم تحديد منطقة من 4 نقاط بالكامل
إعلان
إذا كان ذلك مثيرًا للاهتمام لشخص ما ، فسنتحدث في الجزء الثاني عن كيفية وكيفية ترميز مجموعة البيانات الخاصة بك وكيفية تدريب نماذجك التي يمكن أن تعمل بشكل أفضل مع المحتوى الخاص بك (بلدك ، حجم صورتك). سنتحدث أيضًا عن كيفية إنشاء المصنف الخاص بك ، والذي سيساعد ، على سبيل المثال ، في تحديد ما إذا كان الرقم مرسومًا على الصورة أم لا.
بعض الأمثلة في Jupyter Notebook:
روابط مفيدة