ANPR باستخدام RoR & React Native

داني كراستيف ، ميرابوس عمروف ، إيكاترينا مينشينينا ، جامعة ITMO ، نظم المعلومات والاتصالات ، علوم الحاسوب. 2019

صورة

ملخص


نظرًا للزيادة التي لا تنتهي في حجم المركبات المحيطة بحياتنا اليومية ، أصبح Automatic Number Plate Recognition (ANPR) ، حلاً متطورًا لإدارة ومراقبة المركبات في جميع أنحاء العالم لفرض القواعد ومنع الأنشطة الإجرامية ، مثل انتهاك مواقف السيارات ، الضوء الأحمر الانتهاك والسرعة وسرقة السيارة. على الرغم من أن هناك بالفعل مجموعة متنوعة من الأساليب والمكتبات العامة والخاصة التي تم تطويرها وتستخدم لتحقيق التعرف التلقائي على أرقام لوحات السيارات في جميع أنحاء العالم ، لم يكن هناك تركيز كبير على إحراز تقدم نحو حل ANPR عبر الأنظمة التي يدعم جميع لوحات ترخيص المركبات في جميع أنحاء العالم. تقدم هذه الورقة مشروع Plate Vision ، وهو تطبيق على الويب والهاتف المحمول مبني على Ruby on Rails و React Native ، والذي يهدف إلى أن يكون بمثابة منصة ANPR بديلة تدعم الكشف عن جميع لوحات الترخيص في جميع أنحاء العالم من خلال استخدام التعرف الضوئي على الحروف المفتوحة المصدر (OCR) المكتبات وجعل تحسين الكفاءة.

الكلمات والعبارات الأساسية: روبي ، القضبان ، رد الفعل الأصلي ، التعرف على لوحة الترخيص ، استخراج منطقة اللوحة ، التعرف الضوئي على الأحرف (OCR) ، ANPR.

1. مقدمة


نظرًا لأن الوظيفة والأداء الأساسيين لـ "التعرف على لوحة الأرقام التلقائية" (ANPR) يعتمدان على سنوات من البحث تستخدم مجموعات مميزة من تقنيات التعرف الضوئي على الأحرف (OCR) على الصور من أجل العثور على لوحات الترخيص على المركبات وقراءتها ، ومجموعة متنوعة من الحلول الموجودة بالفعل ، ليست هناك حاجة للذهاب إلى التطوير والتدريب الخارجيين اللازمين لإعادة إنشاء وظيفة OCR نفسها بالكامل ، وبالتالي فإن الهدف من هذه الورقة هو تقديم مثال عن كيفية الجمع بين وتحسين حلول OCR و ANPR الحالية في من أجل تطوير Plate Vision ، منصة ANPR فريدة من نوعها يمكنها العمل على أي جهاز باستخدام أي كاميرا أو مركبة أو موقع.

العائدات المتبقية من الورقة كما يلي. يقدم القسم 2 بعض الحلول والتبعيات الحالية. يصف القسم 3 خلفية القضبان ، الواجهة الأمامية والتكامل الأصلي React. يوضح القسم 4 تحسين ANPR واختباره وكذلك كيفية بناء اللوحة Vision واستضافتها وصيانتها عبر الإنترنت ، بينما يختتم القسم 5 الورقة.

2. تبعيات التعرف الضوئي على الحروف


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

من بين كل الحلول المتنوعة الموجودة حاليًا ، يعد OpenALPR هو الحل الوحيد المفتوح المصدر ويوفر القدرة على تعديل خوارزميات الكشف عن ANPR والتحكم فيها لدول معينة ، وهذا هو السبب في أنه تم اختياره لاستخدامه في Plate Vision.

لدى OpenALPR أيضًا 2 من التبعيات الأساسية ، OpenCV و Tesseract OCR ، والتي تعمل كأساس لأداء ANPR. من الأفضل الحفاظ على مقدار التبعيات التي يحتاجها النظام الأساسي إلى الحد الأدنى للحصول على أفضل أداء ، ولكن مع أي مشروع يدمج التعرف البصري على الحروف (OCR) المخصص ، لا بد أن يكون هناك تبعيات كبيرة متعددة [1].

3. منصة


صُممت منصة Plate Vision باستخدام أطر Ruby on Rails و React Native ، وبالتالي فهي تتألف من تطبيقين فرديين ، تطبيق React Native للهاتف المحمول ، وتطبيق Rails الذي يعمل بمثابة الموقع الإلكتروني الرئيسي والخلفية للتطبيق.

Rails عبارة عن وحدة تحكم لعرض النماذج (MVC) وإطار عمل لتطبيق الويب من جانب الخادم مكتوب بلغة Ruby ، ​​والذي يوفر هياكل افتراضية لقاعدة بيانات وخدمة ويب وصفحات الويب. إنه يشجع ويسهل استخدام معايير الويب مثل JSON أو XML لنقل البيانات ، و HTML و CSS و JavaScript لواجهة العرض والمستخدم [2].

React Native عبارة عن إطار تطبيق مفتوح المصدر تم إنشاؤه بواسطة Facebook والذي يتيح كتابة تعليمات JavaScript البرمجية التي يمكن تحويلها وتفسيرها إلى رمز أصلي ، مما يتيح سهولة تجميع تطبيقات العمل عبر الأنظمة الأساسية لنظام Android و iOS و UWP باستخدام لغة واحدة [ 3].

OpenALPR هي مكتبة التعرف التلقائي على لوحات الترخيص مفتوحة المصدر مكتوبة بلغة C ++ مع روابط في C # و Java و Node.js و Python. تحلل المكتبة الصور ومقاطع الفيديو للتعرف على لوحات الترخيص. الإخراج هو تمثيل نص لأي أحرف لوحة ترخيص [1].

3.1 الخلفية


يتكون الجزء الخلفي من النظام الأساسي من العديد من الأحجار الكريمة (المكتبات) وأجهزة التحكم في القضبان التي تتعامل مع الطلبات الواردة من موقع الويب وتطبيقات الهاتف المحمول على التوالي.

القوائم التالية وتصف الأحجار الكريمة المستخدمة في الواجهة الخلفية:

  • ALPR - يستخدم لاستدعاء أوامر openALPR
  • Devise - هو حل مصادقة مرن لـ Rails يعتمد على Warden
  • Devise toch auth - مصادقة رمزية بسيطة ومتعددة العملاء وآمنة تستند إلى Rails.
  • Rmagick - واجهة بين لغة برمجة Ruby ومكتبة ImageMagick لمعالجة الصور
  • Rolify - مكتبة الأدوار البسيطة دون أي نطاق لدعم تطبيق التفويض على كائن المورد.

القوائم التالية وتصف وحدات تحكم تطبيق الموقع:

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

يسرد ويصف وحدات تحكم التطبيق التي تعمل كواجهة برمجة تطبيقات JSON مريحة وتتعامل مع طلبات React Native Mobile Application:

  • Alpr controller - يحتوي على طرق لتحليل الصورة من أجل العثور على رقم لوحة الترخيص.
  • جهاز التحكم في الأجهزة - يحتوي على طرق لحفظ معلومات الجهاز الخاصة بالمستخدم في قاعدة البيانات.
  • التحكم في المواقع - يحفظ بيانات موقع جهاز المستخدم في قاعدة البيانات.
  • تحكم المستخدمين - يعالج ترخيص المستخدم / المصادقة.
  • وحدة التحكم في المركبات - تقوم بمعالجة طرق الكائن (إنشاء وتحرير وحذف) كائن وحفظ بيانات السيارة في قاعدة البيانات.

3.2 Frontend (موقع)


تم تطوير الواجهة الأمامية للمنصة باستخدام عدد قليل من الأحجار الكريمة وكذلك Bootstrap و jQuery و JavaScript المخصص عند الضرورة.

Bootstrap هو إطار أمامي مجاني ومفتوح المصدر لتصميم مواقع الويب وتطبيقات الويب. يحتوي على قوالب تصميم مستندة إلى HTML و CSS للطباعة والنماذج والأزرار والملاحة ومكونات الواجهة الأخرى ، وكذلك ملحقات JavaScript الاختيارية. [4]
jQuery عبارة عن مكتبة JavaScript مجانية ومفتوحة المصدر ومفتوحة المصدر مصممة لتبسيط البرمجة النصية من جانب HTML لـ HTML. [5]

القوائم التالية وتصف الأحجار الكريمة المستخدمة في الواجهة الأمامية:

  • نموذج بسيط - يحسن من الاستخدام الحالي لنماذج القضبان القياسية [6]
  • التنقل البسيط - يساعد في إنشاء تنقلات ديناميكية بسهولة [7]
  • Rails Admin - يوفر واجهة مسؤول ديناميكية للتطبيق [8]

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

3.3 رد فعل التطبيق الأصلي (المحمول)


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

لقد جاءت الأطر عبر الأنظمة الأساسية التي تسد هذه الفجوة وتختفي ، وذلك بعدم النجاح في إنشاء تطبيقات لها نفس المعايير المرئية أو الوظيفية التي توفرها الأطر الأصلية. ومع ذلك ، تعد React Native بتقديم تجربة أصلية بالكامل باستخدام قاعدة رمز واحدة فقط. [10]. React الأصلي يتطلب ويعمل على منصة NodeJS. Node.js هي بيئة وقت تشغيل جافا سكريبت مفتوحة المصدر وعبر النظام الأساسي تنفذ جانب خادم كود JavaScript. [11]

من أجل فهم تطبيق React Native ، من الضروري معرفة بعض مفاهيم React الأساسية ، مثل JSX والدولة والدعائم والمكونات. JSX - هو امتداد لغوي يشبه XML إلى ECMAScript دون أي دلالات محددة. المكونات - هي لبنات بناء أي تطبيق React أصلي وسيحتوي تطبيق React الأصلي النموذجي على العديد من هذه العناصر. ببساطة ، المكون هو فئة JavaScript أو وظيفة تقبل اختياريًا المدخلات ، أي الخصائص (الدعائم) وترجع عنصر React الذي يصف كيف يجب أن يظهر قسم من واجهة المستخدم (واجهة المستخدم).

هناك نوعان من البيانات التي تتحكم في مكون:

  1. الدعائم: قابلة للتغيير ويتم تثبيتها من قبل الوالد ويتم إصلاحها طوال عمر المكون.
  2. الدولة: غير قابلة للتغيير. هذا يعني أنه يمكن تحديث الحالة في المستقبل بينما الدعائم لا تستطيع ذلك. يمكن تهيئة الحالة في المنشئ ، ثم يتم استدعاؤها بواسطة setState عندما تحتاج إلى تغيير.

بشكل افتراضي ، يوفر React الأصلي عددًا من المكونات المدمجة ، والتي يمكن استخدامها في أغراض مختلفة. علاوة على ذلك ، لا يقتصر المطورين على المكونات وواجهات برمجة التطبيقات (APIs) المزودة بـ React Native لأن هناك الكثير من الحزم (المكتبات) التي أنشأها العديد من المطورين الآخرين لتسريع عملية التطوير للآخرين.

القوائم التالية وتصف الحزم المستخدمة مع nodeJS لتطوير تطبيق React Native:

  • React - مكتبة JavaScript مفعلة وفعالة ومرنة لبناء واجهات المستخدم. [12]
  • React Native - إطار لإنشاء تطبيقات أصلية باستخدام React. [13]
  • Expo - مجموعة من الأدوات والمكتبات والخدمات التي تتيح إنشاء تطبيقات iOS و Android الأصلية عن طريق كتابة JavaScript. [14]
  • Redux - حاوية حالة يمكن التنبؤ بها لتطبيقات JavaScript. [15]
  • Axios - عميل HTTP يستند إلى وعد للمستعرض و node.js [16]
  • Native Base - مكونات واجهة المستخدم الأساسية عبر النظام الأساسي لـ React Native [17]
  • React Native Navigation - يوفر التنقل الأساسي للنظام الأساسي على كل من iOS و Android للتطبيقات React Native [18]
  • React Form Builder - مكتبة مولد نموذج بسيط للرد. [19]
  • Il8next - إطار التدويل للمتصفح أو أي بيئة جافا سكريبت أخرى (على سبيل المثال. Node.js) [20]

فيما يلي قائمة بصفحات التطبيق ووصفها:

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

4. اختبار واستضافة


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

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

صورة

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

تتم استضافة النظام الأساسي بأكمله باستخدام الخدمات السحابية في Heroku ويتم تحديثه وصيانته من خلال نظام التحكم في إصدار git. ومع ذلك ، من المهم الإشارة إلى أن إعداد تبعيات محددة مثل OpenAlpr للعمل على بيئة خادم سحابة مثل Heroku كان صعباً بسبب القيود والتحديات التي تطرحها بيئة خادم السحابة في Heroku. لذلك ، تم استخدام خدمات Docker أيضًا مع Heroku للتغلب على صعوبات إنشاء وضمان أن السحابة OpenAlpr وجميع تبعياتها تعمل كما هي في بيئة التطوير المحلية [1].

5. الخاتمة


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

مراجع


مراجع
1. OpenALPR الوثائق - http://doc.openalpr.com/
2. وثائق روبي أون ريلز - https://guides.rubyonrails.org/
3. رد على الوثائق الأصلية - https://facebook.imtqy.com/react-native/docs/getting-started.html
4. وثائق Bootstrap - https://getbootstrap.com/
5. مسج الوثائق - https://jquery.com/
6. وثائق النموذج البسيط - https://github.com/plataformatec/simple_form
7. وثائق التنقل البسيطة - https://github.com/codeplant/simple-navigation
8. وثائق إدارة القضبان - https://github.com/sferik/rails_admin
9. أكسلسون أوسكار ، كارلستروم فريدريك [تقييم استهداف رد الفعل الأصلي مقارنةً بتطوير الهاتف المحمول المحلي] - https://lup.lub.lu.se/student-papers/search/publication/8886469
10. Hansson Niclas ، Vidhall Tomas [التأثيرات على الأداء وسهولة الاستخدام لتطوير التطبيقات عبر الأنظمة الأساسية باستخدام React Native] - http://www.diva-portal.org/smash/record.jsf؟pid=diva2٪3A946127&dswid=8626
11. NodeJS - https://nodejs.org
12. ReactJS - https://reactjs.org/
13. رد فعل الأصلية - https://facebook.imtqy.com/react-native/
14. المعرض - https://expo.io/
15. استرجاع - http://redux.js.org/
16. أكسيوس - https://github.com/axios/axios
17. القاعدة الأصلية - https://nativebase.io/
18. رد فعل الملاحة المحلية - https://wix.imtqy.com/react-native-navigation
19. منشئ نموذج رد الفعل - https://github.com/bietkul/react-native-form-builder
20. Il8next - https://www.i18next.com/

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


All Articles